Page MenuHomeFreeBSD

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/documentation/content/en/articles/committers-guide/_index.po b/documentation/content/en/articles/committers-guide/_index.po
index 9938c1f80a..cd4083faf1 100644
--- a/documentation/content/en/articles/committers-guide/_index.po
+++ b/documentation/content/en/articles/committers-guide/_index.po
@@ -1,9346 +1,9358 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:07-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/articles/committers-guide/_index.adoc:1
#, no-wrap
msgid "Introductory information for FreeBSD committers"
msgstr ""
#. type: Title =
#: documentation/content/en/articles/committers-guide/_index.adoc:1
#: documentation/content/en/articles/committers-guide/_index.adoc:12
#, no-wrap
msgid "Committer's Guide"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:45
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:48
msgid ""
"This document provides information for the FreeBSD committer community. All "
"new committers should read this document before they start, and existing "
"committers are strongly encouraged to review it from time to time."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:53
msgid ""
"Almost all FreeBSD developers have commit rights to one or more "
"repositories. However, a few developers do not, and some of the information "
"here applies to them as well. (For instance, some people only have rights "
-"to work with the Problem Report database). Please see <<non-committers>> "
+"to work with the Problem Report database.) Please see <<non-committers>> "
"for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:55
msgid ""
"This document may also be of interest to members of the FreeBSD community "
"who want to learn more about how the project works."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:57
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:61
#, no-wrap
msgid "Administrative Details"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:68
#, no-wrap
msgid "_Login Methods_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:70
#, no-wrap
msgid "man:ssh[1], protocol 2 only"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:71
#, no-wrap
msgid "_Main Shell Host_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:73
#, no-wrap
msgid "`freefall.FreeBSD.org`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:74
#, no-wrap
msgid "_Reference Machines_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:76
#, no-wrap
msgid "`ref*.FreeBSD.org`, `universe*.freeBSD.org` (see also link:https://www.FreeBSD.org/internal/machines/[FreeBSD Project Hosts])"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:77
#, no-wrap
msgid "_SMTP Host_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:79
#, no-wrap
msgid "`smtp.FreeBSD.org:587` (see also <<smtp-setup>>)."
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:80
#, no-wrap
msgid "`_src/_` Git Repository"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:82
#, no-wrap
-msgid "`ssh://git@gitrepo.FreeBSD.org/src.git` (see also <<git-getting-started-base-layout>>)."
+msgid "`ssh://git@gitrepo.FreeBSD.org/src.git`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:83
#, no-wrap
msgid "`_doc/_` Git Repository"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:85
#, no-wrap
-msgid "`ssh://git@gitrepo.FreeBSD.org/doc.git` (see also <<git-getting-started-doc-layout>>)."
+msgid "`ssh://git@gitrepo.FreeBSD.org/doc.git`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:86
#, no-wrap
msgid "`_ports/_` Git Repository"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:88
#, no-wrap
-msgid "`ssh://git@gitrepo.FreeBSD.org/ports.git` (see also <<git-getting-started-ports-layout>>)."
+msgid "`ssh://git@gitrepo.FreeBSD.org/ports.git`"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:89
#, no-wrap
msgid "_Internal Mailing Lists_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:91
#, no-wrap
-msgid "developers (technically called all-developers), doc-developers, doc-committers, ports-developers, ports-committers, src-developers, src-committers. (Each project repository has its own -developers and -committers mailing lists. Archives for these lists can be found in the files [.filename]#/local/mail/repository-name-developers-archive# and [.filename]#/local/mail/repository-name-committers-archive# on the `FreeBSD.org` cluster.)"
+msgid "developers (technically called all-developers), doc-developers, doc-committers, ports-developers, ports-committers, src-developers, src-committers. (Each project repository has its own -developers and -committers mailing lists. Archives for these lists can be found in the files [.filename]#/local/mail/repository-name-developers-archive# and [.filename]#/local/mail/repository-name-committers-archive# on `freefall.FreeBSD.org`.)"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:92
#, no-wrap
msgid "_Core Team monthly reports_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:94
#, no-wrap
-msgid "[.filename]#/home/core/public/monthly-reports# on the `FreeBSD.org` cluster."
+msgid "[.filename]#/home/core/public/reports# on the `FreeBSD.org` cluster."
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:95
#, no-wrap
msgid "_Ports Management Team monthly reports_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:97
#, no-wrap
msgid "[.filename]#/home/portmgr/public/monthly-reports# on the `FreeBSD.org` cluster."
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:98
#, no-wrap
msgid "_Noteworthy `src/` Git Branches:_"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:99
#, no-wrap
msgid "`stable/n` (`n`-STABLE), `main` (-CURRENT)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:102
msgid ""
"man:ssh[1] is required to connect to the project hosts. For more "
"information, see <<ssh.guide>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:104
msgid "Useful links:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:106
msgid "link:https://www.FreeBSD.org/internal/[FreeBSD Project Internal Pages]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:107
msgid "link:https://www.FreeBSD.org/internal/machines/[FreeBSD Project Hosts]"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:108
msgid ""
"link:https://www.FreeBSD.org/administration/[FreeBSD Project Administrative "
"Groups]"
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:110
#, no-wrap
msgid "OpenPGP Keys for FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:115
msgid ""
"Cryptographic keys conforming to the OpenPGP (__Pretty Good Privacy__) "
"standard are used by the FreeBSD project to authenticate committers. "
"Messages carrying important information like public SSH keys can be signed "
"with the OpenPGP key to prove that they are really from the committer. See "
"https://nostarch.com/releases/pgp_release.pdf[PGP & GPG: Email for the "
"Practical Paranoid by Michael Lucas] and http://en.wikipedia.org/wiki/"
"Pretty_Good_Privacy[] for more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:117
#, no-wrap
msgid "Creating a Key"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:121
msgid ""
"Existing keys can be used, but should be checked with [."
"filename]#documentation/tools/checkkey.sh# first. In this case, make sure "
"the key has a FreeBSD user ID."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:123
msgid ""
"For those who do not yet have an OpenPGP key, or need a new key to meet "
"FreeBSD security requirements, here we show how to generate one."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:128
msgid ""
"Install [.filename]#security/gnupg#. Enter these lines in [.filename]#~/."
"gnupg/gpg.conf# to set minimum acceptable defaults:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:139
#, no-wrap
msgid ""
"fixed-list-mode\n"
"keyid-format 0xlong\n"
"personal-digest-preferences SHA512 SHA384 SHA256 SHA224\n"
"default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed\n"
"verify-options show-uid-validity\n"
"list-options show-uid-validity\n"
"sig-notation issuer-fpr@notations.openpgp.fifthhorseman.net=%g\n"
"cert-digest-algo SHA512\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:141
msgid "Generate a key:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:148
#, no-wrap
msgid ""
"% gpg --full-gen-key\n"
"gpg (GnuPG) 2.1.8; Copyright (C) 2015 Free Software Foundation, Inc.\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:169
#, no-wrap
msgid ""
"Warning: using insecure memory!\n"
"Please select what kind of key you want:\n"
" (1) RSA and RSA (default)\n"
" (2) DSA and Elgamal\n"
" (3) DSA (sign only)\n"
" (4) RSA (sign only)\n"
"Your selection? 1\n"
"RSA keys may be between 1024 and 4096 bits long.\n"
"What keysize do you want? (2048) 2048 <.>\n"
"Requested keysize is 2048 bits\n"
"Please specify how long the key should be valid.\n"
"\t 0 = key does not expire\n"
" <n> = key expires in n days\n"
" <n>w = key expires in n weeks\n"
" <n>m = key expires in n months\n"
" <n>y = key expires in n years\n"
"Key is valid for? (0) 3y <.>\n"
"Key expires at Wed Nov 4 17:20:20 2015 MST\n"
"Is this correct? (y/N) y\n"
"GnuPG needs to construct a user ID to identify your key.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:175
#, no-wrap
msgid ""
"Real name: Chucky Daemon <.>\n"
"Email address: notreal@example.com\n"
"Comment:\n"
"You selected this USER-ID:\n"
"\"Chucky Daemon <notreal@example.com>\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:178
#, no-wrap
msgid ""
"Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o\n"
"You need a Passphrase to protect your secret key.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:181
msgid ""
"2048-bit keys with a three-year expiration provide adequate protection at "
-"present (2013-12). http://danielpocock.com/rsa-key-sizes-2048-or-4096-bits[] "
-"describes the situation in more detail."
+"present (2022-10)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:183
msgid ""
"A three year key lifespan is short enough to obsolete keys weakened by "
"advancing computer power, but long enough to reduce key management problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:185
msgid ""
"Use your real name here, preferably matching that shown on government-issued "
"ID to make it easier for others to verify your identity. Text that may help "
"others identify you can be entered in the `Comment` section."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:189
msgid ""
"After the email address is entered, a passphrase is requested. Methods of "
"creating a secure passphrase are contentious. Rather than suggest a single "
-"way, here are some links to sites that describe various methods: http://"
-"world.std.com/~reinhold/diceware.html[], http://www.iusmentis.com/security/"
-"passphrasefaq/[], http://xkcd.com/936/[], http://en.wikipedia.org/wiki/"
+"way, here are some links to sites that describe various methods: https://"
+"world.std.com/~reinhold/diceware.html[], https://www.iusmentis.com/security/"
+"passphrasefaq/[], https://xkcd.com/936/[], https://en.wikipedia.org/wiki/"
"Passphrase[]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:193
msgid ""
"Protect the private key and passphrase. If either the private key or "
"passphrase may have been compromised or disclosed, immediately notify mailto:"
"accounts@FreeBSD.org[accounts@FreeBSD.org] and revoke the key."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:195
msgid ""
"Committing the new key is shown in <<commit-steps, Steps for New "
"Committers>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:197
#, no-wrap
msgid "Kerberos and LDAP web Password for FreeBSD Cluster"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:202
msgid ""
"The FreeBSD cluster requires a Kerberos password to access certain "
"services. The Kerberos password also serves as the LDAP web password, since "
"LDAP is proxying to Kerberos in the cluster. Some of the services which "
"require this include:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:204
msgid "https://bugs.freebsd.org/bugzilla[Bugzilla]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:205
msgid "https://ci.freebsd.org[Jenkins]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:207
msgid ""
"To create a new Kerberos account in the FreeBSD cluster, or to reset a "
"Kerberos password for an existing account using a random password generator:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:211
#, no-wrap
msgid "% ssh kpasswd.freebsd.org\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:216
msgid "This must be done from a machine outside of the FreeBSD.org cluster."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:219
msgid ""
"A Kerberos password can also be set manually by logging into `freefall."
"FreeBSD.org` and running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:223
#, no-wrap
msgid "% kpasswd\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:229
msgid ""
"Unless the Kerberos-authenticated services of the FreeBSD.org cluster have "
"been used previously, `Client unknown` will be shown. This error means that "
"the `ssh kpasswd.freebsd.org` method shown above must be used first to "
"initialize the Kerberos account."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:232
#, no-wrap
msgid "Commit Bit Types"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:238
msgid ""
"The FreeBSD repository has a number of components which, when combined, "
"support the basic operating system source, documentation, third party "
"application ports infrastructure, and various maintained utilities. When "
"FreeBSD commit bits are allocated, the areas of the tree where the bit may "
"be used are specified. Generally, the areas associated with a bit reflect "
"who authorized the allocation of the commit bit. Additional areas of "
"authority may be added at a later date: when this occurs, the committer "
"should follow normal commit bit allocation procedures for that area of the "
"tree, seeking approval from the appropriate entity and possibly getting a "
"mentor for that area for some period of time."
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:244
#, no-wrap
msgid "__Committer Type__"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:245
#, no-wrap
msgid "__Responsible__"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:247
#, no-wrap
msgid "__Tree Components__"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:248
#, no-wrap
msgid "src"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:249
#, no-wrap
msgid "core@"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:251
#, no-wrap
msgid "src/"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:252
#, no-wrap
msgid "doc"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:253
#, no-wrap
msgid "doceng@"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:255
#, no-wrap
msgid "doc/, ports/, src/ documentation"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:256
#, no-wrap
msgid "ports"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:257
#, no-wrap
msgid "portmgr@"
msgstr ""
#. type: Table
#: documentation/content/en/articles/committers-guide/_index.adoc:258
#, no-wrap
msgid "ports/"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:263
msgid ""
"Commit bits allocated prior to the development of the notion of areas of "
"authority may be appropriate for use in many parts of the tree. However, "
"common sense dictates that a committer who has not previously worked in an "
"area of the tree seek review prior to committing, seek approval from the "
"appropriate responsible party, and/or work with a mentor. Since the rules "
"regarding code maintenance differ by area of the tree, this is as much for "
"the benefit of the committer working in an area of less familiarity as it is "
"for others working on the tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:265
msgid ""
"Committers are encouraged to seek review for their work as part of the "
"normal development process, regardless of the area of the tree where the "
"work is occurring."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:266
#, no-wrap
msgid "Policy for Committer Activity in Other Trees"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:269
msgid ""
"All committers may modify [.filename]#src/share/misc/committers-*.dot#, [."
"filename]#src/usr.bin/calendar/calendars/calendar.freebsd#, and [."
"filename]#ports/astro/xearth/files#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:270
msgid ""
"doc committers may commit documentation changes to [.filename]#src# files, "
-"such as man pages, READMEs, fortune databases, calendar files, and comment "
-"fixes without approval from a src committer, subject to the normal care and "
-"tending of commits."
+"such as manual pages, READMEs, fortune databases, calendar files, and "
+"comment fixes without approval from a src committer, subject to the normal "
+"care and tending of commits."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:272
msgid ""
"Any committer may make changes to any other tree with an \"Approved by\" "
"from a non-mentored committer with the appropriate bit. Mentored committers "
"can provide a \"Reviewed by\" but not an \"Approved by\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:273
msgid ""
"Committers can acquire an additional bit by the usual process of finding a "
"mentor who will propose them to core, doceng, or portmgr, as appropriate. "
"When approved, they will be added to 'access' and the normal mentoring "
"period will ensue, which will involve a continuing of \"Approved by\" for "
"some period."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:275
#, no-wrap
msgid "Documentation Implicit (Blanket) Approval"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:279
msgid ""
"Some types of fixes have \"blanket approval\" from the {doceng}, allowing "
"any committer to fix those categories of problems on any part of the doc "
"tree. These fixes do not need approval or review from a doc committer if "
"the author doesn't have a doc commit bit."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:281
msgid "Blanket approval applies to these types of fixes:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:283
msgid "Typos"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:284
msgid "Trivial fixes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:286
msgid ""
"Punctuation, URLs, dates, paths and file names with outdated or incorrect "
"information, and other common mistakes that may confound the readers."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:289
msgid ""
"Over the years, some implicit approvals were granted in the doc tree. This "
"list shows the most common cases:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:291
msgid ""
"Changes in [.filename]#documentation/content/en/books/porters-handbook/"
"versions/_index.adoc#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:293
msgid ""
"extref:{porters-handbook}versions/[__FreeBSD_version Values (Porter's "
"Handbook)], mainly used for src committers."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:294
msgid "Changes in [.filename]#doc/shared/contrib-additional.adoc#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:296
msgid ""
"extref:{contributors}[Additional FreeBSD Contributors, contrib-additional] "
"maintenance."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:297
msgid "All link:#commit-steps[Steps for New Committers], doc related"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:298
msgid "Security advisories; Errata Notices; Releases;"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:300
msgid "Used by {security-officer} and {re}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:301
msgid "Changes in [.filename]#website/content/en/donations/donors.adoc#"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:303
msgid "Used by {donations}."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:305
msgid ""
"Before any commit, a build test is necessary; see the 'Overview' and 'The "
"FreeBSD Documentation Build Process' sections of the extref:{fdp-primer}"
"[FreeBSD Documentation Project Primer for New Contributors] for more details."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:307
#, no-wrap
msgid "Git Primer"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:310
#, no-wrap
msgid "Git basics"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:317
msgid ""
"When one searches for \"Git Primer\" a number of good ones come up. Daniel "
"Miessler's link:https://danielmiessler.com/study/git/[A git primer] and "
"Willie Willus' link:https://gist.github.com/"
"williewillus/068e9a8543de3a7ef80adb2938657b6b[Git - Quick Primer] are both "
"good overviews. The Git book is also complete, but much longer https://git-"
"scm.com/book/en/v2. There is also this website https://dangitgit.com/ for "
"common traps and pitfalls of Git, in case you need guidance to fix things "
"up. Finally, an introduction link:https://eagain.net/articles/git-for-"
"computer-scientists/[targeted at computer scientists] has proven helpful to "
"some at explaining the Git world view."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:319
msgid ""
"This document will assume that you've read through it and will try not to "
"belabor the basics (though it will cover them briefly)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:321
#, no-wrap
msgid "Git Mini Primer"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:324
msgid ""
"This primer is less ambitiously scoped than the old Subversion Primer, but "
"should cover the basics."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:325
#, no-wrap
msgid "Scope"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:331
msgid ""
"If you want to download FreeBSD, compile it from sources, and generally keep "
"up to date that way, this primer is for you. It covers getting the sources, "
"updating the sources, bisecting and touches briefly on how to cope with a "
"few local changes. It covers the basics, and tries to give good pointers to "
"more in-depth treatment for when the reader finds the basics insufficient. "
"Other sections of this guide cover more advanced topics related to "
"contributing to the project."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:335
msgid ""
"The goal of this section is to highlight those bits of Git needed to track "
"sources. They assume a basic understanding of Git. There are many primers "
"for Git on the web, but the https://git-scm.com/book/en/v2[Git Book] "
"provides one of the better treatments."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:337
#, no-wrap
msgid "Getting Started For Developers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:340
msgid ""
"This section describes the read-write access for committers to push the "
"commits from developers or contributors."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:341
#, no-wrap
msgid "Daily use"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:344
msgid "Clone the repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:348
#, no-wrap
msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' https://git.freebsd.org/${repo}.git\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:351
msgid "Then you should have the official mirrors as your remote:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:357
#, no-wrap
msgid ""
"% git remote -v\n"
"freebsd https://git.freebsd.org/${repo}.git (fetch)\n"
"freebsd https://git.freebsd.org/${repo}.git (push)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:360
msgid "Configure the FreeBSD committer data:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:363
msgid ""
"The commit hook in repo.freebsd.org checks the \"Commit\" field matches the "
"committer's information in FreeBSD.org. The easiest way to get the "
"suggested config is by executing `/usr/local/bin/gen-gitconfig.sh` script on "
"freefall:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:370
#, no-wrap
msgid ""
"% gen-gitconfig.sh\n"
"[...]\n"
"% git config user.name (your name in gecos)\n"
"% git config user.email (your login)@FreeBSD.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:373
msgid "Set the push URL:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:377
#, no-wrap
msgid "% git remote set-url --push freebsd git@gitrepo.freebsd.org:${repo}.git\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:380
msgid ""
"Then you should have separated fetch and push URLs as the most efficient "
"setup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:386
#, no-wrap
msgid ""
"% git remote -v\n"
"freebsd https://git.freebsd.org/${repo}.git (fetch)\n"
"freebsd git@gitrepo.freebsd.org:${repo}.git (push)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:389
msgid ""
-"Again, note that `gitrepo.freebsd.org` will be canonicalized to `repo."
-"freebsd.org` in the future."
+"Again, note that `gitrepo.freebsd.org` has been canonicalized to `repo."
+"freebsd.org`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:391
msgid "Install commit message template hook:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:396
#, no-wrap
msgid ""
"% fetch https://cgit.freebsd.org/src/plain/tools/tools/git/hooks/prepare-commit-msg -o .git/hooks\n"
"% chmod 755 .git/hooks/prepare-commit-msg\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:399
#, no-wrap
msgid "\"admin\" branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:402
msgid ""
"The `access` and `mentors` files are stored in an orphan branch, `internal/"
"admin`, in each repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:404
msgid ""
"Following example is how to check out the `internal/admin` branch to a local "
"branch named `admin`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:410
#, no-wrap
msgid ""
"% git config --add remote.freebsd.fetch '+refs/internal/*:refs/internal/*'\n"
"% git fetch\n"
"% git checkout -b admin internal/admin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:412
msgid "Alternatively, you can add a worktree for the `admin` branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:416
#, no-wrap
msgid "git worktree add -b admin ../${repo}-admin internal/admin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:420
msgid ""
-"For browsing `internal/admin` branch on web: https://cgit.freebsd.org/"
-"${repo}/log/?h=internal/admin"
+"For browsing `internal/admin` branch on web: `https://cgit.freebsd.org/"
+"${repo}/log/?h=internal/admin`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:422
msgid "For pushing, either specify the full refspec:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:426
#, no-wrap
msgid "git push freebsd HEAD:refs/internal/admin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:429
msgid ""
"Or set `push.default` to `freebsd` which will make `git push` to push the "
"current branch back to its upstream by default, which is more suitable for "
"our workflow:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:433
#, no-wrap
msgid "git config push.default freebsd\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:435
#, no-wrap
msgid "Keeping Current With The FreeBSD src Tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:442
msgid ""
"First step: cloning a tree. This downloads the entire tree. There are two "
"ways to download. Most people will want to do a deep clone of the "
"repository. However, there are times when you may wish to do a shallow "
"clone."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:443
#, no-wrap
msgid "Branch names"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:450
msgid ""
"The branch names in the new Git repository are similar to the old names. "
"For the stable branches, they are stable/X where X is the major release "
"(like 11 or 12). The main branch in the new repository is 'main'. The main "
"branch in the old GitHub mirror was 'master', but is now 'main'. Both "
"reflect the defaults of Git at the time they were created. The 'main' "
"branch is the default branch if you omit the '-b branch' or '--branch "
"branch' options below."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:451
#, no-wrap
msgid "Repositories"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:454
msgid ""
"Please see the <<admin,Administrative Details>> for the latest information "
"on where to get FreeBSD sources. $URL below can be obtained from that page."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:457
msgid ""
"Note: The project doesn't use submodules as they are a poor fit for our "
"workflows and development model. How we track changes in third-party "
"applications is discussed elsewhere and generally of little concern to the "
"casual user."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:458
#, no-wrap
msgid "Deep Clone"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:462
msgid ""
"A deep clone pulls in the entire tree, as well as all the history and "
"branches. It is the easiest to do. It also allows you to use Git's "
"worktree feature to have all your active branches checked out into separate "
"directories but with only one copy of the repository."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:465
#, no-wrap
msgid "% git clone -o freebsd $URL -b branch [dir]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:470
msgid ""
"is how you make a deep clone. 'branch' should be one of the branches listed "
"in the previous section. It is optional if it is the main branch. 'dir' is "
"an optional directory to place it in (the default will be the name of the "
"repo you are cloning (src, doc, etc))."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:475
msgid ""
"You will want a deep clone if you are interested in the history, plan on "
"making local changes, or plan on working on more than one branch. It is the "
"easiest to keep up to date as well. If you are interested in the history, "
"but are working with only one branch and are short on space, you can also "
"use --single-branch to only download the one branch (though some merge "
"commits will not reference the merged-from branch which may be important for "
"some users who are interested in detailed versions of history)."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:476
#, no-wrap
msgid "Shallow Clone"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:482
msgid ""
"A shallow clone copies just the most current code, but none or little of the "
"history. This can be useful when you need to build a specific revision of "
"FreeBSD, or when you are just starting out and plan to track the tree more "
"fully. You can also use it to limit history to only so many revisions. "
"However, see below for a significant limitation of this approach."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:486
#, no-wrap
msgid "% git clone -o freebsd -b branch --depth 1 $URL [dir]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:491
msgid ""
"This clones the repository, but only has the most recent version in the "
"repository. The rest of the history is not downloaded. Should you change "
"your mind later, you can do 'git fetch --unshallow' to get the old history."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:496
msgid ""
"When you make a shallow clone, you will lose the commit count in your uname "
"output. This can make it more difficult to determine if your system needs "
"to be updated when a security advisory is issued."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:498
#, no-wrap
msgid "Building"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:502
msgid ""
"Once you've downloaded, building is done as described in the handbook, e.g.:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:509
#, no-wrap
msgid ""
"% cd src\n"
"% make buildworld\n"
"% make buildkernel\n"
"% make installkernel\n"
"% make installworld\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:511
msgid "so that won't be covered in depth here."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:514
msgid ""
"If you want to build a custom kernel, extref:{handbook}[the kernel config "
"section, kernelconfig] of the FreeBSD Handbook recommends creating a file "
"MYKERNEL under sys/${ARCH}/conf with your changes against GENERIC. To have "
"MYKERNEL disregarded by Git, it can be added to .git/info/exclude."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:515
#, no-wrap
msgid "Updating"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:519
msgid ""
"To update both types of trees uses the same commands. This pulls in all the "
"revisions since your last update."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:522
#, no-wrap
msgid "% git pull --ff-only\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:527
msgid ""
"will update the tree. In Git, a 'fast forward' merge is one that only needs "
"to set a new branch pointer and doesn't need to re-create the commits. By "
"always doing a 'fast forward' merge/pull, you'll ensure that you have an "
"exact copy of the FreeBSD tree. This will be important if you want to "
"maintain local patches."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:530
msgid ""
"See below for how to manage local changes. The simplest is to use --"
"autostash on the 'git pull' command, but more sophisticated options are "
"available."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:531
#, no-wrap
msgid "Selecting a Specific Version"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:535
msgid ""
"In Git, the 'git checkout' checks out both branches and specific versions. "
"Git's versions are the long hashes rather than a sequential number."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:537
msgid ""
"When you checkout a specific version, just specify the hash you want on the "
"command line (the git log command can help you decide which hash you might "
"want):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:540
#, no-wrap
msgid "% git checkout 08b8197a74\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:543
msgid ""
"and you have that checked out. You will be greeted with a message similar "
"to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:546
#, no-wrap
msgid "Note: checking out '08b8197a742a96964d2924391bf9fdfeb788865d'.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:550
#, no-wrap
msgid ""
"You are in a 'detached HEAD' state. You can look around, make experimental\n"
"changes and commit them, and you can discard any commits you make in this\n"
"state without impacting any branches by performing another checkout.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:553
#: documentation/content/en/articles/committers-guide/_index.adoc:2067
#, no-wrap
msgid ""
"If you want to create a new branch to retain commits you create, you may\n"
"do so (now or later) by using -b with the checkout command again. Example:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:555
#: documentation/content/en/articles/committers-guide/_index.adoc:2069
#, no-wrap
msgid " git checkout -b <new-branch-name>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:557
#, no-wrap
msgid "HEAD is now at 08b8197a742a hook gpiokeys.4 to the build\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:561
msgid ""
"where the last line is generated from the hash you are checking out and the "
"first line of the commit message from that revision. The hash can be "
"abbreviated to the shortest unique length. Git itself is inconsistent about "
"how many digits it displays."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:562
#, no-wrap
msgid "Bisecting"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:566
msgid ""
"Sometimes, things go wrong. The last version worked, but the one you just "
"updated to does not. A developer may ask you to bisect the problem to track "
"down which commit caused the regression."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:571
msgid ""
"Git makes bisecting changes easy with a powerful 'git bisect' command. "
"Here's a brief outline of how to use it. For more information, you can view "
"https://www.metaltoad.com/blog/beginners-guide-git-bisect-process-"
"elimination or https://git-scm.com/docs/git-bisect for more details. The "
"man git-bisect page is good at describing what can go wrong, what to do when "
"versions won't build, when you want to use terms other than 'good' and "
"'bad', etc, none of which will be covered here."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:578
msgid ""
"`git bisect start --first-parent` will start the bisection process. Next, "
"you need to tell a range to go through. 'git bisect good XXXXXX' will tell "
"it the working version and 'git bisect bad XXXXX' will tell it the bad "
"version. The bad version will almost always be HEAD (a special tag for what "
"you have checked out). The good version will be the last one you checked "
"out. The `--first-parent` argument is necessary so that subsequent `git "
"bisect` commands do not try to check out a vendor branch which lacks the "
"full FreeBSD source tree."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:582
msgid ""
"If you want to know the last version you checked out, you should use 'git "
"reflog':"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:587
#, no-wrap
msgid ""
"5ef0bd68b515 (HEAD -> main, freebsd/main, freebsd/HEAD) HEAD@{0}: pull --ff-only: Fast-forward\n"
"a8163e165c5b (upstream/main) HEAD@{1}: checkout: moving from b6fb97efb682994f59b21fe4efb3fcfc0e5b9eeb to main\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:591
msgid ""
"shows me moving the working tree to the main branch (a816...) and then "
"updating from upstream (to 5ef0...). In this case, bad would be HEAD (or "
"5rf0bd68) and good would be a8163e165. As you can see from the output, "
"HEAD@{1} also often works, but isn't foolproof if you have done other things "
"to your Git tree after updating, but before you discover the need to bisect."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:595
msgid ""
"Set the 'good' version first, then set the bad (though the order doesn't "
"matter). When you set the bad version, it will give you some statistics on "
"the process:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:602
#, no-wrap
msgid ""
"% git bisect start --first-parent\n"
"% git bisect good a8163e165c5b\n"
"% git bisect bad HEAD\n"
"Bisecting: 1722 revisions left to test after this (roughly 11 steps)\n"
"[c427b3158fd8225f6afc09e7e6f62326f9e4de7e] Fixup r361997 by balancing parens. Duh.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:611
msgid ""
"You would then build/install that version. If it's good you'd type 'git "
"bisect good' otherwise 'git bisect bad'. If the version doesn't compile, "
"type 'git bisect skip'. You will get a similar message to the above after "
"each step. When you are done, report the bad version to the developer (or "
"fix the bug yourself and send a patch). 'git bisect reset' will end the "
"process and return you back to where you started (usually tip of main). "
"Again, the git-bisect manual (linked above) is a good resource for when "
"things go wrong or for unusual cases."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:613
#, no-wrap
msgid "Signing the commits, tags, and pushes, with GnuPG"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:618
msgid ""
"Git knows how to sign commits, tags, and pushes. When you sign a Git commit "
"or a tag, you can prove that the code you submitted came from you and wasn't "
"altered while you were transferring it. You also can prove that you "
"submitted the code and not someone else."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:620
msgid ""
"A more in-depth documentation on signing commits and tags can be found in "
"the https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work[Git Tools - "
"Signing Your Work] chapter of the Git's book."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:622
msgid ""
"The rationale behind signing pushes can be found in the https://github.com/"
"git/git/commit/a85b377d0419a9dfaca8af2320cc33b051cbed04[commit that "
"introduced the feature]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:625
msgid ""
"The best way is to simply tell Git you always want to sign commits, tags, "
"and pushes. You can do this by setting a few configuration variables:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:632
#, no-wrap
msgid ""
"% git config --add user.signingKey LONG-KEY-ID\n"
"% git config --add commit.gpgSign true\n"
"% git config --add tag.gpgSign true\n"
"% git config --add push.gpgSign if-asked\n"
msgstr ""
#. push.gpgSign should probably be set to `yes` once we enable it, or be set with --global, so that it is enabled for all repositories.
#. type: delimited block = 6
#: documentation/content/en/articles/committers-guide/_index.adoc:640
msgid ""
"To avoid possible collisions, make sure you give a long key id to Git. You "
"can get the long id with: `gpg --list-secret-keys --keyid-format LONG`."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/articles/committers-guide/_index.adoc:646
msgid ""
"To use specific subkeys, and not have GnuPG to resolve the subkey to a "
"primary key, attach `!` to the key. For example, to encrypt for the subkey "
"`DEADBEEF`, use `DEADBEEF!`."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:648
#, no-wrap
msgid "Verifying signatures"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:651
msgid ""
"Commit signatures can be verified by running either `git verify-commit "
"<commit hash>`, or `git log --show-signature`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:653
msgid ""
"Tag signatures can be verified with `git verity-tag <tag name>`, or `git tag "
"-v <tag name>`."
msgstr ""
#
#
#. Commented out for now until we decide what to do.
#. Git pushes are a bit different, they live in a special ref in the repository.
#. TODO: write how to verify them
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:662
#, no-wrap
msgid "Ports Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:665
msgid ""
"The ports tree operates the same way. The branch names are different and "
"the repositories are in different locations."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:668
msgid ""
"The cgit repository web interface for use with web browsers is at https://"
"cgit.FreeBSD.org/ports/ . The production Git repository is at https://git."
"FreeBSD.org/ports.git and at ssh://anongit@git.FreeBSD.org/ports.git (or "
"anongit@git.FreeBSD.org:ports.git)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:672
msgid ""
"There is also a mirror on GitHub, see extref:{handbook}/mirrors[External "
"mirrors, mirrors] for an overview. The 'current' branch is 'main' . The "
"quarterly branches are named 'yyyyQn' for year 'yyyy' and quarter 'n'."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:674
#, no-wrap
msgid "Commit message formats"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:678
msgid ""
"A hook is available in the ports repository to help you write up your commit "
"messages in https://cgit.freebsd.org/ports/tree/.hooks/prepare-commit-msg[."
"hooks/prepare-commit-message]. It can be enabled by running ``git config --"
"add core.hooksPath .hooks``."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:680
msgid ""
"The main point being that a commit message should be formatted in the "
"following way:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:683
#, no-wrap
msgid "category/port: Summary.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:685
#, no-wrap
msgid "Description of why the changes where made.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:687
#, no-wrap
msgid "PR:\t 12345\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:693
msgid ""
"The first line is the subject of the commit, it contains what port was "
"changed, and a summary of the commit. It should contain 50 characters or "
"less."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:695
msgid "A blank line should separate it from the rest of the commit message."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:697
msgid ""
"The rest of the commit message should be wrapped at the 72 characters "
"boundary."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:699
msgid ""
"Another blank line should be added if there are any metadata fields, so that "
"they are easily distinguishable from the commit message."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:701
#, no-wrap
msgid "Managing Local Changes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:704
msgid ""
"This section addresses tracking local changes. If you have no local "
"changes, you can stop reading now (it is the last section and OK to skip)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:710
msgid ""
"One item that is important for all of them: all changes are local until "
"pushed. Unlike Subversion, Git uses a distributed model. For users, for "
"most things, there is very little difference. However, if you have local "
"changes, you can use the same tool to manage them as you use to pull in "
"changes from FreeBSD. All changes that you have not pushed are local and "
"can easily be modified (git rebase, discussed below does this)."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:711
#, no-wrap
msgid "Keeping local changes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:718
msgid ""
"The simplest way to keep local changes (especially trivial ones) is to use "
"'git stash'. In its simplest form, you use 'git stash' to record the "
"changes (which pushes them onto the stash stack). Most people use this to "
"save changes before updating the tree as described above. They then use "
"'git stash apply' to re-apply them to the tree. The stash is a stack of "
"changes that can be examined with 'git stash list'. The git-stash man page "
"(https://git-scm.com/docs/git-stash) has all the details."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:722
msgid ""
"This method is suitable when you have tiny tweaks to the tree. When you "
"have anything non trivial, you'll likely be better off keeping a local "
"branch and rebasing. Stashing is also integrated with the 'git pull' "
"command: just add '--autostash' to the command line."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:723
#, no-wrap
msgid "Keeping a local branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:730
msgid ""
"It is much easier to keep a local branch with Git than Subversion. In "
"Subversion you need to merge the commit, and resolve the conflicts. This is "
"manageable, but can lead to a convoluted history that's hard to upstream "
"should that ever be necessary, or hard to replicate if you need to do so. "
"Git also allows one to merge, along with the same problems. That's one way "
"to manage the branch, but it's the least flexible."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:734
msgid ""
"In addition to merging, Git supports the concept of 'rebasing' which avoids "
"these issues. The 'git rebase' command replays all the commits of a branch "
"at a newer location on the parent branch. We will cover the most common "
"scenarios that arise using it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:736
msgid "====== Create a branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:741
msgid ""
"Let's say you want to make a change to FreeBSD's ls command to never, ever "
"do color. There are many reasons to do this, but this example will use that "
"as a baseline. The FreeBSD ls command changes from time to time, and you'll "
"need to cope with those changes. Fortunately, with Git rebase it usually is "
"automatic."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:763
#, no-wrap
msgid ""
"% cd src\n"
"% git checkout main\n"
"% git checkout -b no-color-ls\n"
"% cd bin/ls\n"
"% vi ls.c # hack the changes in\n"
"% git diff # check the changes\n"
"diff --git a/bin/ls/ls.c b/bin/ls/ls.c\n"
"index 7378268867ef..cfc3f4342531 100644\n"
"--- a/bin/ls/ls.c\n"
"+++ b/bin/ls/ls.c\n"
"@@ -66,6 +66,7 @@ __FBSDID(\"$FreeBSD$\");\n"
" #include <stdlib.h>\n"
" #include <string.h>\n"
" #include <unistd.h>\n"
"+#undef COLORLS\n"
" #ifdef COLORLS\n"
" #include <termcap.h>\n"
" #include <signal.h>\n"
"% # these look good, make the commit...\n"
"% git commit ls.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:770
msgid ""
"The commit will pop you into an editor to describe what you've done. Once "
"you enter that, you have your own **local** branch in the Git repo. Build "
"and install it like you normally would, following the directions in the "
"handbook. Git differs from other version control systems in that you have "
"to tell it explicitly which files to commit. I have opted to do it on the "
"commit command line, but you can also do it with 'git add' which many of the "
"more in depth tutorials cover."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:772
msgid "====== Time to update"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:777
msgid ""
"When it is time to bring in a new version, it is almost the same as w/o the "
"branches. You would update like you would above, but there is one extra "
"command before you update, and one after. The following assumes you are "
"starting with an unmodified tree. It is important to start rebasing "
"operations with a clean tree (Git requires this)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:783
#, no-wrap
msgid ""
"% git checkout main\n"
"% git pull --ff-only\n"
"% git rebase -i main no-color-ls\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:788
msgid ""
"This will bring up an editor that lists all the commits in it. For this "
"example, do not change it at all. This is typically what you are doing "
"while updating the baseline (though you also use the Git rebase command to "
"curate the commits you have in the branch)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:790
msgid ""
"Once you are done with the above, you have to move the commits to ls.c "
"forward from the old version of FreeBSD to the newer one."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:797
msgid ""
"Sometimes there are merge conflicts. That is OK. Do not panic. Instead, "
"handle them the same as any other merge conflicts. To keep it simple, I "
"will just describe a common issue that may arise. A pointer to a more "
"complete treatment can be found at the end of this section."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:800
msgid ""
"Let's say the includes changes upstream in a radical shift to terminfo as "
"well as a name change for the option. When you updated, you might see "
"something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:810
#, no-wrap
msgid ""
"Auto-merging bin/ls/ls.c\n"
"CONFLICT (content): Merge conflict in bin/ls/ls.c\n"
"error: could not apply 646e0f9cda11... no color ls\n"
"Resolve all conflicts manually, mark them as resolved with\n"
"\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
"You can instead skip this commit: run \"git rebase --skip\".\n"
"To abort and get back to the state before \"git rebase\", run \"git rebase --abort\".\n"
"Could not apply 646e0f9cda11... no color ls\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:813
msgid ""
"which looks scary. If you bring up an editor, you will see it is a typical "
"3-way merge conflict resolution that you may be familiar with from other "
"source code systems (the rest of ls.c has been omitted):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:823
#, no-wrap
msgid ""
"<<<<<<< HEAD\n"
"#ifdef COLORLS_NEW\n"
"#include <terminfo.h>\n"
"=======\n"
"#undef COLORLS\n"
"#ifdef COLORLS\n"
"#include <termcap.h>\n"
">>>>>>> 646e0f9cda11... no color ls\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:826
msgid ""
"The new code is first, and your code is second. The right fix here is to "
"just add a #undef COLORLS_NEW before #ifdef and then delete the old changes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:831
#, no-wrap
msgid ""
"#undef COLORLS_NEW\n"
"#ifdef COLORLS_NEW\n"
"#include <terminfo.h>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:834
msgid "save the file. The rebase was interrupted, so you have to complete it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:838
#, no-wrap
msgid ""
"% git add ls.c\n"
"% git rebase --continue\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:843
msgid ""
"which tells Git that ls.c has been fixed and to continue the rebase "
"operation. Since there was a conflict, you will get kicked into the editor "
"to update the commit message if necessary. If the commit message is still "
"accurate, just exit the editor."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:848
msgid ""
"If you get stuck during the rebase, do not panic. git rebase --abort will "
"take you back to a clean slate. It is important, though, to start with an "
"unmodified tree. An aside: The above mentioned 'git reflog' comes in handy "
"here, as it will have a list of all the (intermediate) commits that you can "
"view or inspect or cherry-pick."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:851
msgid ""
"For more on this topic, https://www.freecodecamp.org/news/the-ultimate-guide-"
"to-git-merge-and-git-rebase/ provides a rather extensive treatment. It is a "
"good resource for issues that arise occasionally but are too obscure for "
"this guide."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:852
#, no-wrap
msgid "Switching to a Different FreeBSD Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:855
msgid ""
"If you wish to shift from stable/12 to the current branch. If you have a "
"deep clone, the following will suffice:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:859
#, no-wrap
msgid ""
"% git checkout main\n"
"% # build and install here...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:864
msgid ""
"If you have a local branch, though, there are one or two caveats. First, "
"rebase will rewrite history, so you will likely want to do something to save "
"it. Second, jumping branches tends to cause more conflicts. If we pretend "
"the example above was relative to stable/12, then to move to main, I'd "
"suggest the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:869
#, no-wrap
msgid ""
"% git checkout no-color-ls\n"
"% git checkout -b no-color-ls-stable-12 # create another name for this branch\n"
"% git rebase -i stable/12 no-color-ls --onto main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:876
msgid ""
"What the above does is checkout no-color-ls. Then create a new name for it "
"(no-color-ls-stable-12) in case you need to get back to it. Then you rebase "
"onto the main branch. This will find all the commits to the current no-"
"color-ls branch (back to where it meets up with the stable/12 branch) and "
"then it will replay them onto the main branch creating a new no-color-ls "
"branch there (which is why I had you create a place holder name)."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:877
#, no-wrap
msgid "Migrating from an existing Git clone"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:879
msgid ""
"If you have work based on a previous Git conversion or a locally running git-"
"svn conversion, migrating to new repository can encounter problems because "
"Git has no knowledge about the connection between the two."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:881
msgid ""
"When you have only a few local changes, the easiest way would be to cherry-"
"pick those changes to the new base:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:885
#, no-wrap
msgid ""
"% git checkout main\n"
"% git cherry-pick old_branch..your_branch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:887
msgid "Or alternatively, do the same thing with rebase:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:890
#, no-wrap
msgid "% git rebase --onto main master your_branch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:894
msgid ""
"If you do have a lot of changes, you would probably want to perform a merge "
"instead. The idea is to create a merge point that consolidates the history "
"of the old_branch, and the new FreeBSD repository (main)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:896
msgid ""
"You can find out by looking up the same commit that are found on both "
"parents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:899
#, no-wrap
msgid "% git show old_branch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:901
msgid "You will see a commit message, now search for that in the new branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:904
#, no-wrap
msgid "% git log --grep=\"commit message on old_branch\" freebsd/main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:906
msgid ""
"You would help locate the commit hash on the new main branch, create a "
"helper branch (in the example we call it 'stage') from that hash:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:909
#, no-wrap
msgid "% git checkout -b stage _hash_found_from_git_log_\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:911
msgid "Then perform a merge of the old branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:914
#, no-wrap
msgid "% git merge -s ours -m \"Mark old branch as merged\" old_branch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:917
msgid ""
"With that, it's possible to merge your work branch or the main branch in any "
"order without problem. Eventually, when you are ready to commit your work "
"back to main, you can perform a rebase to main, or do a squash commit by "
"combining everything into one commit."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:919
#, no-wrap
msgid "MFC (Merge From Current) Procedures"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:920
#, no-wrap
msgid "Summary"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:924
msgid ""
"MFC workflow can be summarized as `git cherry-pick -x` plus `git commit --"
"amend` to adjust the commit message. For multiple commits, use `git rebase -"
"i` to squash them together and edit the commit message."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:925
#, no-wrap
msgid "Single commit MFC"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:931
#, no-wrap
msgid ""
"% git checkout stable/X\n"
"% git cherry-pick -x $HASH --edit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:935
msgid ""
"For MFC commits, for example a vendor import, you would need to specify one "
-"parent for cherry-pick purposes. Normally, that would be the \"first parent"
-"\" of the branch you are cherry-picking from, so:"
+"parent for cherry-pick purposes. Normally, that would be the \"first "
+"parent\" of the branch you are cherry-picking from, so:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:940
#, no-wrap
msgid ""
"% git checkout stable/X\n"
"% git cherry-pick -x $HASH -m 1 --edit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:943
msgid ""
"If things go wrong, you'll either need to abort the cherry-pick with `git "
"cherry-pick --abort` or fix it up and do a `git cherry-pick --continue`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:946
msgid ""
"Once the cherry-pick is finished, push with `git push`. If you get an error "
"due to losing the commit race, use `git pull --rebase` and try to push again."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:947
#, no-wrap
msgid "MFC to RELENG branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:951
msgid ""
"MFCs to branches that require approval require a bit more care. The process "
"is the same for either a typical merge or an exceptional direct commit."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:953
msgid ""
"Merge or direct commit to the appropriate `stable/X` branch first before "
"merging to the `releng/X.Y` branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:954
msgid ""
"Use the hash that's in the `stable/X` branch for the MFC to `releng/X.Y` "
"branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:955
msgid "Leave both \"cherry picked from\" lines in the commit message."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:956
msgid "Be sure to add the `Approved by:` line when you are in the editor."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:961
#, no-wrap
msgid ""
"% git checkout releng/13.0\n"
"% git cherry-pick -x $HASH --edit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:964
msgid ""
"If you forget to to add the `Approved by:` line, you can do a `git commit --"
"amend` to edit the commit message before you push the change."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:965
#, no-wrap
msgid "Multiple commit MFC"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:976
#, no-wrap
msgid ""
"% git checkout -b tmp-branch stable/X\n"
"% for h in $HASH_LIST; do git cherry-pick -x $h; done\n"
"% git rebase -i stable/X\n"
"# mark each of the commits after the first as 'squash'\n"
"# Update the commit message to reflect all elements of commit, if necessary.\n"
"# Be sure to retain the \"cherry picked from\" lines.\n"
"% git push freebsd HEAD:stable/X\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:979
msgid "If the push fails due to losing the commit race, rebase and try again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:987
#, no-wrap
msgid ""
"% git checkout stable/X\n"
"% git pull\n"
"% git checkout tmp-branch\n"
"% git rebase stable/X\n"
"% git push freebsd HEAD:stable/X\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:990
msgid "Once the MFC is complete, you can delete the temporary branch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:995
#, no-wrap
msgid ""
"% git checkout stable/X\n"
"% git branch -d tmp-branch\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:997
#, no-wrap
msgid "MFC a vendor import"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1002
msgid ""
"Vendor imports are the only thing in the tree that creates a merge commit in "
"the main line. Cherry picking merge commits into stable/XX presents an "
"additional difficulty because there are two parents for a merge commit. "
"Generally, you'll want the first parent's diff since that's the diff to "
"mainline (though there may be some exceptions)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1006
#, no-wrap
msgid "% git cherry-pick -x -m 1 $HASH\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1009
msgid ""
"is typically what you want. This will tell cherry-pick to apply the correct "
"diff."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1013
msgid ""
"There are some, hopefully, rare cases where it's possible that the mainline "
"was merged backwards by the conversion script. Should that be the case (and "
"we've not found any yet), you'd change the above to '-m 2' to pickup the "
"proper parent. Just do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1017
#, no-wrap
msgid ""
"% git cherry-pick --abort\n"
"% git cherry-pick -x -m 2 $HASH\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1019
msgid "to do that. The `--abort` will cleanup the failed first attempt."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1020
#, no-wrap
msgid "Redoing a MFC"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1024
msgid ""
"If you do a MFC, and it goes horribly wrong and you want to start over, then "
"the easiest way is to use `git reset --hard` like so:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1027
#, no-wrap
msgid "% git reset --hard freebsd/stable/12\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1030
msgid ""
"though if you have some revs you want to keep, and others you don't, using "
"'git rebase -i' is better."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1031
#, no-wrap
msgid "Considerations when MFCing"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1034
msgid ""
"When committing source commits to stable and releng branches, we have the "
"following goals:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1036
msgid ""
"Clearly mark direct commits distinct from commits that land a change from "
"another branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1037
msgid "Avoid introducing known breakage into stable and releng branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1038
msgid ""
"Allow developers to determine which changes have or have not been landed "
"from one branch to another."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1040
msgid ""
"With Subversion, we used the following practices to achieve these goals:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1042
msgid ""
"Using 'MFC' and 'MFS' tags to mark commits that merged changes from another "
"branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1043
msgid "Squashing fixup commits into the main commit when merging a change."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1044
msgid "Recording mergeinfo so that `svn mergeinfo --show-revs` worked."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1048
msgid ""
"With Git, we will need to use different strategies to achieve the same "
"goals. This document aims to define best practices when merging source "
"commits using Git that achieve these goals. In general, we aim to use Git's "
"native support to achieve these goals rather than enforcing practices built "
"on Subversion's model."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1051
msgid ""
"One general note: due to technical differences with Git, we will not be "
"using Git \"merge commits\" (created via `git merge`) in stable or releng "
"branches. Instead, when this document refers to \"merge commits\", it means "
"a commit originally made to `main` that is replicated or \"landed\" to a "
"stable branch, or a commit from a stable branch that is replicated to a "
"releng branch with some variation of `git cherry-pick`."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1052
#, no-wrap
msgid "Finding Eligible Hashes to MFC"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1057
msgid ""
"Git provides some built-in support for this via the `git cherry` and `git "
"log --cherry` commands. These commands compare the raw diffs of commits "
"(but not other metadata such as log messages) to determine if two commits "
"are identical. This works well when each commit from head is landed as a "
"single commit to a stable branch, but it falls over if multiple commits from "
"main are squashed together as a single commit to a stable branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1059
msgid "There are a few options for resolving this:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1063
msgid ""
"We could ban squashing of commits and instead require that committers stage "
"all of the fixup / follow-up commits to stable into a single push. This "
"would still achieve the goal of stability in stable and releng branches "
"since pushes are atomic and users doing a simple pull will never end up with "
"a tree that has the main commit without the fixup(s). `git bisect` is also "
"able to cope with this model via `git bisect skip`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1067
msgid ""
"We could adopt a consistent style for describing MFCs and write our own "
"tooling to wrap around `git cherry` to determine the list of eligible "
"commits. A simple approach here might be to use the syntax from `git cherry-"
"pick -x`, but require that a squashed commit list all of the hashes (one "
"line per hash) at the end of the commit message. Developers could do this "
"by using `git cherry-pick -x` of each individual commit into a branch and "
"then use `git rebase` to squash the commits down into a single commit, but "
"collecting the `-x` annotations at the end of the landed commit log."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1068
#, no-wrap
msgid "Commit message standards"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1069
#, no-wrap
msgid "Marking MFCs"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1072
msgid "The project has adopted the following practice for marking MFCs:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1074
msgid ""
"Use the `-x` flag with `git cherry-pick`. This adds a line to the commit "
"message that includes the hash of the original commit when merging. Since it "
"is added by Git directly, committers do not have to manually edit the commit "
"log when merging."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1076
msgid ""
"When merging multiple commits, keep all the \"cherry picked from\" lines."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1077
#, no-wrap
msgid "Trim Metadata?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1081
msgid ""
"One area that was not clearly documented with Subversion (or even CVS) is "
"how to format metadata in log messages for MFC commits. Should it include "
"the metadata from the original commit unchanged, or should it be altered to "
"reflect information about the MFC commit itself?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1090
msgid ""
"Historical practice has varied, though some of the variance is by field. "
"For example, MFCs that are relevant to a PR generally include the PR field "
"in the MFC so that MFC commits are included in the bug tracker's audit "
"trail. Other fields are less clear. For example, Phabricator shows the "
"diff of the last commit tagged to a review, so including Phabricator URLs "
"replaces the `main` commit with the landed commits. The list of reviewers "
"is also not clear. If a reviewer has approved a change to `main`, does that "
"mean they have approved the MFC commit? Is that true if it's identical code "
"only, or with merely trivial rework? It's clearly not true for more "
"extensive reworks. Even for identical code what if the commit doesn't "
"conflict but introduces an ABI change? A reviewer may have ok'd a commit for "
"`main` due to the ABI breakage but may not approve of merging the same "
"commit as-is. One will have to use one's best judgment until clear "
"guidelines can be agreed upon."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1094
msgid ""
"For MFCs regulated by re@, new metadata fields are added, such as the "
"Approved by tag for approved commits. This new metadata will have to be "
"added via `git commit --amend` or similar after the original commit has been "
"reviewed and approved. We may also want to reserve some metadata fields in "
"MFC commits such as Phabricator URLs for use by re@ in the future."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1097
msgid ""
"Preserving existing metadata provides a very simple workflow. Developers "
"can just use `git cherry-pick -x` without having to edit the log message."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1100
msgid ""
"If instead we choose to adjust metadata in MFCs, developers will have to "
"edit log messages explicitly via the use of `git cherry-pick --edit` or `git "
"commit --amend`. However, as compared to svn, at least the existing commit "
"message can be pre-populated and metadata fields can be added or removed "
"without having to re-enter the entire commit message."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1102
msgid ""
"The bottom line is that developers will likely need to curate their commit "
"message for MFCs that are non-trivial."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1103
#, no-wrap
msgid "Examples"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1105
#, no-wrap
msgid "Merging a Single Subversion Commit"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1109
msgid ""
"This walks through the process of merging a commit to stable/12 that was "
"originally committed to head in Subversion. In this case, the original "
"commit is r368685."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1112
msgid ""
"The first step is to map the Subversion commit to a Git hash. Once you have "
"fetched refs/notes/commits, you can pass the revision number to `git log --"
"grep`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1119
#, no-wrap
msgid ""
"% git log main --grep 368685\n"
"commit ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81\n"
"Author: John Baldwin <jhb@FreeBSD.org>\n"
"Date: Wed Dec 16 00:11:30 2020 +0000\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1121
#: documentation/content/en/articles/committers-guide/_index.adoc:1160
#, no-wrap
msgid " Use the 't' modifier to print a ptrdiff_t.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1126
#, no-wrap
msgid ""
" Reviewed by: imp\n"
" Obtained from: CheriBSD\n"
" Sponsored by: DARPA\n"
" Differential Revision: https://reviews.freebsd.org/D27576\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1129
#, no-wrap
msgid ""
"Notes:\n"
" svn path=/head/; revision=368685\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1132
#: documentation/content/en/articles/committers-guide/_index.adoc:1225
msgid "Next, MFC the commit to a `stable/12` checkout:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1137
#, no-wrap
msgid ""
"git checkout stable/12\n"
"git cherry-pick -x ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81 --edit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1142
msgid ""
"Git will invoke the editor. Use this to remove the metadata that only "
"applied to the original commit (Phabricator URL and Reviewed by). After the "
"editor saves the updated log message, Git completes the commit:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1148
#, no-wrap
msgid ""
"[stable/12 3e3a548c4874] Use the 't' modifier to print a ptrdiff_t.\n"
" Date: Wed Dec 16 00:11:30 2020 +0000\n"
" 1 file changed, 1 insertion(+), 1 deletion(-)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1151
msgid "The contents of the MFCd commit can be examined via `git show`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1158
#, no-wrap
msgid ""
"% git show\n"
"commit 3e3a548c487450825679e4bd63d8d1a67fd8bd2d (HEAD -> stable/12)\n"
"Author: John Baldwin <jhb@FreeBSD.org>\n"
"Date: Wed Dec 16 00:11:30 2020 +0000\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1163
#, no-wrap
msgid ""
" Obtained from: CheriBSD\n"
" Sponsored by: DARPA\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1165
#, no-wrap
msgid " (cherry picked from commit ce8395ecfda2c8e332a2adf9a9432c2e7f35ea81)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1179
#, no-wrap
msgid ""
"diff --git a/sys/compat/linuxkpi/common/include/linux/printk.h b/sys/compat/linuxkpi/common/include/linux/printk.h\n"
"index 31802bdd2c99..e6510e9e9834 100644\n"
"--- a/sys/compat/linuxkpi/common/include/linux/printk.h\n"
"+++ b/sys/compat/linuxkpi/common/include/linux/printk.h\n"
"@@ -68,7 +68,7 @@ print_hex_dump(const char *level, const char *prefix_str,\n"
" printf(\"[%p] \", buf);\n"
" break;\n"
" case DUMP_PREFIX_OFFSET:\n"
"- printf(\"[%p] \", (const char *)((const char *)buf -\n"
"+ printf(\"[%#tx] \", ((const char *)buf -\n"
" (const char *)buf_old));\n"
" break;\n"
" default:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1182
#: documentation/content/en/articles/committers-guide/_index.adoc:1344
msgid "The MFC commit can now be published via `git push`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1194
#, no-wrap
msgid ""
"% git push freebsd\n"
"Enumerating objects: 17, done.\n"
"Counting objects: 100% (17/17), done.\n"
"Delta compression using up to 4 threads\n"
"Compressing objects: 100% (7/7), done.\n"
"Writing objects: 100% (9/9), 817 bytes | 204.00 KiB/s, done.\n"
"Total 9 (delta 5), reused 1 (delta 1), pack-reused 0\n"
"To gitrepo-dev.FreeBSD.org:src.git\n"
" 525bd9c9dda7..3e3a548c4874 stable/12 -> stable/12\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1196
#, no-wrap
msgid "Merging a Single Subversion Commit with a Conflict"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1200
msgid ""
"This example is similar to the previous example except that the commit in "
"question encounters a merge conflict. In this case, the original commit is "
"r368314."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1202
msgid "As above, the first step is to map the Subversion commit to a Git hash:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1209
#, no-wrap
msgid ""
"% git log main --grep 368314\n"
"commit 99963f5343a017e934e4d8ea2371a86789a46ff9\n"
"Author: John Baldwin <jhb@FreeBSD.org>\n"
"Date: Thu Dec 3 22:01:13 2020 +0000\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1211
#: documentation/content/en/articles/committers-guide/_index.adoc:1299
#, no-wrap
msgid " Don't transmit mbufs that aren't yet ready on TOE sockets.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1214
#: documentation/content/en/articles/committers-guide/_index.adoc:1302
#, no-wrap
msgid ""
" This includes mbufs waiting for data from sendfile() I/O requests, or\n"
" mbufs awaiting encryption for KTLS.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1219
#, no-wrap
msgid ""
" Reviewed by: np\n"
" MFC after: 2 weeks\n"
" Sponsored by: Chelsio Communications\n"
" Differential Revision: https://reviews.freebsd.org/D27469\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1222
#, no-wrap
msgid ""
"Notes:\n"
" svn path=/head/; revision=368314\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1238
#, no-wrap
msgid ""
"% git checkout stable/12\n"
"% git cherry-pick -x 99963f5343a017e934e4d8ea2371a86789a46ff9 --edit\n"
"Auto-merging sys/dev/cxgbe/tom/t4_cpl_io.c\n"
"CONFLICT (content): Merge conflict in sys/dev/cxgbe/tom/t4_cpl_io.c\n"
"warning: inexact rename detection was skipped due to too many files.\n"
"warning: you may want to set your merge.renamelimit variable to at least 7123 and retry the command.\n"
"error: could not apply 99963f5343a0... Don't transmit mbufs that aren't yet ready on TOE sockets.\n"
"hint: after resolving the conflicts, mark the corrected paths\n"
"hint: with 'git add <paths>' or 'git rm <paths>'\n"
"hint: and commit the result with 'git commit'\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1243
msgid ""
"In this case, the commit encountered a merge conflict in sys/dev/cxge/tom/"
"t4_cpl_io.c as kernel TLS is not present in stable/12. Note that Git does "
"not invoke an editor to adjust the commit message due to the conflict. `git "
"status` confirms that this file has merge conflicts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1249
#: documentation/content/en/articles/committers-guide/_index.adoc:1269
#, no-wrap
msgid ""
"% git status\n"
"On branch stable/12\n"
"Your branch is up to date with 'upstream/stable/12'.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1254
#, no-wrap
msgid ""
"You are currently cherry-picking commit 99963f5343a0.\n"
" (fix conflicts and run \"git cherry-pick --continue\")\n"
" (use \"git cherry-pick --skip\" to skip this patch)\n"
" (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1258
#, no-wrap
msgid ""
"Unmerged paths:\n"
" (use \"git add <file>...\" to mark resolution)\n"
" both modified: sys/dev/cxgbe/tom/t4_cpl_io.c\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1260
#, no-wrap
msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1263
msgid ""
"After editing the file to resolve the conflict, `git status` shows the "
"conflict as resolved:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1274
#, no-wrap
msgid ""
"You are currently cherry-picking commit 99963f5343a0.\n"
" (all conflicts fixed: run \"git cherry-pick --continue\")\n"
" (use \"git cherry-pick --skip\" to skip this patch)\n"
" (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1277
#, no-wrap
msgid ""
"Changes to be committed:\n"
" modified: sys/dev/cxgbe/tom/t4_cpl_io.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1280
msgid "The cherry-pick can now be completed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1284
#, no-wrap
msgid "% git cherry-pick --continue\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1288
msgid ""
"Since there was a merge conflict, Git invokes the editor to adjust the "
"commit message. Trim the metadata fields from the commit log from the "
"original commit to head and save the updated log message."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1290
msgid "The contents of the MFC commit can be examined via `git show`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1297
#, no-wrap
msgid ""
"% git show\n"
"commit 525bd9c9dda7e7c7efad2d4570c7fd8e1a8ffabc (HEAD -> stable/12)\n"
"Author: John Baldwin <jhb@FreeBSD.org>\n"
"Date: Thu Dec 3 22:01:13 2020 +0000\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1304
#, no-wrap
msgid " Sponsored by: Chelsio Communications\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1306
#, no-wrap
msgid " (cherry picked from commit 99963f5343a017e934e4d8ea2371a86789a46ff9)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1314
#, no-wrap
msgid ""
"diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c\n"
"index 8e8c2b8639e6..43861f10b689 100644\n"
"--- a/sys/dev/cxgbe/tom/t4_cpl_io.c\n"
"+++ b/sys/dev/cxgbe/tom/t4_cpl_io.c\n"
"@@ -746,6 +746,8 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n"
" for (m = sndptr; m != NULL; m = m->m_next) {\n"
" int n;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1321
#, no-wrap
msgid ""
"+ if ((m->m_flags & M_NOTAVAIL) != 0)\n"
"+ break;\n"
" if (IS_AIOTX_MBUF(m))\n"
" n = sglist_count_vmpages(aiotx_mbuf_pages(m),\n"
" aiotx_mbuf_pgoff(m), m->m_len);\n"
"@@ -821,8 +823,9 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1331
#, no-wrap
msgid ""
" /* nothing to send */\n"
" if (plen == 0) {\n"
"- KASSERT(m == NULL,\n"
"- (\"%s: nothing to send, but m != NULL\", __func__));\n"
"+ KASSERT(m == NULL || (m->m_flags & M_NOTAVAIL) != 0,\n"
"+ (\"%s: nothing to send, but m != NULL is ready\",\n"
"+ __func__));\n"
" break;\n"
" }\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1334
#, no-wrap
msgid ""
"@@ -910,7 +913,7 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep, int drop)\n"
" toep->txsd_avail--;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1338
#, no-wrap
msgid ""
" t4_l2t_send(sc, wr, toep->l2te);\n"
"- } while (m != NULL);\n"
"+ } while (m != NULL && (m->m_flags & M_NOTAVAIL) == 0);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1341
#, no-wrap
msgid ""
" /* Send a FIN if requested, but only if there's no more data to send */\n"
" if (m == NULL && toep->flags & TPF_SEND_FIN)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1356
#, no-wrap
msgid ""
"git push freebsd\n"
"Enumerating objects: 13, done.\n"
"Counting objects: 100% (13/13), done.\n"
"Delta compression using up to 4 threads\n"
"Compressing objects: 100% (7/7), done.\n"
"Writing objects: 100% (7/7), 819 bytes | 117.00 KiB/s, done.\n"
"Total 7 (delta 6), reused 0 (delta 0), pack-reused 0\n"
"To gitrepo.FreeBSD.org:src.git\n"
" f4d0bc6aa6b9..525bd9c9dda7 stable/12 -> stable/12\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:1359
#, no-wrap
msgid "Vendor Imports with Git"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1362
msgid "This section describes the vendor import procedure with Git in detail."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1363
#, no-wrap
msgid "Branch naming convention"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1366
msgid ""
"All vendor branches and tags start with `vendor/`. These branches and tags "
"are visible by default."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1371
msgid ""
"This chapter follows the convention that the `freebsd` origin is the origin "
"name for the official FreeBSD Git repository. If you use a different "
"convention, replace `freebsd` with the name you use instead in the examples "
"below."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1375
msgid ""
"We will explore an example for updating NetBSD's mtree that is in our tree. "
"The vendor branch for this is `vendor/NetBSD/mtree`."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1376
#, no-wrap
msgid "Updating an old vendor import"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1382
msgid ""
"The vendor trees usually have only the subset of the third-party software "
"that is appropriate to FreeBSD. These trees are usually tiny in comparison "
"to the FreeBSD tree. Git worktrees are thus quite small and fast and the "
"preferred method to use. Make sure that whatever directory you choose below "
"(the `../mtree`) does not currently exist."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1386
#, no-wrap
msgid "% git worktree add ../mtree vendor/NetBSD/mtree\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1388
#, no-wrap
msgid "Update the Sources in the Vendor Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1391
msgid ""
"Prepare a full, clean tree of the vendor sources. Import everything but "
"merge only what is needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1395
msgid ""
"This example assumes the NetBSD source is checked out from their GitHub "
"mirror in `~/git/NetBSD`. Note that \"upstream\" might have added or "
"removed files, so we want to make sure deletions are propagated as well. "
"package:net/rsync[] is commonly installed, so I'll use that."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1409
#, no-wrap
msgid ""
"% cd ../mtree\n"
"% rsync -va --del --exclude=\".git\" ~/git/NetBSD/usr.sbin/mtree/ .\n"
"% git add -A\n"
"% git status\n"
"...\n"
"% git diff --staged\n"
"...\n"
"% git commit -m \"Vendor import of NetBSD's mtree at 2020-12-11\"\n"
"[vendor/NetBSD/mtree 8e7aa25fcf1] Vendor import of NetBSD's mtree at 2020-12-11\n"
" 7 files changed, 114 insertions(+), 82 deletions(-)\n"
"% git tag -a vendor/NetBSD/mtree/20201211\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1413
msgid ""
"Note: I run the `git diff` and `git status` commands to make sure nothing "
"weird was present. Also I used `-m` to illustrate, but you should compose a "
"proper message in an editor (using a commit message template)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1418
msgid ""
"It is also important to create an annotated tag using `git tag -a`, "
"otherwise the push will be rejected. Only annotated tags are allowed to be "
"pushed. The annotated tag gives you a chance to enter a commit message. "
"Enter the version you are importing, along with any salient new features or "
"fixes in that version."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1419
#, no-wrap
msgid "Updating the FreeBSD Copy"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1422
msgid "At this point you can push the import to `vendor` into our repo."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1426
#, no-wrap
msgid "% git push --follow-tags freebsd vendor/NetBSD/mtree\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1429
msgid ""
"`--follow-tags` tells `git push` to also push tags associated with the "
"locally committed revision."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1430
#, no-wrap
msgid "Updating the FreeBSD source tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1434
msgid ""
"Now you need to update the mtree in FreeBSD. The sources live in `contrib/"
"mtree` since it is upstream software."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1439
#, no-wrap
msgid ""
"% cd ../src\n"
"% git subtree merge -P contrib/mtree vendor/NetBSD/mtree\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1444
msgid ""
"This would generate a subtree merge commit of `contrib/mtree` against the "
"local `vendor/NetBSD/mtree` branch. If there were conflicts, you would need "
"to fix them before committing. Include details about the changes being "
"merged in the merge commit message."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1445
#, no-wrap
msgid "Rebasing your change against latest FreeBSD source tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1448
msgid ""
"Because the current policy recommends against using merges, if the upstream "
"FreeBSD `main` moved forward before you get a chance to push, you would have "
"to redo the merge."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1451
msgid ""
"Regular `git rebase` or `git pull --rebase` doesn't know how to rebase a "
"merge commit **as a merge commit**, so instead of that you would have to "
"recreate the commit."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1453
msgid ""
"The easiest way to do this would be to create a side branch with the "
"**contents** of the merged tree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1460
#, no-wrap
msgid ""
"% cd ../src\n"
"% git fetch freebsd\n"
"% git checkout -b merge_result\n"
"% git merge freebsd/main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1464
msgid ""
"Typically, there would be no merge conflicts here (because developers tend "
"to work on different components). In the worst case scenario, you would "
"still have to resolve merge conflicts, if there was any, but this should be "
"really rare."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1466
msgid "Now, checkout `freebsd/main` again as `new_merge`, and redo the merge:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1471
#, no-wrap
msgid ""
"% git checkout -b new_merge freebsd/main\n"
"% git subtree merge -P contrib/mtree vendor/NetBSD/mtree\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1474
msgid "Instead of resolving the conflicts, perform this instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1478
#, no-wrap
msgid "% git checkout merge_result .\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1481
msgid ""
"Which will overwrite the files with conflicts with the version found in "
"`merge_result`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1483
msgid ""
"Examine the tree against `merge_result` to make sure that you haven't missed "
"deleted files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1487
#, no-wrap
msgid "% git diff merge_result\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1489
#, no-wrap
msgid "Pushing the changes"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1494
msgid ""
"Once you are sure that you have a set of deltas you think is good, you can "
"push it to a fork off GitHub or GitLab for others to review. One nice thing "
"about Git is that it allows you to publish rough drafts of your work for "
"others to review. While Phabricator is good for content review, publishing "
"the updated vendor branch and merge commits lets others check the details as "
"they will eventually appear in the repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1496
msgid ""
"After review, when you are sure it is a good change, you can push it to the "
"FreeBSD repo:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1500
#, no-wrap
msgid "% git push freebsd main\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:1502
#, no-wrap
msgid "Creating a new vendor branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1509
msgid ""
"There are a number of ways to create a new vendor branch. The recommended "
"way is to create a new repository and then merge that with FreeBSD. If one "
"is importing `glorbnitz` into the FreeBSD tree, release 3.1415. For the "
"sake of simplicity, we will not trim this release. It is a simple user "
"command that puts the nitz device into different magical glorb states and is "
"small enough trimming will not save much."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1510
#, no-wrap
msgid "Create the repo"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1519
#, no-wrap
msgid ""
"% cd /some/where\n"
"% mkdir glorbnitz\n"
"% cd glorbnitz\n"
"% git init\n"
"% git checkout -b vendor/glorbnitz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1522
msgid ""
"At this point, you have a new repo, where all new commits will go on the "
"`vendor/glorbnitz` branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1524
msgid ""
"Git experts can also do this right in their FreeBSD clone, using `git "
"checkout --orphan vendor/glorbnitz` if they are more comfortable with that."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1525
#, no-wrap
msgid "Copy the sources in"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1529
msgid ""
"Since this is a new import, you can just cp the sources in, or use tar or "
"even rsync as shown above. And we will add everything, assuming no dot "
"files."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1534
#, no-wrap
msgid ""
"% cp -r ~/glorbnitz/* .\n"
"% git add *\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1537
msgid ""
"At this point, you should have a pristine copy of glorbnitz ready to commit."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1541
#, no-wrap
msgid "% git commit -m \"Import GlorbNitz frobnosticator revision 3.1415\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1545
msgid ""
"As above, I used `-m` for simplicity, but you should likely create a commit "
"message that explains what a Glorb is and why you'd use a Nitz to get it. "
"Not everybody will know so, for your actual commit, you should follow the "
"<<commit-log-message,commit log message>> section instead of emulating the "
"brief style used here."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1546
#, no-wrap
msgid "Now import it into our repository"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1549
msgid "Now you need to import the branch into our repository."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1555
#, no-wrap
msgid ""
"% cd /path/to/freebsd/repo/src\n"
"% git remote add glorbnitz /some/where/glorbnitz\n"
"% git fetch glorbnitz vendor/glorbnitz\n"
msgstr ""
#. perhaps the real treasure was the friends it made along the way...
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1559
msgid ""
"Note the vendor/glorbnitz branch is in the repo. At this point the `/some/"
"where/glorbnitz` can be deleted, if you like. It was only a means to an end."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1561
#, no-wrap
msgid "Tag and push"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1564
msgid ""
"Steps from here on out are much the same as they are in the case of updating "
"a vendor branch, though without the updating the vendor branch step."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1572
#, no-wrap
msgid ""
"% git worktree add ../glorbnitz vendor/glorbnitz\n"
"% cd ../glorbnitz\n"
"% git tag --annotate vendor/glorbnitz/3.1415\n"
"# Make sure the commit is good with \"git show\"\n"
"% git push --follow-tags freebsd vendor/glorbnitz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1575
msgid "By 'good' we mean:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1577
msgid "All the right files are present"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1578
msgid "None of the wrong files are present"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1579
msgid "The vendor branch points at something sensible"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1580
msgid "The tag looks good, and is annotated"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1581
msgid ""
"The commit message for the tag has a quick summary of what's new since the "
"last tag"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1582
#, no-wrap
msgid "Time to finally merge it into the base tree"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1591
#, no-wrap
msgid ""
"% cd ../src\n"
"% git subtree add -P contrib/glorbnitz vendor/glorbnitz\n"
"# Make sure the commit is good with \"git show\"\n"
"% git commit --amend # one last sanity check on commit message\n"
"% git push freebsd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1594
msgid "Here 'good' means:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1596
msgid ""
"All the right files, and none of the wrong ones, were merged into contrib/"
"glorbnitz."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1597
msgid "No other changes are in the tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1598
msgid ""
"The commit messages look <<commit-log-message,good>>. It should contain a "
"summary of what's changed since the last merge to the FreeBSD main line and "
"any caveats."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1599
msgid ""
"UPDATING should be updated if there is anything of note, such as user "
"visible changes, important upgrade concerns, etc."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1604
msgid ""
"This hasn't connected `glorbnitz` to the build yet. How so do that is "
"specific to the software being imported and is beyond the scope of this "
"tutorial."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:1606
#, no-wrap
msgid "FreeBSD Src Committer Transition Guide"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1609
msgid ""
"This section is designed to walk people through the conversion process from "
"Subversion to Git, written from the source committer's point of view."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1610
#, no-wrap
msgid "Migrating from a Subversion tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1614
msgid ""
"This section will cover a couple of common scenarios for migrating from "
"using the FreeBSD Subversion repo to the FreeBSD source Git repo. The "
"FreeBSD Git conversion is still in beta status, so some minor things may "
"change between this and going into production."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1617
msgid ""
"The first thing to do is install Git. Any version of Git will do, though the "
"latest one in ports / packages generally will be good. Either build it from "
"ports, or install it using pkg (though some folks might use `su` or `doas` "
"instead of `sudo`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1621
#, no-wrap
msgid "% sudo pkg install git\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1623
#, no-wrap
msgid "No staged changes migration"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1629
msgid ""
"If you have no changes pending, the migration is straightforward. In this, "
"you abandon the Subversion tree and clone the Git repository. It's likely "
"best to retain your Subversion tree, in case there's something you've "
"forgotten about there. First, let's clone the repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1633
#, no-wrap
msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' https://git.freebsd.org/src.git freebsd-src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1641
msgid ""
"will create a clone of the FreeBSD src repository into a subdirectory called "
"`freebsd-src` and include the 'notes' about the revisions. We are currently "
"mirroring the source repository to https://github.com/freebsd/freebsd-src."
"git as well. https://github.com/freebsd/freebsd-legacy.git has the old "
"GitHub mirror with the old hashes should you need that for your migration. "
"The GitHub `master` branch has been frozen. As the default in Git has "
"changed, we've shifted from `master` to `main`; the new repository uses "
"`main`. We also mirror the repository to GitLab at https://gitlab.com/"
"FreeBSD/src.git ."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1646
msgid ""
"It's useful to have the old Subversion revisions available. This data is "
"stored using Git notes, but Git doesn't fetch those by default. The --"
"config and the argument above changed the default to fetch the notes. If "
"you've cloned the repository without this, or wish to add notes to a "
"previously cloned repository, use the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1651
#, no-wrap
msgid ""
"% git config --add remote.freebsd.fetch \"+refs/notes/*:refs/notes/*\"\n"
"% git fetch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1654
msgid ""
"At this point you have the src checked out into a Git tree, ready to do "
"other things."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1655
#, no-wrap
msgid "But I have changes that I've not committed"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1658
msgid ""
"If you are migrating from a tree that has changes you've not yet committed "
"to FreeBSD, you'll need to follow the steps from the previous section first, "
"and then follow these."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1665
#, no-wrap
msgid ""
"% cd path-to-svn-checkout-tree\n"
"% svn diff > /tmp/src.diff\n"
"% cd _mumble_/freebsd-src\n"
"% git checkout -b working\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1669
msgid ""
"This will create a diff of your current changes. The last command creates a "
"branch called `working` though you can call it whatever you want."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1673
#, no-wrap
msgid "% git apply /tmp/src.diff\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1677
msgid ""
"this will apply all your pending changes to the working tree. This doesn't "
"commit the change, so you'll need to make this permanent:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1682
#, no-wrap
msgid ""
"% git add _files_\n"
"% git commit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1687
msgid ""
"The last command will commit these changes to the branch. The editor will "
"prompt you for a commit message. Enter one as if you were committing to "
"FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1689
msgid "At this point, your work is preserved, and in the Git repository."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1690
#, no-wrap
msgid "Keeping current"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1696
msgid ""
"So, time passes. It's time now to update the tree for the latest changes "
"upstream. When you checkout `main` make sure that you have no diffs. It's "
"a lot easier to commit those to a branch (or use `git stash`) before doing "
"the following."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1699
msgid ""
"If you are used to `git pull`, we strongly recommend using the `--ff-only` "
"option, and further setting it as the default option. Alternatively, `git "
"pull --rebase` is useful if you have changes staged in the main branch."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1703
#, no-wrap
msgid "% git config --global pull.ff only\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1706
msgid ""
"You may need to omit the --global if you want this setting to apply to only "
"this repository."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1712
#, no-wrap
msgid ""
"% cd freebsd-src\n"
"% git checkout main\n"
"% git pull (--ff-only|--rebase)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1716
msgid ""
"There is a common trap, that the combination command `git pull` will try to "
"perform a merge, which would sometimes creates a merge commit that didn't "
"exist before. This can be harder to recover from."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1718
msgid "The longer form is also recommended."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1725
#, no-wrap
msgid ""
"% cd freebsd-src\n"
"% git checkout main\n"
"% git fetch freebsd\n"
"% git merge --ff-only freebsd/main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1730
msgid ""
"These commands reset your tree to the main branch, and then update it from "
"where you pulled the tree from originally. It's important to switch to "
"`main` before doing this so it moves forward. Now, it's time to move the "
"changes forward:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1734
#, no-wrap
msgid "% git rebase -i main working\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1741
msgid ""
"This will bring up an interactive screen to change the defaults. For now, "
"just exit the editor. Everything should just apply. If not, then you'll "
"need to resolve the diffs. https://docs.github.com/en/free-pro-team@latest/"
"github/using-git/resolving-merge-conflicts-after-a-git-rebase[This github "
"document] can help you navigate this process."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1743
#, no-wrap
msgid "Time to push changes upstream"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1746
msgid ""
"First, ensure that the push URL is properly configured for the upstream "
"repository."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1750
#: documentation/content/en/articles/committers-guide/_index.adoc:1864
#, no-wrap
msgid "% git remote set-url --push freebsd ssh://git@gitrepo.freebsd.org/src.git\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1754
msgid ""
"Then, verify that user name and email are configured right. We require that "
"they exactly match the passwd entry in FreeBSD cluster."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1756
msgid "Use"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1760
#, no-wrap
msgid "freefall% gen-gitconfig.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1763
msgid ""
"on freefall.freebsd.org to get a recipe that you can use directly, assuming /"
"usr/local/bin is in the PATH."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1768
msgid ""
"The below command merges the `working` branch into the upstream main line. "
"It's important that you curate your changes to be just like you want them in "
"the FreeBSD source repo before doing this. This syntax pushes the `working` "
"branch to main, moving the `main` branch forward. You will only be able to "
"do this if this results in a linear change to `main` (e.g. no merges)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1772
#, no-wrap
msgid "% git push freebsd working:main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1775
msgid ""
"If your push is rejected due to losing a commit race, rebase your branch "
"before trying again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1782
#, no-wrap
msgid ""
"% git checkout working\n"
"% git fetch freebsd\n"
"% git rebase freebsd/main\n"
"% git push freebsd working:main\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1785
#, no-wrap
msgid "Time to push changes upstream (alternative)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1790
msgid ""
"Some people find it easier to merge their changes to their local `main` "
"before pushing to the remote repository. Also, `git arc stage` moves "
"changes from a branch to the local `main` when you need to do a subset of a "
"branch. The instructions are similar to the prior section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1795
#, no-wrap
msgid ""
"% git checkout main\n"
"% git merge --ff-only `working`\n"
"% git push freebsd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1798
msgid "If you lose the race, then try again with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1802
#, no-wrap
msgid ""
"% git pull --rebase\n"
"% git push freebsd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1805
msgid ""
"These commands will fetch the most recent `freebsd/main` and then rebase the "
"local `main` changes on top of that, which is what you want when you lose "
"the commit race. Note: merging vendor branch commits will not work with "
"this technique."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1806
#, no-wrap
msgid "Finding the Subversion Revision"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1810
msgid ""
"You'll need to make sure that you've fetched the notes (see the `No staged "
"changes migration` section above for details. Once you have these, notes "
"will show up in the git log command like so:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1814
#, no-wrap
msgid "% git log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1817
msgid "If you have a specific version in mind, you can use this construct:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1821
#, no-wrap
msgid "% git log --grep revision=XXXX\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1825
msgid ""
"to find the specific revision. The hex number after 'commit' is the hash "
"you can use to refer to this commit."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1826
#, no-wrap
msgid "Migrating from GitHub fork"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1832
msgid ""
"Note: as of this writing, https://github.com/freebsd/freebsd-src is "
"mirroring all official branches, along with a `master` branch which is the "
"legacy svn2git result. The `master` branch will not be updated anymore, and "
"the link:https://github.com/freebsd/freebsd-src/commit/"
"de1aa3dab23c06fec962a14da3e7b4755c5880cf[last commit] contains the "
"instructions for migrating to the new `main` branch. We'll retain the "
"`master` branch for a certain time, but in the future it will only be kept "
"in the link:https://github.com/freebsd/freebsd-legacy[freebsd-legacy] "
"repository. In addition, link:https://github.com/freebsd/git_conv/wiki/"
"Migrating-merge-based-project-from-legacy-git-tree[this article] has an "
"earlier version of the last commit instructions that may be helpful."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1836
msgid ""
"When migrating branches from a GitHub fork from the old GitHub mirror to the "
"official repo, the process is straight forward. This assumes that you have "
"a `freebsd` upstream pointing to GitHub, adjust if necessary. This also "
"assumes a clean tree before starting..."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1837
#, no-wrap
msgid "Add the new `freebsd` upstream repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1844
#, no-wrap
msgid ""
"% git remote add freebsd https://git.freebsd.org/src.git\n"
"% git fetch freebsd\n"
"% git checkout --track freebsd/main\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1846
#, no-wrap
msgid "Rebase all your WIP branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1849
msgid ""
"For each branch FOO, do the following after fetching the `freebsd` sources "
"and creating a local `main` branch with the above checkout:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1853
#, no-wrap
msgid "% git rebase -i freebsd/master FOO --onto main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1857
msgid ""
"And you'll now be tracking the official repository. You can then follow the "
"`Keeping Current` section above to stay up to date."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1860
msgid ""
"If you need to then commit work to FreeBSD, you can do so following the "
"`Time to push changes upstream` instructions. You'll need to do the "
"following once to update the push URL if you are a FreeBSD committer:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1867
msgid ""
-"(note that gitrepo.freebsd.org will be change to repo.freebsd.org in the "
-"future.)"
+"(Note that gitrepo.freebsd.org now points to the same addresses as repo."
+"freebsd.org.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1870
msgid ""
"You will also need to add `freebsd` as the location to push to. The author "
"recommends that your upstream GitHub repository remain the default push "
"location so that you only push things into FreeBSD you intend to by making "
"it explicit."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:1872
#, no-wrap
msgid "Git FAQ"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1875
msgid ""
"This section provides a number of targeted answers to questions that are "
"likely to come up often for users and developers."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1880
msgid ""
"We use the common convention of having the origin for the FreeBSD repository "
"being 'freebsd' rather than the default 'origin' to allow people to use that "
"for their own development and to minimize \"whoops\" pushes to the wrong "
"repository."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1882
#, no-wrap
msgid "Users"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1884
#, no-wrap
msgid "How do I track -current and -stable with only one copy of the repository?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1889
#, no-wrap
msgid ""
"**Q:** Although disk space is not a huge issue, it's more efficient to use only one copy of the repository.\n"
"With SVN mirroring, I could checkout multiple trees from the same repository.\n"
"How do I do this with Git?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1893
#, no-wrap
msgid ""
"**A:** You can use Git worktrees.\n"
"There's a number of ways to do this, but the simplest way is to use a clone to track -current, and a worktree to track stable releases.\n"
"While using a 'bare repository' has been put forward as a way to cope, it's more complicated and will not be documented here.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1896
msgid ""
"First, you need to clone the FreeBSD repository, shown here cloning into "
"`freebsd-current` to reduce confusion. $URL is whatever mirror works best "
"for you:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1900
#, no-wrap
msgid "% git clone -o freebsd --config remote.freebsd.fetch='+refs/notes/*:refs/notes/*' $URL freebsd-current\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1903
msgid "then once that's cloned, you can simply create a worktree from it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1908
#, no-wrap
msgid ""
"% cd freebsd-current\n"
"% git worktree add ../freebsd-stable-12 stable/12\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1912
msgid ""
"this will checkout `stable/12` into a directory named `freebsd-stable-12` "
"that's a peer to the `freebsd-current` directory. Once created, it's "
"updated very similarly to how you might expect:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1922
#, no-wrap
msgid ""
"% cd freebsd-current\n"
"% git checkout main\n"
"% git pull --ff-only\n"
"# changes from upstream now local and current tree updated\n"
"% cd ../freebsd-stable-12\n"
"% git merge --ff-only freebsd/stable/12\n"
"# now your stable/12 is up to date too\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1925
msgid ""
"I recommend using `--ff-only` because it's safer and you avoid accidentally "
"getting into a 'merge nightmare' where you have an extra change in your "
"tree, forcing a complicated merge rather than a simple one."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1927
msgid ""
"Here's https://adventurist.me/posts/00296[a good writeup] that goes into "
"more detail."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:1928
#, no-wrap
msgid "Developers"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1930
#, no-wrap
msgid "Ooops! I committed to `main` instead of a branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1933
#, no-wrap
msgid "**Q:** From time to time, I goof up and commit to main instead of to a branch. What do I do?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1935
#, no-wrap
msgid "**A:** First, don't panic.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1939
msgid ""
"Second, don't push. In fact, you can fix almost anything if you haven't "
"pushed. All the answers in this section assume no push has happened."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1941
msgid ""
"The following answer assumes you committed to `main` and want to create a "
"branch called `issue`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1947
#, no-wrap
msgid ""
"% git branch issue # Create the 'issue' branch\n"
"% git reset --hard freebsd/main # Reset 'main' back to the official tip\n"
"% git checkout issue # Back to where you were\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:1949
#, no-wrap
msgid "Ooops! I committed something to the wrong branch!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1953
#, no-wrap
msgid ""
"**Q:** I was working on feature on the `wilma` branch, but accidentally committed a change relevant to the `fred` branch in 'wilma'.\n"
"What do I do?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1957
#, no-wrap
msgid ""
"**A:** The answer is similar to the previous one, but with cherry picking.\n"
"This assumes there's only one commit on wilma, but will generalize to more complicated situations.\n"
"It also assumes that it's the last commit on wilma (hence using wilma in the `git cherry-pick` command), but that too can be generalized.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1965
#, no-wrap
msgid ""
"# We're on branch wilma\n"
"% git checkout fred\t\t# move to fred branch\n"
"% git cherry-pick wilma\t\t# copy the misplaced commit\n"
"% git checkout wilma\t\t# go back to wilma branch\n"
"% git reset --hard HEAD^\t# move what wilma refers to back 1 commit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1969
msgid ""
"Git experts would first rewind the wilma branch by 1 commit, switch over to "
"fred and then use `git reflog` to see what that 1 deleted commit was and "
"cherry-pick it over."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1971
#, no-wrap
msgid "**Q:** But what if I want to commit a few changes to `main`, but keep the rest in `wilma` for some reason?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1977
#, no-wrap
msgid ""
"**A:** The same technique above also works if you are wanting to 'land' parts of the branch you are working on into `main` before the rest of the branch is ready (say you noticed an unrelated typo, or fixed an incidental bug).\n"
"You can cherry pick those changes into main, then push to the parent repository.\n"
"Once you've done that, cleanup couldn't be simpler: just `git rebase -i`.\n"
"Git will notice you've done this and skip the common changes automatically (even if you had to change the commit message or tweak the commit slightly).\n"
"There's no need to switch back to wilma to adjust it: just rebase!\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1979
#, no-wrap
msgid "**Q:** I want to split off some changes from branch `wilma` into branch `fred`\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1985
#, no-wrap
msgid ""
"**A:** The more general answer would be the same as the previous.\n"
"You'd checkout/create the `fred` branch, cherry pick the changes you want from `wilma` one at a time, then rebase `wilma` to remove those changes you cherry picked.\n"
"`git rebase -i main wilma` will toss you into an editor, and remove the `pick` lines that correspond to the commits you copied to `fred`.\n"
"If all goes well, and there are no conflicts, you're done.\n"
"If not, you'll need to resolve the conflicts as you go.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:1990
msgid ""
"The other way to do this would be to checkout `wilma` and then create the "
"branch `fred` to point to the same point in the tree. You can then `git "
"rebase -i` both these branches, selecting the changes you want in `fred` or "
"`wilma` by retaining the pick likes, and deleting the rest from the editor. "
"Some people would create a tag/branch called `pre-split` before starting in "
"case something goes wrong in the split. You can undo it with the following "
"sequence:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:1997
#, no-wrap
msgid ""
"% git checkout pre-split\t# Go back\n"
"% git branch -D fred\t\t# delete the fred branch\n"
"% git checkout -B wilma\t\t# reset the wilma branch\n"
"% git branch -d pre-split\t# Pretend it didn't happen\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2001
msgid ""
"The last step is optional. If you are going to try again to split, you'd "
"omit it."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2005
#, no-wrap
msgid ""
"**Q:** But I did things as I read along and didn't see your advice at the end to create a branch, and now `fred` and `wilma` are all screwed up.\n"
"How do I find what `wilma` was before I started.\n"
"I don't know how many times I moved things around.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2007
#, no-wrap
msgid "**A:** All is not lost. You can figure out it, so long as it hasn't been too long, or too many commits (hundreds).\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2011
msgid ""
"So I created a wilma branch and committed a couple of things to it, then "
"decided I wanted to split it into fred and wilma. Nothing weird happened "
"when I did that, but let's say it did. The way to look at what you've done "
"is with the `git reflog`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2026
#, no-wrap
msgid ""
"% git reflog\n"
"6ff9c25 (HEAD -> wilma) HEAD@{0}: rebase -i (finish): returning to refs/heads/wilma\n"
"6ff9c25 (HEAD -> wilma) HEAD@{1}: rebase -i (start): checkout main\n"
"869cbd3 HEAD@{2}: rebase -i (start): checkout wilma\n"
"a6a5094 (fred) HEAD@{3}: rebase -i (finish): returning to refs/heads/fred\n"
"a6a5094 (fred) HEAD@{4}: rebase -i (pick): Encourage contributions\n"
"1ccd109 (freebsd/main, main) HEAD@{5}: rebase -i (start): checkout main\n"
"869cbd3 HEAD@{6}: rebase -i (start): checkout fred\n"
"869cbd3 HEAD@{7}: checkout: moving from wilma to fred\n"
"869cbd3 HEAD@{8}: commit: Encourage contributions\n"
"...\n"
"%\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2034
msgid ""
"Here we see the changes I've made. You can use it to figure out where "
"things went wrong. I'll just point out a few things here. The first one is "
"that HEAD@{X} is a 'commitish' thing, so you can use that as an argument to "
"a command. Although if that command commits anything to the repository, the "
"X numbers change. You can also use the hash (first column)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2042
msgid ""
"Next, 'Encourage contributions' was the last commit I made to `wilma` before "
"I decided to split things up. You can also see the same hash is there when "
"I created the `fred` branch to do that. I started by rebasing `fred` and "
"you see the 'start', each step, and the 'finish' for that process. While we "
"don't need it here, you can figure out exactly what happened. Fortunately, "
"to fix this, you can follow the prior answer's steps, but with the hash "
"`869cbd3` instead of `pre-split`. While that seems a bit verbose, it's easy "
"to remember since you're doing one thing at a time. You can also stack:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2047
#, no-wrap
msgid ""
"% git checkout -B wilma 869cbd3\n"
"% git branch -D fred\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2054
msgid ""
"and you are ready to try again. The 'checkout -B' with the hash combines "
"checking out and creating a branch for it. The -B instead of -b forces the "
"movement of a pre-existing branch. Either way works, which is what's great "
"(and awful) about Git. One reason I tend to use `git checkout -B xxxx hash` "
"instead of checking out the hash, and then creating / moving the branch is "
"purely to avoid the slightly distressing message about detached heads:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2060
#, no-wrap
msgid ""
"% git checkout 869cbd3\n"
"M\tfaq.md\n"
"Note: checking out '869cbd3'.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2064
#, no-wrap
msgid ""
"You are in 'detached HEAD' state. You can look around, make experimental\n"
"changes and commit them, and you can discard any commits you make in this\n"
"state without impacting any branches by performing another checkout.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2072
#, no-wrap
msgid ""
"HEAD is now at 869cbd3 Encourage contributions\n"
"% git checkout -B wilma\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2075
msgid ""
"this produces the same effect, but I have to read a lot more and severed "
"heads aren't an image I like to contemplate."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:2076
#, no-wrap
msgid "Ooops! I did a `git pull` and it created a merge commit, what do I do?"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2080
#, no-wrap
msgid ""
"**Q:** I was on autopilot and did a `git pull` for my development tree and that created a merge commit on the mainline.\n"
"How do I recover?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2082
#, no-wrap
msgid "**A:** This can happen when you invoke the pull with your development branch checked out.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2085
msgid ""
"Right after the pull, you will have the new merge commit checked out. Git "
"supports a `HEAD^#` syntax to examine the parents of a merge commit:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2090
#, no-wrap
msgid ""
"git log --oneline HEAD^1 # Look at the first parent's commits\n"
"git log --oneline HEAD^2 # Look at the second parent's commits\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2094
msgid ""
"From those logs, you can easily identify which commit is your development "
"work. Then you simply reset your branch to the corresponding `HEAD^#`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2098
#, no-wrap
msgid "git reset --hard HEAD^2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2101
#, no-wrap
msgid "**Q:** But I also need to fix my `main` branch. How do I do that?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2104
#, no-wrap
msgid ""
"**A:** Git keeps track of the remote repository branches in a `freebsd/` namespace.\n"
"To fix your `main` branch, just make it point to the remote's `main`:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2108
#, no-wrap
msgid "git branch -f main freebsd/main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2113
msgid ""
"There's nothing magical about branches in Git: they are just labels on a "
"graph that are automatically moved forward by making commits. So the above "
"works because you're just moving a label. There's no metadata about the "
"branch that needs to be preserved due to this."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/committers-guide/_index.adoc:2114
#, no-wrap
msgid "Mixing and matching branches"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2118
#, no-wrap
msgid ""
"**Q:** So I have two branches `worker` and `async` that I'd like to combine into one branch called `feature`\n"
"while maintaining the commits in both.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2120
#, no-wrap
msgid "**A:** This is a job for cherry pick.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2126
#, no-wrap
msgid ""
"% git checkout worker\n"
"% git checkout -b feature\t# create a new branch\n"
"% git cherry-pick main..async\t# bring in the changes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2131
msgid ""
"You now have a new branch called `feature`. This branch combines commits "
"from both branches. You can further curate it with `git rebase`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2133
#, no-wrap
msgid "**Q:** I have a branch called `driver` and I'd like to break it up into `kernel` and `userland` so I can evolve them separately and commit each branch as it becomes ready.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2136
#, no-wrap
msgid ""
"**A:** This takes a little bit of prep work, but `git rebase` will do the heavy\n"
"lifting here.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2142
#, no-wrap
msgid ""
"% git checkout driver\t\t# Checkout the driver\n"
"% git checkout -b kernel\t# Create kernel branch\n"
"% git checkout -b userland\t# Create userland branch\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2147
msgid ""
"Now you have two identical branches. So, it's time to separate out the "
"commits. We'll assume first that all the commits in `driver` go into either "
"the `kernel` or the `userland` branch, but not both."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2151
#, no-wrap
msgid "% git rebase -i main kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2154
msgid ""
"and just include the changes you want (with a 'p' or 'pick' line) and just "
"delete the commits you don't (this sounds scary, but if worse comes to "
"worse, you can throw this all away and start over with the `driver` branch "
"since you've not yet moved it)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2158
#, no-wrap
msgid "% git rebase -i main userland\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2161
msgid "and do the same thing you did with the `kernel` branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2164
#, no-wrap
msgid ""
"**Q:** Oh great! I followed the above and forgot a commit in the `kernel` branch.\n"
"How do I recover?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2167
#, no-wrap
msgid ""
"**A:** You can use the `driver` branch to find the hash of the commit is missing and\n"
"cherry pick it.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2173
#, no-wrap
msgid ""
"% git checkout kernel\n"
"% git log driver\n"
"% git cherry-pick $HASH\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2179
#, no-wrap
msgid ""
"**Q:** OK. I have the same situation as the above, but my commits are all mixed up.\n"
"I need parts of one commit to go to one branch and the rest to go to the other.\n"
"In fact, I have several.\n"
"Your rebase method to select sounds tricky.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2182
#, no-wrap
msgid ""
"**A:** In this situation, you'd be better off to curate the original branch to separate\n"
"out the commits, and then use the above method to split the branch.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2187
msgid ""
"So let's assume that there's just one commit with a clean tree. You can "
"either use `git rebase` with an `edit` line, or you can use this with the "
"commit on the tip. The steps are the same either way. The first thing we "
"need to do is to back up one commit while leaving the changes uncommitted in "
"the tree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2191
#, no-wrap
msgid "% git reset HEAD^\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2194
msgid ""
"Note: Do not, repeat do not, add `--hard` here since that also removes the "
"changes from your tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2198
msgid ""
"Now, if you are lucky, the change needing to be split up falls entirely "
"along file lines. In that case you can just do the usual `git add` for the "
"files in each group than do a `git commit`. Note: when you do this, you'll "
"lose the commit message when you do the reset, so if you need it for some "
"reason, you should save a copy (though `git log $HASH` can recover it)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2201
msgid ""
"If you are not lucky, you'll need to split apart files. There's another "
"tool to do that which you can apply one file at a time."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2205
#, no-wrap
msgid "git add -i foo/bar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2211
msgid ""
"will step through the diffs, prompting you, one at time, whether to include "
"or exclude the hunk. Once you're done, `git commit` and you'll have the "
"remainder in your tree. You can run it multiple times as well, and even "
"over multiple files (though I find it easier to do one file at a time and "
"use the `git rebase -i` to fold the related commits together)."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/committers-guide/_index.adoc:2212
#, no-wrap
msgid "Cloning and Mirroring"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2215
#, no-wrap
msgid "**Q:** I'd like to mirror the entire Git repository, how do I do that?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2217
#, no-wrap
msgid "**A:** If all you want to do is mirror, then\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2221
#, no-wrap
msgid "% git clone --mirror $URL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2225
msgid ""
"will do the trick. However, there are two disadvantages to this if you want "
"to use it for anything other than a mirror you'll reclone."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2229
msgid ""
"First, this is a 'bare repository' which has the repository database, but no "
"checked out worktree. This is great for mirroring, but terrible for day to "
"day work. There's a number of ways around this with 'git worktree':"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2237
#, no-wrap
msgid ""
"% git clone --mirror https://git.freebsd.org/ports.git ports.git\n"
"% cd ports.git\n"
"% git worktree add ../ports main\n"
"% git worktree add ../quarterly branches/2020Q4\n"
"% cd ../ports\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2240
msgid ""
"But if you aren't using your mirror for further local clones, then it's a "
"poor match."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2243
msgid ""
"The second disadvantage is that Git normally rewrites the refs (branch name, "
"tags, etc) from upstream so that your local refs can evolve independently of "
"upstream. This means that you'll lose changes if you are committing to this "
"repository on anything other than private project branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2245
#, no-wrap
msgid "**Q:** So what can I do instead?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2248
#, no-wrap
msgid ""
"**A:** Well, you can stuff all of the upstream repository's refs into a private namespace in your local repository.\n"
"Git clones everything via a 'refspec' and the default refspec is:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2252
#, no-wrap
msgid " fetch = +refs/heads/*:refs/remotes/freebsd/*\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2255
msgid "which says just fetch the branch refs."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2259
msgid ""
"However, the FreeBSD repository has a number of other things in it. To see "
"those, you can add explicit refspecs for each ref namespace, or you can "
"fetch everything. To setup your repository to do that:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2263
#, no-wrap
msgid "git config --add remote.freebsd.fetch '+refs/*:refs/freebsd/*'\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2267
msgid ""
"which will put everything in the upstream repository into your local "
"repository's 'refs/freebsd/' namespace. Please note, that this also grabs "
"all the unconverted vendor branches and the number of refs associated with "
"them is quite large."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2269
msgid ""
"You'll need to refer to these 'refs' with their full name because they "
"aren't in and of Git's regular namespaces."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2273
#, no-wrap
msgid "git log refs/freebsd/vendor/zlib/1.2.10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2276
msgid ""
"would look at the log for the vendor branch for zlib starting at 1.2.10."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:2277
#, no-wrap
msgid "Collaborating with others"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2281
msgid ""
"One of the keys to good software development on a project as large as "
"FreeBSD is the ability to collaborate with others before you push your "
"changes to the tree. The FreeBSD project's Git repositories do not, yet, "
"allow user-created branches to be pushed to the repository, and therefore if "
"you wish to share your changes with others you must use another mechanism, "
"such as a hosted GitLab or GitHub, in order to share changes in a user-"
"generated branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2283
msgid ""
"The following instructions show how to set up a user-generated branch, based "
"on the FreeBSD main branch, and push it to GitHub."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2285
msgid ""
"Before you begin, make sure that your local Git repo is up to date and has "
"the correct origins set <<keeping_current,as shown above.>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2292
msgid ""
"```` % git remote -v freebsd https://git.freebsd.org/src.git (fetch) "
"freebsd ssh://git@gitrepo.freebsd.org/src.git (push) ````"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2295
msgid ""
"The first step is to create a fork of https://github.com/freebsd/freebsd-"
"src[FreeBSD] on GitHub following these https://docs.github.com/en/github/"
"getting-started-with-github/fork-a-repo[guidelines]. The destination of the "
"fork should be your own, personal, GitHub account (gvnn3 in my case)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2297
msgid "Now add a remote on your local system that points to your fork:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2305
#, no-wrap
msgid ""
"% git remote add github git@github.com:gvnn3/freebsd-src.git\n"
"% git remote -v\n"
"github\tgit@github.com:gvnn3/freebsd-src.git (fetch)\n"
"github\tgit@github.com:gvnn3/freebsd-src.git (push)\n"
"freebsd\thttps://git.freebsd.org/src.git (fetch)\n"
"freebsd\tssh://git@gitrepo.freebsd.org/src.git (push)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2307
msgid ""
"With this in place you can create a branch <<keeping_a_local_branch,as shown "
"above.>>"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2311
#, no-wrap
msgid "% git checkout -b gnn-pr2001-fix\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2315
msgid ""
"Make whatever modifications you wish in your branch. Build, test, and once "
"you're ready to collaborate with others it's time to push your changes into "
"your hosted branch. Before you can push you'll have to set the appropriate "
-"upstream, as Git will tell you the first time you try to push to your +github"
-"+ remote:"
+"upstream, as Git will tell you the first time you try to push to your "
+"+github+ remote:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2321
#, no-wrap
msgid ""
"% git push github\n"
"fatal: The current branch gnn-pr2001-fix has no upstream branch.\n"
"To push the current branch and set the remote as upstream, use\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2323
#, no-wrap
msgid " git push --set-upstream github gnn-pr2001-fix\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2326
msgid "Setting the push as +git+ advises allows it to succeed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2344
#, no-wrap
msgid ""
"% git push --set-upstream github gnn-feature\n"
"Enumerating objects: 20486, done.\n"
"Counting objects: 100% (20486/20486), done.\n"
"Delta compression using up to 8 threads\n"
"Compressing objects: 100% (12202/12202), done.\n"
"Writing objects: 100% (20180/20180), 56.25 MiB | 13.15 MiB/s, done.\n"
"Total 20180 (delta 11316), reused 12972 (delta 7770), pack-reused 0\n"
"remote: Resolving deltas: 100% (11316/11316), completed with 247 local objects.\n"
"remote:\n"
"remote: Create a pull request for 'gnn-feature' on GitHub by visiting:\n"
"remote: https://github.com/gvnn3/freebsd-src/pull/new/gnn-feature\n"
"remote:\n"
"To github.com:gvnn3/freebsd-src.git\n"
" * [new branch] gnn-feature -> gnn-feature\n"
"Branch 'gnn-feature' set up to track remote branch 'gnn-feature' from 'github'.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2347
msgid "Subsequent changes to the same branch will push correctly by default:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2360
#, no-wrap
msgid ""
"% git push\n"
"Enumerating objects: 4, done.\n"
"Counting objects: 100% (4/4), done.\n"
"Delta compression using up to 8 threads\n"
"Compressing objects: 100% (2/2), done.\n"
"Writing objects: 100% (3/3), 314 bytes | 1024 bytes/s, done.\n"
"Total 3 (delta 1), reused 1 (delta 0), pack-reused 0\n"
"remote: Resolving deltas: 100% (1/1), completed with 1 local object.\n"
"To github.com:gvnn3/freebsd-src.git\n"
" 9e5243d7b659..cf6aeb8d7dda gnn-feature -> gnn-feature\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2364
msgid ""
"At this point your work is now in your branch on +GitHub+ and you can share "
"the link with other collaborators."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:2366
#, no-wrap
msgid "Landing a github pull request"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2371
msgid ""
"This section documents how to land a GitHub pull request that's submitted "
"against the FreeBSD Git mirrors at GitHub. While this is not an official "
"way to submit patches at this time, sometimes good fixes come in this way "
"and it is easiest just to bring them into a committer's tree and have them "
"pushed into the FreeBSD's tree from there. Similar steps can be used to "
"pull branches from other repositories and land those. When committing pull "
"requests from others, one should take extra care to examine all the changes "
"to ensure they are exactly as represented."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2374
msgid ""
"Before beginning, make sure that the local Git repo is up to date and has "
"the correct origins set <<keeping_current,as shown above.>> In addition, "
"make sure to have the following origins:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2381
#, no-wrap
msgid ""
"% git remote -v\n"
"freebsd https://git.freebsd.org/src.git (fetch)\n"
"freebsd ssh://git@gitrepo.freebsd.org/src.git (push)\n"
"github https://github.com/freebsd/freebsd-src (fetch)\n"
"github https://github.com/freebsd/freebsd-src (fetch)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2396
msgid ""
"Often pull requests are simple: requests that contain only a single commit. "
"In this case, a streamlined approach may be used, though the approach in the "
"prior section will also work. Here, a branch is created, the change is "
"cherry picked, the commit message adjusted, and sanity-checked before being "
"pushed. The branch `staging` is used in this example but it can be any "
"name. This technique works for any number of commits in the pull request, "
"especially when the changes apply cleanly to the FreeBSD tree. However, "
"when there's multiple commits, especially when minor adjustments are needed, "
"`git rebase -i` works better than `git cherry-pick`. Briefly, these "
"commands create a branch; cherry-picks the changes from the pull request; "
"tests it; adjusts the commit messages; and fast forward merges it back to "
"`main`. The PR number is `$PR` below. When adjusting the message, add "
"`Pull Request: https://github.com/freebsd-src/pull/$PR`. All pull requests "
"committed to the FreeBSD repository should be reviewed by at least one "
"person. This need not be the person committing it, but in that case the "
"person committing it should trust the other reviewers competence to review "
"the commit. Committers that do a code review of pull requests before "
"pushing them into the repo should add a `Reviewed by:` line to the commit, "
"because in this case it is not implicit. Add anybody that reviews and "
"approves the commit on github to `Reviewed by:` as well. As always, care "
"should be taken to ensure the change does what it is supposed to, and that "
"no malicious code is present."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/articles/committers-guide/_index.adoc:2400
msgid ""
"In addition, please check to make sure that the pull request author name is "
"not anonymous. Github's web editing interface generates names like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2403
#, no-wrap
msgid "Author: github-user <38923459+github-user@users.noreply.github.com>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2406
msgid ""
"A polite request to the author for a better name and/or email should be "
"made. Extra care should be taken to ensure no style issue or malicious code "
"is introduced."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2419
#, no-wrap
msgid ""
"% git fetch github pull/$PR/head:staging\n"
"% git rebase -i main staging\t# to move the staging branch forward, adjust commit message here\n"
"<do testing here, as needed>\n"
"% git checkout main\n"
"% git pull --ff-only\t\t# to get the latest if time has passed\n"
"% git checkout main\n"
"% git merge --ff-only staging\n"
"<test again if needed>\n"
"% git push freebsd --push-option=confirm-author\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2424
msgid ""
"For complicated pull requests that have multiple commits with conflicts, "
"follow the following outline."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2426
msgid "checkout the pull request `git checkout github/pull/XXX`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2427
msgid "create a branch to rebase `git checkout -b staging`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2428
msgid ""
"rebase the `staging` branch to the latest `main` with `git rebase -i main "
"staging`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2429
msgid "resolve conflicts and do whatever testing is needed"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2430
msgid "fast forward the `staging` branch into `main` as above"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2431
msgid "final sanity check of changes to make sure all is well"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2432
msgid "push to FreeBSD's Git repository."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2434
msgid ""
"This will also work when bringing branches developed elsewhere into the "
"local tree for committing."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2437
msgid ""
"Once finished with the pull request, close it using GitHub's web interface. "
"It is worth noting that if your `github` origin uses `https://`, the only "
"step you'll need a GitHub account for is closing the pull request."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:2439
#, no-wrap
msgid "Version Control History"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2442
msgid "The project has moved to <<git-primer,git>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2448
msgid ""
"The FreeBSD source repository switched from CVS to Subversion on May 31st, "
"2008. The first real SVN commit is __r179447__. The source repository "
"switched from Subversion to Git on December 23rd, 2020. The last real svn "
"commit is __r368820__. The first real git commit hash is "
"__5ef5f51d2bef80b0ede9b10ad5b0e9440b60518c__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2454
msgid ""
"The FreeBSD `doc/www` repository switched from CVS to Subversion on May "
"19th, 2012. The first real SVN commit is __r38821__. The documentation "
"repository switched from Subversion to Git on December 8th, 2020. The last "
"SVN commit is __r54737__. The first real git commit hash is "
"__3be01a475855e7511ad755b2defd2e0da5d58bbe__."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2460
msgid ""
"The FreeBSD `ports` repository switched from CVS to Subversion on July 14th, "
"2012. The first real SVN commit is __r300894__. The ports repository "
"switched from Subversion to Git on April 6, 2021. The last SVN commit is "
"__r569609__ The first real git commit hash is "
"__ed8d3eda309dd863fb66e04bccaa513eee255cbf__."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/committers-guide/_index.adoc:2462
#, no-wrap
msgid "Setup, Conventions, and Traditions"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2467
msgid ""
"There are a number of things to do as a new developer. The first set of "
"steps is specific to committers only. These steps must be done by a mentor "
"for those who are not committers."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/committers-guide/_index.adoc:2469
#, no-wrap
msgid "For New Committers"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2472
msgid ""
"Those who have been given commit rights to the FreeBSD repositories must "
"follow these steps."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2474
msgid "Get mentor approval before committing each of these changes!"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2475
msgid ""
"All [.filename]#src# commits go to FreeBSD-CURRENT first before being merged "
"to FreeBSD-STABLE. The FreeBSD-STABLE branch must maintain ABI and API "
"compatibility with earlier versions of that branch. Do not merge changes "
"that break this compatibility."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2480
#, no-wrap
msgid "*Steps for New Committers*\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2482
msgid "Add an Author Entity"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2484
msgid ""
"[.filename]#doc/shared/authors.adoc# - Add an author entity. Later steps "
"depend on this entity, and missing this step will cause the [.filename]#doc/"
"# build to fail. This is a relatively easy task, but remains a good first "
"test of version control skills."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2485
msgid "Update the List of Developers and Contributors"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2487
msgid ""
"[.filename]#doc/shared/contrib-committers.adoc# - Add an entry, which will "
"then appear in the \"Developers\" section of the extref:{contributors}"
"[Contributors List, staff-committers]. Entries are sorted by last name."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2489
msgid ""
"[.filename]#doc/shared/contrib-additional.adoc# - _Remove_ the entry. "
"Entries are sorted by first name."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2490
msgid "Add a News Item"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2492
msgid ""
"[.filename]#doc/website/data/en/news/news.toml# - Add an entry. Look for the "
"other entries that announce new committers and follow the format. Use the "
"date from the commit bit approval email from mailto:core@FreeBSD."
"org[core@FreeBSD.org]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2493
msgid "Add a PGP Key"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2495
msgid ""
"`{des}` has written a shell script ([.filename]#doc/documentation/tools/"
"addkey.sh#) to make this easier. See the https://cgit.freebsd.org/doc/plain/"
"documentation/static/pgpkeys/README[README] file for more information."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2497
msgid ""
"Use [.filename]#doc/documentation/tools/checkkey.sh# to verify that keys "
"meet minimal best-practices standards."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/committers-guide/_index.adoc:2499
msgid ""
"After adding and checking a key, add both updated files to source control "
"and then commit them. Entries in this file are sorted by last name."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/articles/committers-guide/_index.adoc:2503
msgid ""
"It is very important to have a current PGP/GnuPG key in the repository. The "
"key may be required for positive identification of a committer. For example, "
"the `{admins}` might need it for account recovery. A complete keyring of "
"`FreeBSD.org` users is available for download from link:https://docs.FreeBSD."
"org/pgpkeys/pgpkeys.txt[https://docs.FreeBSD.org/pgpkeys/pgpkeys.txt]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2505
msgid "Update Mentor and Mentee Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2507
msgid ""
"[.filename]#src/share/misc/committers-<repository>.dot# - Add an entry to "
"the current committers section, where _repository_ is `doc`, `ports`, or "
"`src`, depending on the commit privileges granted."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2509
msgid ""
"Add an entry for each additional mentor/mentee relationship in the bottom "
"section."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2510
msgid "Generate a Kerberos Password"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2512
msgid ""
-"See <<kerberos-ldap>> to generate or set a Kerberos for use with other "
-"FreeBSD services like the bug tracking database."
+"See <<kerberos-ldap>> to generate or set a Kerberos account for use with "
+"other FreeBSD services like the link:https://bugs.freebsd.org/bugzilla/[bug-"
+"tracking database] (you get a bug-tracking account as part of that step)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/committers-guide/_index.adoc:2513
msgid "Optional: Enable Wiki Account"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2515
+#: documentation/content/en/articles/committers-guide/_index.adoc:2517
msgid ""
-"https://wiki.freebsd.org[FreeBSD Wiki] Account - A wiki account allows "
-"sharing projects and ideas. Those who do not yet have an account can follow "
-"instructions on the https://wiki.freebsd.org/AboutWiki[AboutWiki Page] to "
-"obtain one. Contact mailto:wiki-admin@FreeBSD.org[wiki-admin@FreeBSD.org] if "
-"you need help with your Wiki account."
+"link:https://wiki.freebsd.org[FreeBSD Wiki] Account - A wiki account allows "
+"sharing projects and ideas. Those who do not yet have an account can follow "
+"instructions on the link:https://wiki.freebsd.org/Wiki/About[Wiki/About "
+"page] to obtain one. Contact mailto:wiki-admin@FreeBSD.org[wiki-"
+"admin@FreeBSD.org] if you need help with your Wiki account."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2516
+#: documentation/content/en/articles/committers-guide/_index.adoc:2518
msgid "Optional: Update Wiki Information"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2518
+#: documentation/content/en/articles/committers-guide/_index.adoc:2520
msgid ""
"Wiki Information - After gaining access to the wiki, some people add entries "
"to the https://wiki.freebsd.org/HowWeGotHere[How We Got Here], https://wiki."
-"freebsd.org/IRC/Nicknames[IRC Nicks], and https://wiki.freebsd.org/Community/"
-"Dogs[Dogs of FreeBSD] pages."
+"freebsd.org/IRC/Nicknames[IRC Nicks], https://wiki.freebsd.org/Community/"
+"Dogs[Dogs of FreeBSD], and or https://wiki.freebsd.org/Community/Cats[Cats "
+"of FreeBSD] pages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2519
+#: documentation/content/en/articles/committers-guide/_index.adoc:2521
msgid "Optional: Update Ports with Personal Information"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2521
+#: documentation/content/en/articles/committers-guide/_index.adoc:2523
msgid ""
"[.filename]#ports/astro/xearth/files/freebsd.committers.markers# and [."
"filename]#src/usr.bin/calendar/calendars/calendar.freebsd# - Some people add "
"entries for themselves to these files to show where they are located or the "
"date of their birthday."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2522
+#: documentation/content/en/articles/committers-guide/_index.adoc:2524
msgid "Optional: Prevent Duplicate Mailings"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2524
+#: documentation/content/en/articles/committers-guide/_index.adoc:2526
msgid ""
"Subscribers to {dev-commits-doc-all}, {dev-commits-ports-all} or {dev-"
"commits-src-all} might wish to unsubscribe to avoid receiving duplicate "
"copies of commit messages and followups."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2527
+#: documentation/content/en/articles/committers-guide/_index.adoc:2529
#, no-wrap
msgid "For Everyone"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2533
+#: documentation/content/en/articles/committers-guide/_index.adoc:2535
msgid ""
"Introduce yourself to the other developers, otherwise no one will have any "
"idea who you are or what you are working on. The introduction need not be a "
"comprehensive biography, just write a paragraph or two about who you are, "
"what you plan to be working on as a developer in FreeBSD, and who will be "
"your mentor. Email this to the {developers-name} and you will be on your way!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2534
+#: documentation/content/en/articles/committers-guide/_index.adoc:2536
msgid ""
"Log into `freefall.FreeBSD.org` and create a [.filename]#/var/forward/user# "
"(where _user_ is your username) file containing the e-mail address where you "
"want mail addressed to _yourusername_@FreeBSD.org to be forwarded. This "
"includes all of the commit messages as well as any other mail addressed to "
"the {committers-name} and the {developers-name}. Really large mailboxes "
"which have taken up permanent residence on `freefall` may get truncated "
"without warning if space needs to be freed, so forward it or save it "
"elsewhere."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2538
+#: documentation/content/en/articles/committers-guide/_index.adoc:2540
msgid ""
"If your e-mail system uses SPF with strict rules, you should exclude `mx2."
"FreeBSD.org` from SPF checks."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2541
+#: documentation/content/en/articles/committers-guide/_index.adoc:2543
msgid ""
"Due to the severe load dealing with SPAM places on the central mail servers "
"that do the mailing list processing, the front-end server does do some basic "
"checks and will drop some messages based on these checks. At the moment "
"proper DNS information for the connecting host is the only check in place "
"but that may change. Some people blame these checks for bouncing valid "
"email. To have these checks turned off for your email, create a file named [."
"filename]#~/.spam_lover# on `freefall.FreeBSD.org`."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2545
+#: documentation/content/en/articles/committers-guide/_index.adoc:2547
msgid ""
"Those who are developers but not committers will not be subscribed to the "
"committers or developers mailing lists. The subscriptions are derived from "
"the access rights."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:2549
+#: documentation/content/en/articles/committers-guide/_index.adoc:2551
#, no-wrap
msgid "SMTP Access Setup"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2552
+#: documentation/content/en/articles/committers-guide/_index.adoc:2554
msgid ""
"For those willing to send e-mail messages through the FreeBSD.org "
"infrastructure, follow the instructions below:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2556
+#: documentation/content/en/articles/committers-guide/_index.adoc:2558
msgid "Point your mail client at `smtp.FreeBSD.org:587`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2557
+#: documentation/content/en/articles/committers-guide/_index.adoc:2559
msgid "Enable STARTTLS."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2558
+#: documentation/content/en/articles/committers-guide/_index.adoc:2560
msgid "Ensure your `From:` address is set to `_yourusername_@FreeBSD.org`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2559
+#: documentation/content/en/articles/committers-guide/_index.adoc:2561
msgid ""
"For authentication, you can use your FreeBSD Kerberos username and password "
"(see <<kerberos-ldap>>). The `_yourusername_/mail` principal is preferred, "
"as it is only valid for authenticating to mail resources."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2563
+#: documentation/content/en/articles/committers-guide/_index.adoc:2565
msgid "Do not include `@FreeBSD.org` when entering in your username."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2565
+#: documentation/content/en/articles/committers-guide/_index.adoc:2567
#, no-wrap
msgid "Additional Notes"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2569
+#: documentation/content/en/articles/committers-guide/_index.adoc:2571
msgid ""
"Will only accept mail from `_yourusername_@FreeBSD.org`. If you are "
"authenticated as one user, you are not permitted to send mail from another."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2570
+#: documentation/content/en/articles/committers-guide/_index.adoc:2572
msgid ""
"A header will be appended with the SASL username: (`Authenticated sender: "
"_username_`)."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:2571
+#: documentation/content/en/articles/committers-guide/_index.adoc:2573
msgid ""
"Host has various rate limits in place to cut down on brute force attempts."
msgstr ""
#. type: Title =====
-#: documentation/content/en/articles/committers-guide/_index.adoc:2575
+#: documentation/content/en/articles/committers-guide/_index.adoc:2577
#, no-wrap
msgid "Using a Local MTA to Forward Emails to the FreeBSD.org SMTP Service"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2578
+#: documentation/content/en/articles/committers-guide/_index.adoc:2580
msgid ""
"It is also possible to use a local MTA to forward locally sent emails to the "
"FreeBSD.org SMTP servers."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2580
+#: documentation/content/en/articles/committers-guide/_index.adoc:2582
#, no-wrap
msgid "Using Postfix"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2585
+#: documentation/content/en/articles/committers-guide/_index.adoc:2587
msgid ""
"To tell a local Postfix instance that anything from `_yourusername_@FreeBSD."
"org` should be forwarded to the FreeBSD.org servers, add this to your [."
"filename]#main.cf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2593
+#: documentation/content/en/articles/committers-guide/_index.adoc:2595
#, no-wrap
msgid ""
"sender_dependent_relayhost_maps = hash:/usr/local/etc/postfix/relayhost_maps\n"
"smtp_sasl_auth_enable = yes\n"
"smtp_sasl_security_options = noanonymous\n"
"smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd\n"
"smtp_use_tls = yes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2596
+#: documentation/content/en/articles/committers-guide/_index.adoc:2598
msgid ""
"Create [.filename]#/usr/local/etc/postfix/relayhost_maps# with the following "
"content:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2600
+#: documentation/content/en/articles/committers-guide/_index.adoc:2602
#, no-wrap
msgid "yourusername@FreeBSD.org [smtp.freebsd.org]:587\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2603
+#: documentation/content/en/articles/committers-guide/_index.adoc:2605
msgid ""
"Create [.filename]#/usr/local/etc/postfix/sasl_passwd# with the following "
"content:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2607
+#: documentation/content/en/articles/committers-guide/_index.adoc:2609
#, no-wrap
msgid "[smtp.freebsd.org]:587 yourusername:yourpassword\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2610
+#: documentation/content/en/articles/committers-guide/_index.adoc:2612
msgid ""
"If the email server is used by other people, you may want to prevent them "
"from sending e-mails from your address. To achieve this, add this to your [."
"filename]#main.cf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2615
+#: documentation/content/en/articles/committers-guide/_index.adoc:2617
#, no-wrap
msgid ""
"smtpd_sender_login_maps = hash:/usr/local/etc/postfix/sender_login_maps\n"
"smtpd_sender_restrictions = reject_known_sender_login_mismatch\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2618
+#: documentation/content/en/articles/committers-guide/_index.adoc:2620
msgid ""
"Create [.filename]#/usr/local/etc/postfix/sender_login_maps# with the "
"following content:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2622
+#: documentation/content/en/articles/committers-guide/_index.adoc:2624
#, no-wrap
msgid "yourusername@FreeBSD.org yourlocalusername\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2625
+#: documentation/content/en/articles/committers-guide/_index.adoc:2627
msgid ""
"Where _yourlocalusername_ is the SASL username used to connect to the local "
"instance of Postfix."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2628
+#: documentation/content/en/articles/committers-guide/_index.adoc:2630
#, no-wrap
msgid "Using OpenSMTPD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2633
+#: documentation/content/en/articles/committers-guide/_index.adoc:2635
msgid ""
"To tell a local OpenSMTPD instance that anything from "
"`_yourusername_@FreeBSD.org` should be forwarded to the FreeBSD.org servers, "
"add this to your [.filename]#smtpd.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2638
+#: documentation/content/en/articles/committers-guide/_index.adoc:2640
#, no-wrap
msgid ""
"action \"freebsd\" relay host smtp+tls://freebsd@smtp.freebsd.org:587 auth <secrets>\n"
"match from any auth yourlocalusername mail-from \"_yourusername_@freebsd.org\" for any action \"freebsd\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2641
+#: documentation/content/en/articles/committers-guide/_index.adoc:2643
msgid ""
"Where _yourlocalusername_ is the SASL username used to connect to the local "
"instance of OpenSMTPD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2643
+#: documentation/content/en/articles/committers-guide/_index.adoc:2645
msgid ""
"Create [.filename]#/usr/local/etc/mail/secrets# with the following content:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2647
+#: documentation/content/en/articles/committers-guide/_index.adoc:2649
#, no-wrap
msgid "freebsd\tyourusername:yourpassword\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2651
+#: documentation/content/en/articles/committers-guide/_index.adoc:2653
#, no-wrap
msgid "Using Exim"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2657
+#: documentation/content/en/articles/committers-guide/_index.adoc:2659
#, no-wrap
msgid ""
"To direct a local Exim instance to forward all mail from `_example_@FreeBSD.org`\n"
" to FreeBSD.org servers, add this to Exim [.filename]#configuration#:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2666
+#: documentation/content/en/articles/committers-guide/_index.adoc:2668
#, no-wrap
msgid ""
"Routers section: (at the top of the list):\n"
"freebsd_send:\n"
" driver = manualroute\n"
" domains = !+local_domains\n"
" transport = freebsd_smtp\n"
" route_data = ${lookup {${lc:$sender_address}} lsearch {/usr/local/etc/exim/freebsd_send}}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2678
+#: documentation/content/en/articles/committers-guide/_index.adoc:2680
#, no-wrap
msgid ""
"Transport Section:\n"
"freebsd_smtp:\n"
" driver = smtp\n"
" tls_certificate=<local certificate>\n"
" tls_privatekey=<local certificate private key>\n"
" tls_require_ciphers = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+AESGCM:EECDH:EDH+AESGCM:EDH+aRSA:HIGH:!MEDIUM:!LOW:!aNULL:!eNULL:!LOW:!RC4:!MD5:!EXP:!PSK:!SRP:!DSS\n"
" dkim_domain = <local DKIM domain>\n"
" dkim_selector = <local DKIM selector>\n"
" dkim_private_key= <local DKIM private key>\n"
" dnssec_request_domains = *\n"
" hosts_require_auth = smtp.freebsd.org\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2684
+#: documentation/content/en/articles/committers-guide/_index.adoc:2686
#, no-wrap
msgid ""
"Authenticators:\n"
"fixed_plain:\n"
" driver = plaintext\n"
" public_name = PLAIN\n"
" client_send = ^example/mail^examplePassword\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2687
+#: documentation/content/en/articles/committers-guide/_index.adoc:2689
msgid ""
"Create [.filename]#/usr/local/etc/exim/freebsd_send# with the following "
"content:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2691
+#: documentation/content/en/articles/committers-guide/_index.adoc:2693
#, no-wrap
msgid "example@freebsd.org:smtp.freebsd.org::587\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2696
+#: documentation/content/en/articles/committers-guide/_index.adoc:2698
#, no-wrap
msgid "Mentors"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2701
+#: documentation/content/en/articles/committers-guide/_index.adoc:2703
msgid ""
"All new developers have a mentor assigned to them for the first few months. "
"A mentor is responsible for teaching the mentee the rules and conventions of "
"the project and guiding their first steps in the developer community. The "
"mentor is also personally responsible for the mentee's actions during this "
"initial period."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2704
+#: documentation/content/en/articles/committers-guide/_index.adoc:2706
msgid ""
"For committers: do not commit anything without first getting mentor "
"approval. Document that approval with an `Approved by:` line in the commit "
"message."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2708
+#: documentation/content/en/articles/committers-guide/_index.adoc:2710
msgid ""
"When the mentor decides that a mentee has learned the ropes and is ready to "
"commit on their own, the mentor announces it with a commit to [."
"filename]#mentors#. This file is in the [.filename]#admin# orphan branch of "
"each repository. Detailed information on how to access these branches can "
"be found in <<admin-branch>>."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2710
+#: documentation/content/en/articles/committers-guide/_index.adoc:2712
#, no-wrap
msgid "Pre-Commit Review"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2715
+#: documentation/content/en/articles/committers-guide/_index.adoc:2717
msgid ""
"Code review is one way to increase the quality of software. The following "
"guidelines apply to commits to the `head` (-CURRENT) branch of the `src` "
"repository. Other branches and the `ports` and `docs` trees have their own "
"review policies, but these guidelines generally apply to commits requiring "
"review:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2717
+#: documentation/content/en/articles/committers-guide/_index.adoc:2719
msgid ""
"All non-trivial changes should be reviewed before they are committed to the "
"repository."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2718
+#: documentation/content/en/articles/committers-guide/_index.adoc:2720
msgid ""
"Reviews may be conducted by email, in Bugzilla, in Phabricator, or by "
"another mechanism. Where possible, reviews should be public."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2719
+#: documentation/content/en/articles/committers-guide/_index.adoc:2721
msgid ""
"The developer responsible for a code change is also responsible for making "
"all necessary review-related changes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2720
+#: documentation/content/en/articles/committers-guide/_index.adoc:2722
msgid ""
"Code review can be an iterative process, which continues until the patch is "
"ready to be committed. Specifically, once a patch is sent out for review, it "
"should receive an explicit \"looks good\" before it is committed. So long as "
"it is explicit, this can take whatever form makes sense for the review "
"method."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2721
+#: documentation/content/en/articles/committers-guide/_index.adoc:2723
msgid "Timeouts are not a substitute for review."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2723
+#: documentation/content/en/articles/committers-guide/_index.adoc:2725
msgid ""
"Sometimes code reviews will take longer than you would hope for, especially "
"for larger features. Accepted ways to speed up review times for your patches "
"are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2725
+#: documentation/content/en/articles/committers-guide/_index.adoc:2727
msgid ""
"Review other people's patches. If you help out, everybody will be more "
"willing to do the same for you; goodwill is our currency."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2726
+#: documentation/content/en/articles/committers-guide/_index.adoc:2728
msgid ""
"Ping the patch. If it is urgent, provide reasons why it is important to you "
"to get this patch landed and ping it every couple of days. If it is not "
"urgent, the common courtesy ping rate is one week. Remember that you are "
"asking for valuable time from other professional developers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2727
+#: documentation/content/en/articles/committers-guide/_index.adoc:2729
msgid ""
"Ask for help on mailing lists, IRC, etc. Others may be able to either help "
"you directly, or suggest a reviewer."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2728
+#: documentation/content/en/articles/committers-guide/_index.adoc:2730
msgid ""
"Split your patch into multiple smaller patches that build on each other. The "
"smaller your patch, the higher the probability that somebody will take a "
"quick look at it."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2730
+#: documentation/content/en/articles/committers-guide/_index.adoc:2732
msgid ""
"When making large changes, it is helpful to keep this in mind from the "
"beginning of the effort as breaking large changes into smaller ones is often "
"difficult after the fact."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2735
+#: documentation/content/en/articles/committers-guide/_index.adoc:2737
msgid ""
"Developers should participate in code reviews as both reviewers and "
"reviewees. If someone is kind enough to review your code, you should return "
"the favor for someone else. Note that while anyone is welcome to review and "
"give feedback on a patch, only an appropriate subject-matter expert can "
"approve a change. This will usually be a committer who works with the code "
"in question on a regular basis."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2738
+#: documentation/content/en/articles/committers-guide/_index.adoc:2740
msgid ""
"In some cases, no subject-matter expert may be available. In those cases, a "
"review by an experienced developer is sufficient when coupled with "
"appropriate testing."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:2740
+#: documentation/content/en/articles/committers-guide/_index.adoc:2742
#, no-wrap
msgid "Commit Log Messages"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2743
+#: documentation/content/en/articles/committers-guide/_index.adoc:2745
msgid ""
"This section contains some suggestions and traditions for how commit logs "
"are formatted."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2744
+#: documentation/content/en/articles/committers-guide/_index.adoc:2746
#, no-wrap
msgid "Why are commit messages important?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2748
+#: documentation/content/en/articles/committers-guide/_index.adoc:2750
msgid ""
"When you commit a change in Git, Subversion, or another version control "
"system (VCS), you're prompted to write some text describing the commit -- a "
"commit message. How important is this commit message? Should you spend some "
"significant effort writing it? Does it really matter if you write simply "
"fixed a bug?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2751
+#: documentation/content/en/articles/committers-guide/_index.adoc:2753
msgid ""
"Most projects have more than one developer and last for some length of "
"time. Commit messages are a very important method of communicating with "
"other developers, in the present and for the future."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2754
+#: documentation/content/en/articles/committers-guide/_index.adoc:2756
msgid ""
"FreeBSD has hundreds of active developers and hundreds of thousands of "
"commits spanning decades of history. Over that time the developer community "
"has learned how valuable good commit messages are; sometimes these are hard-"
"learned lessons."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2756
+#: documentation/content/en/articles/committers-guide/_index.adoc:2758
msgid "Commit messages serve at least three purposes:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2758
+#: documentation/content/en/articles/committers-guide/_index.adoc:2760
msgid "Communicating with other developers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2763
+#: documentation/content/en/articles/committers-guide/_index.adoc:2765
msgid ""
"FreeBSD commits generate email to various mailing lists. These include the "
"commit message along with a copy of the patch itself. Commit messages are "
"also viewed through commands like git log. These serve to make other "
"developers aware of changes that are ongoing; that other developer may want "
"to test the change, may have an interest in the topic and will want to "
"review in more detail, or may have their own projects underway that would "
"benefit from interaction."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2765
+#: documentation/content/en/articles/committers-guide/_index.adoc:2767
msgid "Making Changes Discoverable"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2769
+#: documentation/content/en/articles/committers-guide/_index.adoc:2771
msgid ""
"In a large project with a long history it may be difficult to find changes "
"of interest when investigating an issue or change in behaviour. Verbose, "
"detailed commit messages allow searches for changes that might be relevant. "
"For example, `git log --since 1year --grep 'USB timeout'`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2771
+#: documentation/content/en/articles/committers-guide/_index.adoc:2773
msgid "Providing historical documentation"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2775
+#: documentation/content/en/articles/committers-guide/_index.adoc:2777
msgid ""
"Commit messages serve to document changes for future developers, perhaps "
"years or decades later. This future developer may even be you, the original "
"author. A change that seems obvious today may be decidedly not so much "
"later on."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2777
+#: documentation/content/en/articles/committers-guide/_index.adoc:2779
msgid ""
"The `git blame` command annotates each line of a source file with the change "
"(hash and subject line) that brought it in."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2779
+#: documentation/content/en/articles/committers-guide/_index.adoc:2781
msgid ""
"Having established the importance, here are elements of a good FreeBSD "
"commit message:"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2780
+#: documentation/content/en/articles/committers-guide/_index.adoc:2782
#, no-wrap
msgid "Start with a subject line"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2784
+#: documentation/content/en/articles/committers-guide/_index.adoc:2786
msgid ""
"Commit messages should start with a single-line subject that briefly "
"summarizes the change. The subject should, by itself, allow the reader to "
"quickly determine if the change is of interest or not."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2785
+#: documentation/content/en/articles/committers-guide/_index.adoc:2787
#, no-wrap
msgid "Keep subject lines short"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2790
+#: documentation/content/en/articles/committers-guide/_index.adoc:2792
msgid ""
"The subject line should be as short as possible while still retaining the "
"required information. This is to make browsing Git log more efficient, and "
"so that git log --oneline can display the short hash and subject on a single "
"80-column line. A good rule of thumb is to stay below 63 characters, and "
"aim for about 50 or fewer if possible."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2791
+#: documentation/content/en/articles/committers-guide/_index.adoc:2793
#, no-wrap
msgid "Prefix the subject line with a component, if applicable"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2794
+#: documentation/content/en/articles/committers-guide/_index.adoc:2796
msgid ""
"If the change relates to a specific component the subject line may be "
"prefixed with that component name and a colon (:)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2796
+#: documentation/content/en/articles/committers-guide/_index.adoc:2798
msgid "✓ `foo: Add -k option to keep temporary data`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2798
+#: documentation/content/en/articles/committers-guide/_index.adoc:2800
msgid ""
"Include the prefix in the 63-character limit suggested above, so that `git "
"log --oneline` avoids wrapping."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2799
+#: documentation/content/en/articles/committers-guide/_index.adoc:2801
#, no-wrap
msgid "Capitalize the first letter of the subject"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2803
+#: documentation/content/en/articles/committers-guide/_index.adoc:2805
msgid ""
"Capitalize the first letter of the subject itself. The prefix, if any, is "
"not capitalized unless necessary (e.g., `USB:` is capitalized)."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2804
+#: documentation/content/en/articles/committers-guide/_index.adoc:2806
#, no-wrap
msgid "Do not end the subject line with punctuation"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2808
+#: documentation/content/en/articles/committers-guide/_index.adoc:2810
msgid ""
"Do not end with a period or other punctuation. In this regard the subject "
"line is like a newspaper headline."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2809
+#: documentation/content/en/articles/committers-guide/_index.adoc:2811
#, no-wrap
msgid "Separate the subject and body with a blank line"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2812
+#: documentation/content/en/articles/committers-guide/_index.adoc:2814
msgid "Separate the body from the subject with a blank line."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2814
+#: documentation/content/en/articles/committers-guide/_index.adoc:2816
msgid ""
"Some trivial commits do not require a body, and will have only a subject."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2816
+#: documentation/content/en/articles/committers-guide/_index.adoc:2818
msgid "✓ `ls: Fix typo in usage text`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2817
+#: documentation/content/en/articles/committers-guide/_index.adoc:2819
#, no-wrap
msgid "Limit messages to 72 columns"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2823
+#: documentation/content/en/articles/committers-guide/_index.adoc:2825
msgid ""
"`git log` and `git format-patch` indent the commit message by four spaces. "
"Wrapping at 72 columns provides a matching margin on the right edge. "
"Limiting messages to 72 characters also keeps the commit message in "
"formatted patches below RFC 2822's suggested email line length limit of 78 "
"characters. This limit works well with a variety of tools that may render "
"commit messages; line wrapping might be inconsistent with longer line length."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2824
+#: documentation/content/en/articles/committers-guide/_index.adoc:2826
#, no-wrap
msgid "Use the present tense, imperative mood"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2829
+#: documentation/content/en/articles/committers-guide/_index.adoc:2831
msgid ""
"This facilitates short subject lines and provides consistency, including "
"with automatically generated commit messages (e.g., as generated by git "
"revert). This is important when reading a list of commit subjects. Think "
"of the subject as finishing the sentence \"when applied, this change will ..."
"\"."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2834
+#: documentation/content/en/articles/committers-guide/_index.adoc:2836
#, no-wrap
msgid ""
"✓ `foo: Implement the -k (keep) option`\n"
"✗ `foo: Implemented the -k option`\n"
"✗ `This change implements the -k option in foo`\n"
"✗ `-k option added`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2835
+#: documentation/content/en/articles/committers-guide/_index.adoc:2837
#, no-wrap
msgid "Focus on what and why, not how"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2838
+#: documentation/content/en/articles/committers-guide/_index.adoc:2840
msgid ""
"Explain what the change accomplishes and why it is being done, rather than "
"how."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2842
+#: documentation/content/en/articles/committers-guide/_index.adoc:2844
msgid ""
"Do not assume that the reader is familiar with the issue. Explain the "
"background and motivation for the change. Include benchmark data if you "
"have it."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2844
+#: documentation/content/en/articles/committers-guide/_index.adoc:2846
msgid ""
"If there are limitations or incomplete aspects of the change, describe them "
"in the commit message."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2845
+#: documentation/content/en/articles/committers-guide/_index.adoc:2847
#, no-wrap
msgid "Consider whether parts of the commit message could be code comments instead"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2848
+#: documentation/content/en/articles/committers-guide/_index.adoc:2850
msgid ""
"Sometimes while writing a commit message you may find yourself writing a "
"sentence or two explaining some tricky or confusing aspect of the change. "
"When this happens consider whether it would be valuable to have that "
"explanation as a comment in the code itself."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2849
+#: documentation/content/en/articles/committers-guide/_index.adoc:2851
#, no-wrap
msgid "Write commit messages for your future self"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2853
+#: documentation/content/en/articles/committers-guide/_index.adoc:2855
msgid ""
"While writing the commit message for a change you have all of the context in "
"mind - what prompted the change, alternate approaches that were considered "
"and rejected, limitations of the change, and so on. Imagine yourself "
"revisiting the change a year or two in the future, and write the commit "
"message in a way that would provide that necessary context."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2854
+#: documentation/content/en/articles/committers-guide/_index.adoc:2856
#, no-wrap
msgid "Commit messages should stand alone"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2858
+#: documentation/content/en/articles/committers-guide/_index.adoc:2860
msgid ""
"You may include references to mailing list postings, benchmark result web "
"sites, or code review links. However, the commit message should contain all "
"of the relevant information in case these references are no longer available "
"in the future."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2862
+#: documentation/content/en/articles/committers-guide/_index.adoc:2864
msgid ""
"Similarly, a commit may refer to a previous commit, for example in the case "
"of a bug fix or revert. In addition to the commit identifier (revision or "
"hash), include the subject line from the referenced commit (or another "
"suitable brief reference). With each VCS migration (from CVS to Subversion "
"to Git) revision identifiers from previous systems may become difficult to "
"follow."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:2863
+#: documentation/content/en/articles/committers-guide/_index.adoc:2865
#, no-wrap
msgid "Include appropriate metadata in a footer"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2866
+#: documentation/content/en/articles/committers-guide/_index.adoc:2868
msgid ""
"As well as including an informative message with each commit, some "
"additional information may be needed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2868
+#: documentation/content/en/articles/committers-guide/_index.adoc:2870
msgid ""
"This information consists of one or more lines containing the key word or "
"phrase, a colon, tabs for formatting, and then the additional information."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2870
+#: documentation/content/en/articles/committers-guide/_index.adoc:2872
msgid "The key words or phrases are:"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2876
+#: documentation/content/en/articles/committers-guide/_index.adoc:2878
#, no-wrap
msgid "`PR:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2878
+#: documentation/content/en/articles/committers-guide/_index.adoc:2880
#, no-wrap
msgid "The problem report (if any) which is affected (typically, by being closed) by this commit. Multiple PRs may be specified on one line, separated by commas or spaces."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2879
+#: documentation/content/en/articles/committers-guide/_index.adoc:2881
#, no-wrap
msgid "`Reported by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2883
+#: documentation/content/en/articles/committers-guide/_index.adoc:2885
#, no-wrap
msgid ""
"The name and e-mail address of the person that reported the issue; for developers, just the username on the FreeBSD cluster.\n"
"Typically used when there is no PR, for example if the issue was reported on\n"
"a mailing list."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2884
+#: documentation/content/en/articles/committers-guide/_index.adoc:2886
#, no-wrap
msgid "`Submitted by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2886
+#: documentation/content/en/articles/committers-guide/_index.adoc:2888
#, no-wrap
msgid "This has been deprecated with git; submitted patches should have the author set by using `git commit --author` with a full name and valid email."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2887
+#: documentation/content/en/articles/committers-guide/_index.adoc:2889
#, no-wrap
msgid "`Reviewed by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2902
+#: documentation/content/en/articles/committers-guide/_index.adoc:2904
#, no-wrap
msgid ""
"The name and e-mail address of the person or people that reviewed the change; for developers, just the username on the FreeBSD cluster. If a patch was submitted to a mailing list for review, and the review was favorable, then just include the list name. If the reviewer is not a member of the project, provide the name, email, and if ports an external role like maintainer:\n"
"\n"
"Reviewed by a developer:\n"
"[source,shell]\n"
"....\n"
"Reviewed by: username\n"
"....\n"
"\n"
"Reviewed by a ports maintainer that is not a developer:\n"
"[source,shell]\n"
"....\n"
"Reviewed by: Full Name <valid@email> (maintainer)\n"
"...."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2903
+#: documentation/content/en/articles/committers-guide/_index.adoc:2905
#, no-wrap
msgid "`Tested by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2905
+#: documentation/content/en/articles/committers-guide/_index.adoc:2907
#, no-wrap
msgid "The name and e-mail address of the person or people that tested the change; for developers, just the username on the FreeBSD cluster."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2906
+#: documentation/content/en/articles/committers-guide/_index.adoc:2908
#, no-wrap
msgid "`Approved by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2931
+#: documentation/content/en/articles/committers-guide/_index.adoc:2933
#, no-wrap
msgid ""
"The name and e-mail address of the person or people that approved the change; for developers, just the username on the FreeBSD cluster.\n"
"\n"
"There are several cases where approval is customary:\n"
"\n"
"* while a new committer is under mentorship\n"
"* commits to an area of the tree covered by the LOCKS file (src)\n"
"* during a release cycle\n"
"* committing to a repo where you do not hold a commit bit (e.g. src committer committing to docs)\n"
"\n"
"While under mentorship, get mentor approval before the commit. Enter the mentor's username in this field, and note that they are a mentor:\n"
"\n"
"[source,shell]\n"
"....\n"
"Approved by: username-of-mentor (mentor)\n"
"....\n"
"\n"
"If a team approved these commits then include the team name followed by the username of the approver in parentheses. For example:\n"
"\n"
"[source,shell]\n"
"....\n"
"Approved by: re (username)\n"
"...."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2932
+#: documentation/content/en/articles/committers-guide/_index.adoc:2934
#, no-wrap
msgid "`Obtained from:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2934
+#: documentation/content/en/articles/committers-guide/_index.adoc:2936
#, no-wrap
msgid "The name of the project (if any) from which the code was obtained. Do not use this line for the name of an individual person."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2935
+#: documentation/content/en/articles/committers-guide/_index.adoc:2937
#, no-wrap
msgid "`Fixes:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2937
+#: documentation/content/en/articles/committers-guide/_index.adoc:2939
#, no-wrap
msgid "The Git short hash and the title line of a commit that is fixed by this change as returned by `git log -n 1 --oneline GIT-COMMIT-HASH`."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2938
+#: documentation/content/en/articles/committers-guide/_index.adoc:2940
#, no-wrap
msgid "`MFC after:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2940
+#: documentation/content/en/articles/committers-guide/_index.adoc:2942
#, no-wrap
msgid "To receive an e-mail reminder to MFC at a later date, specify the number of days, weeks, or months after which an MFC is planned."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2941
+#: documentation/content/en/articles/committers-guide/_index.adoc:2943
#, no-wrap
msgid "`MFC to:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2943
+#: documentation/content/en/articles/committers-guide/_index.adoc:2945
#, no-wrap
msgid "If the commit should be merged to a subset of stable branches, specify the branch names."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2944
+#: documentation/content/en/articles/committers-guide/_index.adoc:2946
#, no-wrap
msgid "`MFC with:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2946
+#: documentation/content/en/articles/committers-guide/_index.adoc:2948
#, no-wrap
msgid "If the commit should be merged together with a previous one in a single MFC commit (for example, where this commit corrects a bug in the previous change), specify the corresponding Git hash."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2947
+#: documentation/content/en/articles/committers-guide/_index.adoc:2949
#, no-wrap
msgid "`MFH:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2949
+#: documentation/content/en/articles/committers-guide/_index.adoc:2951
#, no-wrap
msgid "If the commit is to be merged into a ports quarterly branch name, specify the quarterly branch. For example `2021Q2`."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2950
+#: documentation/content/en/articles/committers-guide/_index.adoc:2952
#, no-wrap
msgid "`Relnotes:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2952
+#: documentation/content/en/articles/committers-guide/_index.adoc:2954
#, no-wrap
msgid "If the change is a candidate for inclusion in the release notes for the next release from the branch, set to `yes`."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2953
+#: documentation/content/en/articles/committers-guide/_index.adoc:2955
#, no-wrap
msgid "`Security:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2955
+#: documentation/content/en/articles/committers-guide/_index.adoc:2957
#, no-wrap
msgid "If the change is related to a security vulnerability or security exposure, include one or more references or a description of the issue. If possible, include a VuXML URL or a CVE ID."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2956
+#: documentation/content/en/articles/committers-guide/_index.adoc:2958
#, no-wrap
msgid "`Event:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2958
+#: documentation/content/en/articles/committers-guide/_index.adoc:2960
#, no-wrap
msgid "The description for the event where this commit was made. If this is a recurring event, add the year or even the month to it. For example, this could be `FooBSDcon 2019`. The idea behind this line is to put recognition to conferences, gatherings, and other types of meetups and to show that these are useful to have. Please do not use the `Sponsored by:` line for this as that is meant for organizations sponsoring certain features or developers working on them."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2959
+#: documentation/content/en/articles/committers-guide/_index.adoc:2961
#, no-wrap
msgid "`Sponsored by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2961
+#: documentation/content/en/articles/committers-guide/_index.adoc:2963
#, no-wrap
msgid "Sponsoring organizations for this change, if any. Separate multiple organizations with commas. If only a portion of the work was sponsored, or different amounts of sponsorship were provided to different authors, please give appropriate credit in parentheses after each sponsor name. For example, `Example.com (alice, code refactoring), Wormulon (bob), Momcorp (cindy)` shows that Alice was sponsored by Example.com to do code refactoring, while Wormulon sponsored Bob's work and Momcorp sponsored Cindy's work. Other authors were either not sponsored or chose not to list sponsorship."
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2962
+#: documentation/content/en/articles/committers-guide/_index.adoc:2964
#, no-wrap
msgid "`Pull Request:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2966
+#: documentation/content/en/articles/committers-guide/_index.adoc:2968
#, no-wrap
msgid ""
"This change was submitted as a pull request or merge request against one of FreeBSD's public read-only Git repositories.\n"
"It should include the entire URL to the pull request, as these often act as code reviews for the code.\n"
"For example: `https://github.com/freebsd/freebsd-src/pull/745`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2967
+#: documentation/content/en/articles/committers-guide/_index.adoc:2969
#, no-wrap
msgid "`Signed-off-by:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2969
+#: documentation/content/en/articles/committers-guide/_index.adoc:2971
#, no-wrap
msgid "ID certifies compliance with https://developercertificate.org/"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2970
+#: documentation/content/en/articles/committers-guide/_index.adoc:2972
#, no-wrap
msgid "`Differential Revision:`"
msgstr ""
#. type: Table
-#: documentation/content/en/articles/committers-guide/_index.adoc:2972
+#: documentation/content/en/articles/committers-guide/_index.adoc:2974
#, no-wrap
msgid "The full URL of the Phabricator review. This line __must be the last line__. For example: `https://reviews.freebsd.org/D1708`."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2974
+#: documentation/content/en/articles/committers-guide/_index.adoc:2976
#, no-wrap
msgid "Commit Log for a Commit Based on a PR"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2980
+#: documentation/content/en/articles/committers-guide/_index.adoc:2982
msgid ""
"The commit is based on a patch from a PR submitted by John Smith. The "
"commit message \"PR\" field is filled."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2984
-#: documentation/content/en/articles/committers-guide/_index.adoc:3002
-#: documentation/content/en/articles/committers-guide/_index.adoc:3017
-#: documentation/content/en/articles/committers-guide/_index.adoc:3033
-#: documentation/content/en/articles/committers-guide/_index.adoc:3048
+#: documentation/content/en/articles/committers-guide/_index.adoc:2986
+#: documentation/content/en/articles/committers-guide/_index.adoc:3004
+#: documentation/content/en/articles/committers-guide/_index.adoc:3019
+#: documentation/content/en/articles/committers-guide/_index.adoc:3035
+#: documentation/content/en/articles/committers-guide/_index.adoc:3050
#, no-wrap
msgid "...\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:2986
+#: documentation/content/en/articles/committers-guide/_index.adoc:2988
#, no-wrap
msgid "PR:\t\t12345\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2989
+#: documentation/content/en/articles/committers-guide/_index.adoc:2991
msgid ""
"The committer sets the author of the patch with `git commit --author \"John "
"Smith <John.Smith@example.com>\"`."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:2992
+#: documentation/content/en/articles/committers-guide/_index.adoc:2994
#, no-wrap
msgid "Commit Log for a Commit Needing Review"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:2998
+#: documentation/content/en/articles/committers-guide/_index.adoc:3000
msgid ""
"The virtual memory system is being changed. After posting patches to the "
"appropriate mailing list (in this case, `freebsd-arch`) and the changes have "
"been approved."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3004
+#: documentation/content/en/articles/committers-guide/_index.adoc:3006
#, no-wrap
msgid "Reviewed by:\t-arch\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:3008
+#: documentation/content/en/articles/committers-guide/_index.adoc:3010
#, no-wrap
msgid "Commit Log for a Commit Needing Approval"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3013
+#: documentation/content/en/articles/committers-guide/_index.adoc:3015
msgid ""
"Commit a port, after working with the listed MAINTAINER, who said to go "
"ahead and commit."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3019
+#: documentation/content/en/articles/committers-guide/_index.adoc:3021
#, no-wrap
msgid "Approved by:\tabc (maintainer)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3022
+#: documentation/content/en/articles/committers-guide/_index.adoc:3024
msgid "Where _abc_ is the account name of the person who approved."
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:3024
+#: documentation/content/en/articles/committers-guide/_index.adoc:3026
#, no-wrap
msgid "Commit Log for a Commit Bringing in Code from OpenBSD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3029
+#: documentation/content/en/articles/committers-guide/_index.adoc:3031
msgid "Committing some code based on work done in the OpenBSD project."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3035
+#: documentation/content/en/articles/committers-guide/_index.adoc:3037
#, no-wrap
msgid "Obtained from:\tOpenBSD\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:3039
+#: documentation/content/en/articles/committers-guide/_index.adoc:3041
#, no-wrap
msgid "Commit Log for a Change to FreeBSD-CURRENT with a Planned Commit to FreeBSD-STABLE to Follow at a Later Date."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3044
+#: documentation/content/en/articles/committers-guide/_index.adoc:3046
msgid ""
"Committing some code which will be merged from FreeBSD-CURRENT into the "
"FreeBSD-STABLE branch after two weeks."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3050
+#: documentation/content/en/articles/committers-guide/_index.adoc:3052
#, no-wrap
msgid "MFC after:\t2 weeks\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3053
+#: documentation/content/en/articles/committers-guide/_index.adoc:3055
msgid ""
"Where _2_ is the number of days, weeks, or months after which an MFC is "
"planned. The _weeks_ option may be `day`, `days`, `week`, `weeks`, `month`, "
"`months`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3056
+#: documentation/content/en/articles/committers-guide/_index.adoc:3058
msgid "It is often necessary to combine these."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3060
+#: documentation/content/en/articles/committers-guide/_index.adoc:3062
msgid ""
"Consider the situation where a user has submitted a PR containing code from "
"the NetBSD project. Looking at the PR, the developer sees it is not an area "
"of the tree they normally work in, so they have the change reviewed by the "
"`arch` mailing list. Since the change is complex, the developer opts to MFC "
"after one month to allow adequate testing."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3062
+#: documentation/content/en/articles/committers-guide/_index.adoc:3064
msgid ""
"The extra information to include in the commit would look something like"
msgstr ""
#. type: Block title
-#: documentation/content/en/articles/committers-guide/_index.adoc:3063
+#: documentation/content/en/articles/committers-guide/_index.adoc:3065
#, no-wrap
msgid "Example Combined Commit Log"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3074
+#: documentation/content/en/articles/committers-guide/_index.adoc:3076
#, no-wrap
msgid ""
"PR:\t\t54321\n"
"Reviewed by:\t-arch\n"
"Obtained from:\tNetBSD\n"
"MFC after:\t1 month\n"
"Relnotes:\tyes\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3079
+#: documentation/content/en/articles/committers-guide/_index.adoc:3081
#, no-wrap
msgid "Preferred License for New Files"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3085
+#: documentation/content/en/articles/committers-guide/_index.adoc:3087
msgid ""
"The FreeBSD Project's full license policy can be found at link:https://www."
"FreeBSD.org/internal/software-license/[https://www.FreeBSD.org/internal/"
"software-license]. The rest of this section is intended to help you get "
"started. As a rule, when in doubt, ask. It is much easier to give advice "
"than to fix the source tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3087
+#: documentation/content/en/articles/committers-guide/_index.adoc:3089
msgid ""
"The FreeBSD Project suggests and uses this text as the preferred license "
"scheme:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3118
+#: documentation/content/en/articles/committers-guide/_index.adoc:3120
#, no-wrap
msgid ""
"/*-\n"
-" * SPDX-License-Identifier: BSD-2-Clause-FreeBSD\n"
+" * SPDX-License-Identifier: BSD-2-Clause\n"
" *\n"
" * Copyright (c) [year] [your name]\n"
" *\n"
" * Redistribution and use in source and binary forms, with or without\n"
" * modification, are permitted provided that the following conditions\n"
" * are met:\n"
" * 1. Redistributions of source code must retain the above copyright\n"
" * notice, this list of conditions and the following disclaimer.\n"
" * 2. Redistributions in binary form must reproduce the above copyright\n"
" * notice, this list of conditions and the following disclaimer in the\n"
" * documentation and/or other materials provided with the distribution.\n"
" *\n"
" * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n"
" * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"
" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"
" * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n"
" * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n"
" * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n"
" * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"
" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n"
" * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n"
" * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n"
" * SUCH DAMAGE.\n"
" *\n"
" * [id for your version control system, if any]\n"
" */\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3124
+#: documentation/content/en/articles/committers-guide/_index.adoc:3126
msgid ""
-"The FreeBSD project strongly discourages the so-called \"advertising clause"
-"\" in new code. Due to the large number of contributors to the FreeBSD "
-"project, complying with this clause for many commercial vendors has become "
-"difficult. If you have code in the tree with the advertising clause, please "
-"consider removing it. In fact, please consider using the above license for "
-"your code."
+"The FreeBSD project strongly discourages the so-called \"advertising "
+"clause\" in new code. Due to the large number of contributors to the "
+"FreeBSD project, complying with this clause for many commercial vendors has "
+"become difficult. If you have code in the tree with the advertising clause, "
+"please consider removing it. In fact, please consider using the above "
+"license for your code."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3128
+#: documentation/content/en/articles/committers-guide/_index.adoc:3130
msgid ""
"The FreeBSD project discourages completely new licenses and variations on "
"the standard licenses. New licenses require the approval of the {core-"
"email} to reside in the main repository. The more different licenses that "
"are used in the tree, the more problems that this causes to those wishing to "
"utilize this code, typically from unintended consequences from a poorly "
"worded license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3132
+#: documentation/content/en/articles/committers-guide/_index.adoc:3134
msgid ""
"Project policy dictates that code under some non-BSD licenses must be placed "
"only in specific sections of the repository, and in some cases, compilation "
"must be conditional or even disabled by default. For example, the GENERIC "
"kernel must be compiled under only licenses identical to or substantially "
"similar to the BSD license. GPL, APSL, CDDL, etc, licensed software must "
"not be compiled into GENERIC."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3135
+#: documentation/content/en/articles/committers-guide/_index.adoc:3137
msgid ""
"Developers are reminded that in open source, getting \"open\" right is just "
"as important as getting \"source\" right, as improper handling of "
"intellectual property has serious consequences. Any questions or concerns "
"should immediately be brought to the attention of the core team."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3137
+#: documentation/content/en/articles/committers-guide/_index.adoc:3139
#, no-wrap
msgid "Keeping Track of Licenses Granted to the FreeBSD Project"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3142
+#: documentation/content/en/articles/committers-guide/_index.adoc:3144
msgid ""
"Various software or data exist in the repositories where the FreeBSD project "
"has been granted a special license to be able to use them. A case in point "
"are the Terminus fonts for use with man:vt[4]. Here the author Dimitar "
"Zhekov has allowed us to use the \"Terminus BSD Console\" font under a 2-"
"clause BSD license rather than the regular Open Font License he normally "
"uses."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3147
+#: documentation/content/en/articles/committers-guide/_index.adoc:3149
msgid ""
"It is clearly sensible to keep a record of any such license grants. To that "
"end, the {core-email} has decided to keep an archive of them. Whenever the "
"FreeBSD project is granted a special license we require the {core-email} to "
"be notified. Any developers involved in arranging such a license grant, "
"please send details to the {core-email} including:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3149
+#: documentation/content/en/articles/committers-guide/_index.adoc:3151
msgid ""
"Contact details for people or organizations granting the special license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3150
+#: documentation/content/en/articles/committers-guide/_index.adoc:3152
msgid ""
"What files, directories etc. in the repositories are covered by the license "
"grant including the revision numbers where any specially licensed material "
"was committed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3151
+#: documentation/content/en/articles/committers-guide/_index.adoc:3153
msgid ""
"The date the license comes into effect from. Unless otherwise agreed, this "
"will be the date the license was issued by the authors of the software in "
"question."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3152
+#: documentation/content/en/articles/committers-guide/_index.adoc:3154
msgid "The license text."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3153
+#: documentation/content/en/articles/committers-guide/_index.adoc:3155
msgid ""
"A note of any restrictions, limitations or exceptions that apply "
"specifically to FreeBSD's usage of the licensed material."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3154
+#: documentation/content/en/articles/committers-guide/_index.adoc:3156
msgid "Any other relevant information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3157
+#: documentation/content/en/articles/committers-guide/_index.adoc:3159
msgid ""
"Once the {core-email} is satisfied that all the necessary details have been "
"gathered and are correct, the secretary will send a PGP-signed "
"acknowledgment of receipt including the license details. This receipt will "
"be persistently archived and serve as our permanent record of the license "
"grant."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3160
+#: documentation/content/en/articles/committers-guide/_index.adoc:3162
msgid ""
"The license archive should contain only details of license grants; this is "
"not the place for any discussions around licensing or other subjects. "
"Access to data within the license archive will be available on request to "
"the {core-email}."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3162
+#: documentation/content/en/articles/committers-guide/_index.adoc:3164
#, no-wrap
msgid "SPDX Tags in the tree"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3173
+#: documentation/content/en/articles/committers-guide/_index.adoc:3175
msgid ""
"The project uses https://spdx.dev[SPDX] tags in our source base. At "
"present, these tags are indented to help automated tools reconstruct license "
"requirements mechanically. All _SPDX-License-Identifier_ tags in the tree "
"should be considered to be informative. All files in the FreeBSD source "
"tree with these tags also have a copy of the license which governs use of "
"that file. In the event of a discrepancy, the verbatim license is "
"controlling. The project tries to follow the https://spdx.github.io/spdx-"
"spec/[SPDX Specification, Version 2.2]. How to mark source files and valid "
"algebraic expressions are found in https://spdx.github.io/spdx-spec/appendix-"
"IV-SPDX-license-expressions/[Appendix IV] and https://spdx.github.io/spdx-"
"spec/appendix-V-using-SPDX-short-identifiers-in-source-files/[Appendix V]. "
"The project draws identifiers from SPDX's list of valid https://spdx.org/"
"licenses/[short license identifiers]. The project uses only the _SPDX-"
"License-Identifier_ tag."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3175
+#: documentation/content/en/articles/committers-guide/_index.adoc:3177
msgid ""
"As of March 2021, approximately 25,000 out of 90,000 files in the tree have "
"been marked."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3176
+#: documentation/content/en/articles/committers-guide/_index.adoc:3178
#, no-wrap
msgid "Developer Relations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3182
+#: documentation/content/en/articles/committers-guide/_index.adoc:3184
msgid ""
"When working directly on your own code or on code which is already well "
"established as your responsibility, then there is probably little need to "
-"check with other committers before jumping in with a commit. Working on a "
-"bug in an area of the system which is clearly orphaned (and there are a few "
-"such areas, to our shame), the same applies. When modifying parts of the "
-"system which are maintained, formally, or informally, consider asking for "
-"review just as a developer would have before becoming a committer. For "
+"check with other committers before jumping in with a commit. When working "
+"on a bug in an area of the system which is clearly orphaned (and there are a "
+"few such areas, to our shame), the same applies. When modifying parts of "
+"the system which are maintained, formally or informally, consider asking for "
+"a review just as a developer would have before becoming a committer. For "
"ports, contact the listed `MAINTAINER` in the [.filename]#Makefile#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3187
+#: documentation/content/en/articles/committers-guide/_index.adoc:3188
msgid ""
"To determine if an area of the tree is maintained, check the MAINTAINERS "
"file at the root of the tree. If nobody is listed, scan the revision "
-"history to see who has committed changes in the past. An example script "
-"that lists each person who has committed to a given file along with the "
-"number of commits each person has made can be found at on `freefall` at [."
-"filename]#~eadler/bin/whodid#. If queries go unanswered or the committer "
-"otherwise indicates a lack of interest in the area affected, go ahead and "
-"commit it."
+"history to see who has committed changes in the past. To list the names and "
+"email addresses of all commit authors for a given file in the last 2 years "
+"and the number of commits each has authored, ordered by descending number of "
+"commits, use:"
msgstr ""
-#. type: delimited block = 4
+#. type: delimited block - 4
#: documentation/content/en/articles/committers-guide/_index.adoc:3192
+#, no-wrap
+msgid "% git -C /path/to/repo shortlog -sne --since=\"2 years\" -- relative/path/to/file\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/articles/committers-guide/_index.adoc:3195
+msgid ""
+"If queries go unanswered or the committer otherwise indicates a lack of "
+"interest in the area affected, go ahead and commit it."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/committers-guide/_index.adoc:3200
msgid ""
"Avoid sending private emails to maintainers. Other people might be "
"interested in the conversation, not just the final output."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3198
+#: documentation/content/en/articles/committers-guide/_index.adoc:3206
msgid ""
"If there is any doubt about a commit for any reason at all, have it reviewed "
"before committing. Better to have it flamed then and there rather than when "
"it is part of the repository. If a commit does results in controversy "
"erupting, it may be advisable to consider backing the change out again until "
"the matter is settled. Remember, with a version control system we can "
"always change it back."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3202
+#: documentation/content/en/articles/committers-guide/_index.adoc:3210
msgid ""
"Do not impugn the intentions of others. If they see a different solution to "
"a problem, or even a different problem, it is probably not because they are "
"stupid, because they have questionable parentage, or because they are trying "
"to destroy hard work, personal image, or FreeBSD, but basically because they "
"have a different outlook on the world. Different is good."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3205
+#: documentation/content/en/articles/committers-guide/_index.adoc:3213
msgid ""
"Disagree honestly. Argue your position from its merits, be honest about any "
"shortcomings it may have, and be open to seeing their solution, or even "
"their vision of the problem, with an open mind."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3211
+#: documentation/content/en/articles/committers-guide/_index.adoc:3219
msgid ""
"Accept correction. We are all fallible. When you have made a mistake, "
"apologize and get on with life. Do not beat up yourself, and certainly do "
"not beat up others for your mistake. Do not waste time on embarrassment or "
"recrimination, just fix the problem and move on."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3215
+#: documentation/content/en/articles/committers-guide/_index.adoc:3223
msgid ""
"Ask for help. Seek out (and give) peer reviews. One of the ways open "
"source software is supposed to excel is in the number of eyeballs applied to "
"it; this does not apply if nobody will review code."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3217
+#: documentation/content/en/articles/committers-guide/_index.adoc:3225
#, no-wrap
msgid "If in Doubt..."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3221
+#: documentation/content/en/articles/committers-guide/_index.adoc:3229
msgid ""
"When unsure about something, whether it be a technical issue or a project "
"convention be sure to ask. If you stay silent you will never make progress."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3225
+#: documentation/content/en/articles/committers-guide/_index.adoc:3233
msgid ""
"If it relates to a technical issue ask on the public mailing lists. Avoid "
"the temptation to email the individual person that knows the answer. This "
"way everyone will be able to learn from the question and the answer."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3227
+#: documentation/content/en/articles/committers-guide/_index.adoc:3235
msgid "For project specific or administrative questions ask, in order:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3229
+#: documentation/content/en/articles/committers-guide/_index.adoc:3237
msgid "Your mentor or former mentor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3230
+#: documentation/content/en/articles/committers-guide/_index.adoc:3238
msgid "An experienced committer on IRC, email, etc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3231
+#: documentation/content/en/articles/committers-guide/_index.adoc:3239
msgid "Any team with a \"hat\", as they can give you a definitive answer."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3232
+#: documentation/content/en/articles/committers-guide/_index.adoc:3240
msgid "If still not sure, ask on {developers-name}."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3234
+#: documentation/content/en/articles/committers-guide/_index.adoc:3242
msgid ""
"Once your question is answered, if no one pointed you to documentation that "
"spelled out the answer to your question, document it, as others will have "
"the same question."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3236
+#: documentation/content/en/articles/committers-guide/_index.adoc:3244
#, no-wrap
msgid "Bugzilla"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3241
+#: documentation/content/en/articles/committers-guide/_index.adoc:3249
msgid ""
"The FreeBSD Project utilizes Bugzilla for tracking bugs and change "
"requests. Be sure that if you commit a fix or suggestion found in the PR "
"database to close it. It is also considered nice if you take time to close "
"any PRs associated with your commits, if appropriate."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3243
+#: documentation/content/en/articles/committers-guide/_index.adoc:3251
msgid ""
"Committers with non-``FreeBSD.org`` Bugzilla accounts can have the old "
"account merged with the `FreeBSD.org` account by following these steps:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3247
+#: documentation/content/en/articles/committers-guide/_index.adoc:3255
msgid "Log in using your old account."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3248
+#: documentation/content/en/articles/committers-guide/_index.adoc:3256
msgid ""
"Open new bug. Choose `Services` as the Product, and `Bug Tracker` as the "
"Component. In bug description list accounts you wish to be merged."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3249
+#: documentation/content/en/articles/committers-guide/_index.adoc:3257
msgid ""
"Log in using `FreeBSD.org` account and post comment to newly opened bug to "
"confirm ownership. See <<kerberos-ldap>> for more details on how to generate "
"or set a password for your `FreeBSD.org` account."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3250
+#: documentation/content/en/articles/committers-guide/_index.adoc:3258
msgid ""
"If there are more than two accounts to merge, post comments from each of "
"them."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3253
+#: documentation/content/en/articles/committers-guide/_index.adoc:3261
msgid "You can find out more about Bugzilla at:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3255
+#: documentation/content/en/articles/committers-guide/_index.adoc:3263
msgid "extref:{pr-guidelines}[FreeBSD Problem Report Handling Guidelines]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3256
+#: documentation/content/en/articles/committers-guide/_index.adoc:3264
msgid "link:https://www.FreeBSD.org/support/[https://www.FreeBSD.org/support]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3258
+#: documentation/content/en/articles/committers-guide/_index.adoc:3266
#, no-wrap
msgid "Phabricator"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3262
+#: documentation/content/en/articles/committers-guide/_index.adoc:3270
msgid ""
"The FreeBSD Project utilizes https://reviews.freebsd.org[Phabricator] for "
"code review requests. See the https://wiki.freebsd.org/"
"Phabricator[Phabricator wiki page] for details."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3264
+#: documentation/content/en/articles/committers-guide/_index.adoc:3272
msgid ""
"Committers with non-``FreeBSD.org`` Phabricator accounts can have the old "
"account renamed to the ``FreeBSD.org`` account by following these steps:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3268
+#: documentation/content/en/articles/committers-guide/_index.adoc:3276
msgid "Change your Phabricator account email to your `FreeBSD.org` email."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3269
+#: documentation/content/en/articles/committers-guide/_index.adoc:3277
msgid ""
"Open new bug on our bug tracker using your `FreeBSD.org` account, see "
"<<bugzilla>> for more information. Choose `Services` as the Product, and "
"`Code Review` as the Component. In bug description request that your "
"Phabricator account be renamed, and provide a link to your Phabricator user. "
"For example, `https://reviews.freebsd.org/p/bob_example.com/`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3274
+#: documentation/content/en/articles/committers-guide/_index.adoc:3282
msgid ""
"Phabricator accounts cannot be merged, please do not open a new account."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3277
+#: documentation/content/en/articles/committers-guide/_index.adoc:3285
#, no-wrap
msgid "Who's Who"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3280
+#: documentation/content/en/articles/committers-guide/_index.adoc:3288
msgid ""
"Besides the repository meisters, there are other FreeBSD project members and "
"teams whom you will probably get to know in your role as a committer. "
"Briefly, and by no means all-inclusively, these are:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/articles/committers-guide/_index.adoc:3281
+#: documentation/content/en/articles/committers-guide/_index.adoc:3289
#, no-wrap
msgid "`{doceng}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3287
+#: documentation/content/en/articles/committers-guide/_index.adoc:3295
msgid ""
"doceng is the group responsible for the documentation build infrastructure, "
"approving new documentation committers, and ensuring that the FreeBSD "
"website and documentation on the FTP site is up to date with respect to the "
"Subversion tree. It is not a conflict resolution body. The vast majority "
"of documentation related discussion takes place on the {freebsd-doc}. More "
"details regarding the doceng team can be found in its https://www.FreeBSD."
"org/internal/doceng/[charter]. Committers interested in contributing to the "
"documentation should familiarize themselves with the extref:{fdp-primer}"
"[Documentation Project Primer]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/articles/committers-guide/_index.adoc:3288
+#: documentation/content/en/articles/committers-guide/_index.adoc:3296
#, no-wrap
msgid "`{re-members}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3293
+#: documentation/content/en/articles/committers-guide/_index.adoc:3301
msgid ""
"These are the members of the `{re}`. This team is responsible for setting "
"release deadlines and controlling the release process. During code freezes, "
"the release engineers have final authority on all changes to the system for "
"whichever branch is pending release status. If there is something you want "
"merged from FreeBSD-CURRENT to FreeBSD-STABLE (whatever values those may "
"have at any given time), these are the people to talk to about it."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/articles/committers-guide/_index.adoc:3294
+#: documentation/content/en/articles/committers-guide/_index.adoc:3302
#, no-wrap
msgid "`{so}`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3296
+#: documentation/content/en/articles/committers-guide/_index.adoc:3304
msgid ""
"`{so-name}` is the link:https://www.FreeBSD.org/security/[FreeBSD Security "
"Officer] and oversees the `{security-officer}`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3301
+#: documentation/content/en/articles/committers-guide/_index.adoc:3309
msgid ""
-"{committers-name}:: {svn-src-all}, {svn-ports-all} and {svn-doc-all} are the "
+"{committers-name}:: {dev-src-all}, {dev-ports-all} and {dev-doc-all} are the "
"mailing lists that the version control system uses to send commit messages "
"to. _Never_ send email directly to these lists. Only send replies to this "
"list when they are short and are directly related to a commit."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3306
+#: documentation/content/en/articles/committers-guide/_index.adoc:3314
msgid ""
"{developers-name}:: All committers are subscribed to -developers. This list "
"was created to be a forum for the committers \"community\" issues. Examples "
"are Core voting, announcements, etc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3310
+#: documentation/content/en/articles/committers-guide/_index.adoc:3318
msgid ""
"The {developers-name} is for the exclusive use of FreeBSD committers. To "
"develop FreeBSD, committers must have the ability to openly discuss matters "
"that will be resolved before they are publicly announced. Frank discussions "
"of work in progress are not suitable for open publication and may harm "
"FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3314
+#: documentation/content/en/articles/committers-guide/_index.adoc:3322
msgid ""
"All FreeBSD committers are expected not to not publish or forward messages "
"from the {developers-name} outside the list membership without permission of "
"all of the authors. Violators will be removed from the {developers-name}, "
"resulting in a suspension of commit privileges. Repeated or flagrant "
"violations may result in permanent revocation of commit privileges."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3320
+#: documentation/content/en/articles/committers-guide/_index.adoc:3328
msgid ""
"This list is _not_ intended as a place for code reviews or for any technical "
"discussion. In fact using it as such hurts the FreeBSD Project as it gives "
"a sense of a closed list where general decisions affecting all of the "
"FreeBSD using community are made without being \"open\". Last, but not "
"least __never, never ever, email the {developers-name} and CC:/BCC: another "
"FreeBSD list__. Never, ever email another FreeBSD email list and CC:/BCC: "
"the {developers-name}. Doing so can greatly diminish the benefits of this "
"list."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3321
+#: documentation/content/en/articles/committers-guide/_index.adoc:3329
#, no-wrap
msgid "SSH Quick-Start Guide"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3326
+#: documentation/content/en/articles/committers-guide/_index.adoc:3334
msgid ""
"If you do not wish to type your password in every time you use man:ssh[1], "
"and you use keys to authenticate, man:ssh-agent[1] is there for your "
"convenience. If you want to use man:ssh-agent[1], make sure that you run it "
"before running other applications. X users, for example, usually do this "
"from their [.filename]#.xsession# or [.filename]#.xinitrc#. See man:ssh-"
"agent[1] for details."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3327
+#: documentation/content/en/articles/committers-guide/_index.adoc:3335
msgid ""
"Generate a key pair using man:ssh-keygen[1]. The key pair will wind up in "
"your [.filename]#$HOME/.ssh/# directory."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:3331
+#: documentation/content/en/articles/committers-guide/_index.adoc:3339
msgid "Only ECDSA, Ed25519 or RSA keys are supported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3333
+#: documentation/content/en/articles/committers-guide/_index.adoc:3341
msgid ""
-"Send your public key ([.filename]#$HOME/.ssh/id_ecdsa.pub#, [.filename]#"
-"$HOME/.ssh/id_ed25519.pub#, or [.filename]#$HOME/.ssh/id_rsa.pub#) to the "
-"person setting you up as a committer so it can be put into [."
+"Send your public key ([.filename]#$HOME/.ssh/id_ecdsa.pub#, [."
+"filename]#$HOME/.ssh/id_ed25519.pub#, or [.filename]#$HOME/.ssh/id_rsa.pub#) "
+"to the person setting you up as a committer so it can be put into [."
"filename]#yourlogin# in [.filename]#/etc/ssh-keys/# on `freefall`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3338
+#: documentation/content/en/articles/committers-guide/_index.adoc:3346
msgid ""
"Now man:ssh-add[1] can be used for authentication once per session. It "
"prompts for the private key's pass phrase, and then stores it in the "
"authentication agent (man:ssh-agent[1]). Use `ssh-add -d` to remove keys "
"stored in the agent."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3340
+#: documentation/content/en/articles/committers-guide/_index.adoc:3348
msgid "Test with a simple remote command: `ssh freefall.FreeBSD.org ls /usr`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3342
+#: documentation/content/en/articles/committers-guide/_index.adoc:3350
msgid ""
"For more information, see package:security/openssh-portable[], man:ssh[1], "
"man:ssh-add[1], man:ssh-agent[1], man:ssh-keygen[1], and man:scp[1]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3344
+#: documentation/content/en/articles/committers-guide/_index.adoc:3352
msgid ""
"For information on adding, changing, or removing man:ssh[1] keys, see "
"https://wiki.freebsd.org/clusteradm/ssh-keys[this article]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3346
+#: documentation/content/en/articles/committers-guide/_index.adoc:3354
#, no-wrap
msgid "Coverity(R) Availability for FreeBSD Committers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3350
+#: documentation/content/en/articles/committers-guide/_index.adoc:3358
msgid ""
"All FreeBSD developers can obtain access to Coverity analysis results of all "
"FreeBSD Project software. All who are interested in obtaining access to the "
"analysis results of the automated Coverity runs, can sign up at http://scan."
"coverity.com/[Coverity Scan]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3353
+#: documentation/content/en/articles/committers-guide/_index.adoc:3361
msgid ""
"The FreeBSD wiki includes a mini-guide for developers who are interested in "
"working with the Coverity(R) analysis reports: https://wiki.freebsd.org/"
"CoverityPrevent[https://wiki.freebsd.org/CoverityPrevent]. Please note that "
"this mini-guide is only readable by FreeBSD developers, so if you cannot "
"access this page, you will have to ask someone to add you to the appropriate "
"Wiki access list."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3355
+#: documentation/content/en/articles/committers-guide/_index.adoc:3363
msgid ""
"Finally, all FreeBSD developers who are going to use Coverity(R) are always "
"encouraged to ask for more details and usage information, by posting any "
"questions to the mailing list of the FreeBSD developers."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3357
+#: documentation/content/en/articles/committers-guide/_index.adoc:3365
#, no-wrap
msgid "The FreeBSD Committers' Big List of Rules"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3362
+#: documentation/content/en/articles/committers-guide/_index.adoc:3370
msgid ""
"Everyone involved with the FreeBSD project is expected to abide by the _Code "
"of Conduct_ available from link:https://www.FreeBSD.org/internal/code-of-"
"conduct/[https://www.FreeBSD.org/internal/code-of-conduct]. As committers, "
"you form the public face of the project, and how you behave has a vital "
"impact on the public perception of it. This guide expands on the parts of "
"the _Code of Conduct_ specific to committers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3364
-#: documentation/content/en/articles/committers-guide/_index.adoc:3394
+#: documentation/content/en/articles/committers-guide/_index.adoc:3372
+#: documentation/content/en/articles/committers-guide/_index.adoc:3402
msgid "Respect other committers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3365
-#: documentation/content/en/articles/committers-guide/_index.adoc:3410
+#: documentation/content/en/articles/committers-guide/_index.adoc:3373
+#: documentation/content/en/articles/committers-guide/_index.adoc:3418
msgid "Respect other contributors."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3366
-#: documentation/content/en/articles/committers-guide/_index.adoc:3425
+#: documentation/content/en/articles/committers-guide/_index.adoc:3374
+#: documentation/content/en/articles/committers-guide/_index.adoc:3433
msgid "Discuss any significant change _before_ committing."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3367
+#: documentation/content/en/articles/committers-guide/_index.adoc:3375
msgid ""
"Respect existing maintainers (if listed in the `MAINTAINER` field in [."
"filename]#Makefile# or in [.filename]#MAINTAINER# in the top-level "
"directory)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3368
-#: documentation/content/en/articles/committers-guide/_index.adoc:3440
+#: documentation/content/en/articles/committers-guide/_index.adoc:3376
+#: documentation/content/en/articles/committers-guide/_index.adoc:3448
msgid ""
"Any disputed change must be backed out pending resolution of the dispute if "
"requested by a maintainer. Security related changes may override a "
"maintainer's wishes at the Security Officer's discretion."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3369
+#: documentation/content/en/articles/committers-guide/_index.adoc:3377
msgid ""
"Changes go to FreeBSD-CURRENT before FreeBSD-STABLE unless specifically "
"permitted by the release engineer or unless they are not applicable to "
"FreeBSD-CURRENT. Any non-trivial or non-urgent change which is applicable "
"should also be allowed to sit in FreeBSD-CURRENT for at least 3 days before "
"merging so that it can be given sufficient testing. The release engineer has "
"the same authority over the FreeBSD-STABLE branch as outlined for the "
"maintainer in rule #5."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3370
-#: documentation/content/en/articles/committers-guide/_index.adoc:3455
+#: documentation/content/en/articles/committers-guide/_index.adoc:3378
+#: documentation/content/en/articles/committers-guide/_index.adoc:3463
msgid "Do not fight in public with other committers; it looks bad."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3371
+#: documentation/content/en/articles/committers-guide/_index.adoc:3379
msgid ""
"Respect all code freezes and read the `committers` and `developers` mailing "
"lists in a timely manner so you know when a code freeze is in effect."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3372
-#: documentation/content/en/articles/committers-guide/_index.adoc:3470
+#: documentation/content/en/articles/committers-guide/_index.adoc:3380
+#: documentation/content/en/articles/committers-guide/_index.adoc:3478
msgid "When in doubt on any procedure, ask first!"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3373
-#: documentation/content/en/articles/committers-guide/_index.adoc:3475
+#: documentation/content/en/articles/committers-guide/_index.adoc:3381
+#: documentation/content/en/articles/committers-guide/_index.adoc:3483
msgid "Test your changes before committing them."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3374
-#: documentation/content/en/articles/committers-guide/_index.adoc:3484
+#: documentation/content/en/articles/committers-guide/_index.adoc:3382
+#: documentation/content/en/articles/committers-guide/_index.adoc:3492
msgid ""
"Do not commit to contributed software without _explicit_ approval from the "
"respective maintainers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3385
+#: documentation/content/en/articles/committers-guide/_index.adoc:3393
msgid ""
"As noted, breaking some of these rules can be grounds for suspension or, "
"upon repeated offense, permanent removal of commit privileges. Individual "
"members of core have the power to temporarily suspend commit privileges "
"until core as a whole has the chance to review the issue. In case of an "
"\"emergency\" (a committer doing damage to the repository), a temporary "
"suspension may also be done by the repository meisters. Only a 2/3 majority "
"of core has the authority to suspend commit privileges for longer than a "
"week or to remove them permanently. This rule does not exist to set core up "
"as a bunch of cruel dictators who can dispose of committers as casually as "
"empty soda cans, but to give the project a kind of safety fuse. If someone "
"is out of control, it is important to be able to deal with this immediately "
"rather than be paralyzed by debate. In all cases, a committer whose "
"privileges are suspended or revoked is entitled to a \"hearing\" by core, "
"the total duration of the suspension being determined at that time. A "
"committer whose privileges are suspended may also request a review of the "
"decision after 30 days and every 30 days thereafter (unless the total "
"suspension period is less than 30 days). A committer whose privileges have "
"been revoked entirely may request a review after a period of 6 months has "
"elapsed. This review policy is _strictly informal_ and, in all cases, core "
"reserves the right to either act on or disregard requests for review if they "
"feel their original decision to be the right one."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3389
+#: documentation/content/en/articles/committers-guide/_index.adoc:3397
msgid ""
"In all other aspects of project operation, core is a subset of committers "
"and is bound by the __same rules__. Just because someone is in core this "
"does not mean that they have special dispensation to step outside any of the "
"lines painted here; core's \"special powers\" only kick in when it acts as a "
"group, not on an individual basis. As individuals, the core team members "
"are all committers first and core second."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3390
+#: documentation/content/en/articles/committers-guide/_index.adoc:3398
#, no-wrap
msgid "Details"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3398
+#: documentation/content/en/articles/committers-guide/_index.adoc:3406
msgid ""
"This means that you need to treat other committers as the peer-group "
"developers that they are. Despite our occasional attempts to prove the "
"contrary, one does not get to be a committer by being stupid and nothing "
"rankles more than being treated that way by one of your peers. Whether we "
"always feel respect for one another or not (and everyone has off days), we "
"still have to _treat_ other committers with respect at all times, on public "
"forums and in private email."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3400
+#: documentation/content/en/articles/committers-guide/_index.adoc:3408
msgid ""
"Being able to work together long term is this project's greatest asset, one "
"far more important than any set of changes to the code, and turning "
"arguments about code into issues that affect our long-term ability to work "
"harmoniously together is just not worth the trade-off by any conceivable "
"stretch of the imagination."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3406
+#: documentation/content/en/articles/committers-guide/_index.adoc:3414
msgid ""
"To comply with this rule, do not send email when you are angry or otherwise "
"behave in a manner which is likely to strike others as needlessly "
"confrontational. First calm down, then think about how to communicate in "
"the most effective fashion for convincing the other persons that your side "
"of the argument is correct, do not just blow off some steam so you can feel "
"better in the short term at the cost of a long-term flame war. Not only is "
"this very bad \"energy economics\", but repeated displays of public "
"aggression which impair our ability to work well together will be dealt with "
"severely by the project leadership and may result in suspension or "
"termination of your commit privileges. The project leadership will take "
"into account both public and private communications brought before it. It "
"will not seek the disclosure of private communications, but it will take it "
"into account if it is volunteered by the committers involved in the "
"complaint."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3409
+#: documentation/content/en/articles/committers-guide/_index.adoc:3417
msgid ""
"All of this is never an option which the project's leadership enjoys in the "
"slightest, but unity comes first. No amount of code or good advice is worth "
"trading that away."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3422
+#: documentation/content/en/articles/committers-guide/_index.adoc:3430
msgid ""
"You were not always a committer. At one time you were a contributor. "
"Remember that at all times. Remember what it was like trying to get help "
"and attention. Do not forget that your work as a contributor was very "
"important to you. Remember what it was like. Do not discourage, belittle, "
"or demean contributors. Treat them with respect. They are our committers in "
"waiting. They are every bit as important to the project as committers. "
"Their contributions are as valid and as important as your own. After all, "
"you made many contributions before you became a committer. Always remember "
"that."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3424
+#: documentation/content/en/articles/committers-guide/_index.adoc:3432
msgid ""
"Consider the points raised under <<respect,Respect other committers>> and "
"apply them also to contributors."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3431
+#: documentation/content/en/articles/committers-guide/_index.adoc:3439
msgid ""
"The repository is not where changes are initially submitted for correctness "
"or argued over, that happens first in the mailing lists or by use of the "
"Phabricator service. The commit will only happen once something resembling "
"consensus has been reached. This does not mean that permission is required "
"before correcting every obvious syntax error or manual page misspelling, "
"just that it is good to develop a feel for when a proposed change is not "
"quite such a no-brainer and requires some feedback first. People really do "
"not mind sweeping changes if the result is something clearly better than "
"what they had before, they just do not like being _surprised_ by those "
"changes. The very best way of making sure that things are on the right "
"track is to have code reviewed by one or more other committers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3433
+#: documentation/content/en/articles/committers-guide/_index.adoc:3441
msgid "When in doubt, ask for review!"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3434
+#: documentation/content/en/articles/committers-guide/_index.adoc:3442
msgid "Respect existing maintainers if listed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3439
+#: documentation/content/en/articles/committers-guide/_index.adoc:3447
msgid ""
"Many parts of FreeBSD are not \"owned\" in the sense that any specific "
"individual will jump up and yell if you commit a change to \"their\" area, "
"but it still pays to check first. One convention we use is to put a "
"maintainer line in the [.filename]#Makefile# for any package or subtree "
"which is being actively maintained by one or more people; see extref:"
"{developers-handbook}[Source Tree Guidelines and Policies, policies] for "
"documentation on this. Where sections of code have several maintainers, "
"commits to affected areas by one maintainer need to be reviewed by at least "
"one other maintainer. In cases where the \"maintainer-ship\" of something "
"is not clear, look at the repository logs for the files in question and see "
"if someone has been working recently or predominantly in that area."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3445
+#: documentation/content/en/articles/committers-guide/_index.adoc:3453
msgid ""
"This may be hard to swallow in times of conflict (when each side is "
"convinced that they are in the right, of course) but a version control "
"system makes it unnecessary to have an ongoing dispute raging when it is far "
"easier to simply reverse the disputed change, get everyone calmed down again "
"and then try to figure out what is the best way to proceed. If the change "
"turns out to be the best thing after all, it can be easily brought back. If "
"it turns out not to be, then the users did not have to live with the bogus "
"change in the tree while everyone was busily debating its merits. People "
"_very_ rarely call for back-outs in the repository since discussion "
"generally exposes bad or controversial changes before the commit even "
"happens, but on such rare occasions the back-out should be done without "
"argument so that we can get immediately on to the topic of figuring out "
"whether it was bogus or not."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3446
+#: documentation/content/en/articles/committers-guide/_index.adoc:3454
msgid ""
"Changes go to FreeBSD-CURRENT before FreeBSD-STABLE unless specifically "
"permitted by the release engineer or unless they are not applicable to "
"FreeBSD-CURRENT. Any non-trivial or non-urgent change which is applicable "
"should also be allowed to sit in FreeBSD-CURRENT for at least 3 days before "
"merging so that it can be given sufficient testing. The release engineer has "
"the same authority over the FreeBSD-STABLE branch as outlined in rule #5."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3452
+#: documentation/content/en/articles/committers-guide/_index.adoc:3460
msgid ""
"This is another \"do not argue about it\" issue since it is the release "
"engineer who is ultimately responsible (and gets beaten up) if a change "
"turns out to be bad. Please respect this and give the release engineer your "
"full cooperation when it comes to the FreeBSD-STABLE branch. The management "
"of FreeBSD-STABLE may frequently seem to be overly conservative to the "
"casual observer, but also bear in mind the fact that conservatism is "
"supposed to be the hallmark of FreeBSD-STABLE and different rules apply "
"there than in FreeBSD-CURRENT. There is also really no point in having "
"FreeBSD-CURRENT be a testing ground if changes are merged over to FreeBSD-"
"STABLE immediately. Changes need a chance to be tested by the FreeBSD-"
"CURRENT developers, so allow some time to elapse before merging unless the "
"FreeBSD-STABLE fix is critical, time sensitive or so obvious as to make "
"further testing unnecessary (spelling fixes to manual pages, obvious bug/"
"typo fixes, etc.) In other words, apply common sense."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3454
+#: documentation/content/en/articles/committers-guide/_index.adoc:3462
msgid ""
"Changes to the security branches (for example, `releng/9.3`) must be "
"approved by a member of the `{security-officer}`, or in some cases, by a "
"member of the `{re}`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3465
+#: documentation/content/en/articles/committers-guide/_index.adoc:3473
msgid ""
"This project has a public image to uphold and that image is very important "
"to all of us, especially if we are to continue to attract new members. "
"There will be occasions when, despite everyone's very best attempts at self-"
"control, tempers are lost and angry words are exchanged. The best thing "
"that can be done in such cases is to minimize the effects of this until "
"everyone has cooled back down. Do not air angry words in public and do not "
"forward private correspondence or other private communications to public "
"mailing lists, mail aliases, instant messaging channels or social media "
"sites. What people say one-to-one is often much less sugar-coated than what "
"they would say in public, and such communications therefore have no place "
"there - they only serve to inflame an already bad situation. If the person "
"sending a flame-o-gram at least had the grace to send it privately, then "
"have the grace to keep it private yourself. If you feel you are being "
"unfairly treated by another developer, and it is causing you anguish, bring "
"the matter up with core rather than taking it public. Core will do its best "
"to play peace makers and get things back to sanity. In cases where the "
"dispute involves a change to the codebase and the participants do not appear "
"to be reaching an amicable agreement, core may appoint a mutually-agreeable "
"third party to resolve the dispute. All parties involved must then agree to "
"be bound by the decision reached by this third party."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3466
+#: documentation/content/en/articles/committers-guide/_index.adoc:3474
msgid ""
"Respect all code freezes and read the `committers` and `developers` mailing "
"list on a timely basis so you know when a code freeze is in effect."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3469
+#: documentation/content/en/articles/committers-guide/_index.adoc:3477
msgid ""
"Committing unapproved changes during a code freeze is a really big mistake "
"and committers are expected to keep up-to-date on what is going on before "
"jumping in after a long absence and committing 10 megabytes worth of "
"accumulated stuff. People who abuse this on a regular basis will have their "
"commit privileges suspended until they get back from the FreeBSD Happy "
"Reeducation Camp we run in Greenland."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3474
+#: documentation/content/en/articles/committers-guide/_index.adoc:3482
msgid ""
"Many mistakes are made because someone is in a hurry and just assumes they "
"know the right way of doing something. If you have not done it before, "
"chances are good that you do not actually know the way we do things and "
"really need to ask first or you are going to completely embarrass yourself "
"in public. There is no shame in asking \"how in the heck do I do this?\" We "
"already know you are an intelligent person; otherwise, you would not be a "
"committer."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3483
+#: documentation/content/en/articles/committers-guide/_index.adoc:3491
msgid ""
"This may sound obvious, but if it really were so obvious then we probably "
"would not see so many cases of people clearly not doing this. If your "
"changes are to the kernel, make sure you can still compile both GENERIC and "
"LINT. If your changes are anywhere else, make sure you can still make "
"world. If your changes are to a branch, make sure your testing occurs with "
"a machine which is running that code. If you have a change which also may "
"break another architecture, be sure and test on all supported "
"architectures. Please refer to the https://www.FreeBSD.org/internal/"
"[FreeBSD Internal Page] for a list of available resources. As other "
"architectures are added to the FreeBSD supported platforms list, the "
"appropriate shared testing resources will be made available."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3486
+#: documentation/content/en/articles/committers-guide/_index.adoc:3494
msgid ""
"Contributed software is anything under the [.filename]#src/contrib#, [."
"filename]#src/crypto#, or [.filename]#src/sys/contrib# trees."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3491
+#: documentation/content/en/articles/committers-guide/_index.adoc:3499
msgid ""
"The trees mentioned above are for contributed software usually imported onto "
"a vendor branch. Committing something there may cause unnecessary headaches "
"when importing newer versions of the software. As a general consider "
"sending patches upstream to the vendor. Patches may be committed to FreeBSD "
"first with permission of the maintainer."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3495
+#: documentation/content/en/articles/committers-guide/_index.adoc:3503
msgid ""
"Reasons for modifying upstream software range from wanting strict control "
"over a tightly coupled dependency to lack of portability in the canonical "
"repository's distribution of their code. Regardless of the reason, effort "
"to minimize the maintenance burden of fork is helpful to fellow "
"maintainers. Avoid committing trivial or cosmetic changes to files since it "
"makes every merge thereafter more difficult: such patches need to be "
"manually re-verified every import."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3498
+#: documentation/content/en/articles/committers-guide/_index.adoc:3506
msgid ""
"If a particular piece of software lacks a maintainer, you are encouraged to "
"take up ownership. If you are unsure of the current maintainership email "
"{freebsd-arch} and ask."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3499
+#: documentation/content/en/articles/committers-guide/_index.adoc:3507
#, no-wrap
msgid "Policy on Multiple Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3503
+#: documentation/content/en/articles/committers-guide/_index.adoc:3511
msgid ""
"FreeBSD has added several new architecture ports during recent release "
"cycles and is truly no longer an i386(TM) centric operating system. In an "
"effort to make it easier to keep FreeBSD portable across the platforms we "
"support, core has developed this mandate:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3507
+#: documentation/content/en/articles/committers-guide/_index.adoc:3515
msgid ""
"Our 32-bit reference platform is i386, and our 64-bit reference platform is "
"amd64. Major design work (including major API and ABI changes) must prove "
"itself on at least one 32-bit and at least one 64-bit platform, preferably "
"the primary reference platforms, before it may be committed to the source "
"tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3509
+#: documentation/content/en/articles/committers-guide/_index.adoc:3517
msgid ""
"The i386 and amd64 platforms were chosen due to being more readily available "
"to developers and as representatives of more diverse processor and system "
"designs - big versus little endian, register file versus register stack, "
"different DMA and cache implementations, hardware page tables versus "
"software TLB management etc."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3511
+#: documentation/content/en/articles/committers-guide/_index.adoc:3519
msgid ""
"We will continue to re-evaluate this policy as cost and availability of the "
"64-bit platforms change."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3515
+#: documentation/content/en/articles/committers-guide/_index.adoc:3523
msgid ""
"Developers should also be aware of our Tier Policy for the long term support "
"of hardware architectures. The rules here are intended to provide guidance "
"during the development process, and are distinct from the requirements for "
"features and architectures listed in that section. The Tier rules for "
"feature support on architectures at release-time are more strict than the "
"rules for changes during the development process."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3516
+#: documentation/content/en/articles/committers-guide/_index.adoc:3524
#, no-wrap
msgid "Other Suggestions"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3520
+#: documentation/content/en/articles/committers-guide/_index.adoc:3528
msgid ""
"When committing documentation changes, use a spell checker before "
"committing. For all XML docs, verify that the formatting directives are "
"correct by running `make lint` and package:textproc/igor[]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3522
+#: documentation/content/en/articles/committers-guide/_index.adoc:3530
msgid ""
"For manual pages, run package:sysutils/manck[] and package:textproc/igor[] "
"over the manual page to verify all of the cross references and file "
"references are correct and that the man page has all of the appropriate "
"`MLINKS` installed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3529
+#: documentation/content/en/articles/committers-guide/_index.adoc:3537
msgid ""
"Do not mix style fixes with new functionality. A style fix is any change "
"which does not modify the functionality of the code. Mixing the changes "
"obfuscates the functionality change when asking for differences between "
"revisions, which can hide any new bugs. Do not include whitespace changes "
"with content changes in commits to [.filename]#doc/#. The extra clutter in "
"the diffs makes the translators' job much more difficult. Instead, make any "
"style or whitespace changes in separate commits that are clearly labeled as "
"such in the commit message."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3530
+#: documentation/content/en/articles/committers-guide/_index.adoc:3538
#, no-wrap
msgid "Deprecating Features"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3533
+#: documentation/content/en/articles/committers-guide/_index.adoc:3541
msgid ""
"When it is necessary to remove functionality from software in the base "
"system, follow these guidelines whenever possible:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3535
+#: documentation/content/en/articles/committers-guide/_index.adoc:3543
msgid ""
"Mention is made in the manual page and possibly the release notes that the "
"option, utility, or interface is deprecated. Use of the deprecated feature "
"generates a warning."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3536
+#: documentation/content/en/articles/committers-guide/_index.adoc:3544
msgid ""
"The option, utility, or interface is preserved until the next major (point "
"zero) release."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3537
+#: documentation/content/en/articles/committers-guide/_index.adoc:3545
msgid ""
"The option, utility, or interface is removed and no longer documented. It is "
"now obsolete. It is also generally a good idea to note its removal in the "
"release notes."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3538
+#: documentation/content/en/articles/committers-guide/_index.adoc:3546
#, no-wrap
msgid "Privacy and Confidentiality"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3541
+#: documentation/content/en/articles/committers-guide/_index.adoc:3549
msgid "Most FreeBSD business is done in public."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3544
+#: documentation/content/en/articles/committers-guide/_index.adoc:3552
msgid ""
"FreeBSD is an _open_ project. Which means that not only can anyone use the "
"source code, but that most of the development process is open to public "
"scrutiny."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3545
+#: documentation/content/en/articles/committers-guide/_index.adoc:3553
msgid "Certain sensitive matters must remain private or held under embargo."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3551
+#: documentation/content/en/articles/committers-guide/_index.adoc:3559
msgid ""
"There unfortunately cannot be complete transparency. As a FreeBSD developer "
"you will have a certain degree of privileged access to information. "
"Consequently you are expected to respect certain requirements for "
"confidentiality. Sometimes the need for confidentiality comes from external "
"collaborators or has a specific time limit. Mostly though, it is a matter "
"of not releasing private communications."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3552
+#: documentation/content/en/articles/committers-guide/_index.adoc:3560
msgid ""
"The Security Officer has sole control over the release of security "
"advisories."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3557
+#: documentation/content/en/articles/committers-guide/_index.adoc:3565
msgid ""
"Where there are security problems that affect many different operating "
"systems, FreeBSD frequently depends on early access to be able to prepare "
"advisories for coordinated release. Unless FreeBSD developers can be "
"trusted to maintain security, such early access will not be made available. "
"The Security Officer is responsible for controlling pre-release access to "
"information about vulnerabilities, and for timing the release of all "
"advisories. He may request help under condition of confidentiality from any "
"developer with relevant knowledge to prepare security fixes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3558
+#: documentation/content/en/articles/committers-guide/_index.adoc:3566
msgid ""
"Communications with Core are kept confidential for as long as necessary."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3563
+#: documentation/content/en/articles/committers-guide/_index.adoc:3571
msgid ""
"Communications to core will initially be treated as confidential. "
"Eventually however, most of Core's business will be summarized into the "
"monthly or quarterly core reports. Care will be taken to avoid publicising "
"any sensitive details. Records of some particularly sensitive subjects may "
"not be reported on at all and will be retained only in Core's private "
"archives."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3564
+#: documentation/content/en/articles/committers-guide/_index.adoc:3572
msgid ""
"Non-disclosure Agreements may be required for access to certain commercially "
"sensitive data."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3567
+#: documentation/content/en/articles/committers-guide/_index.adoc:3575
msgid ""
"Access to certain commercially sensitive data may only be available under a "
"Non-Disclosure Agreement. The FreeBSD Foundation legal staff must be "
"consulted before any binding agreements are entered into."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3568
+#: documentation/content/en/articles/committers-guide/_index.adoc:3576
msgid "Private communications must not be made public without permission."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3571
+#: documentation/content/en/articles/committers-guide/_index.adoc:3579
msgid ""
"Beyond the specific requirements above there is a general expectation not to "
"publish private communications between developers without the consent of all "
"parties involved. Ask permission before forwarding a message onto a public "
"mailing list, or posting it to a forum or website that can be accessed by "
"other than the original correspondents."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3572
+#: documentation/content/en/articles/committers-guide/_index.adoc:3580
msgid ""
"Communications on project-only or restricted access channels must be kept "
"private."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3575
+#: documentation/content/en/articles/committers-guide/_index.adoc:3583
msgid ""
"Similarly to personal communications, certain internal communications "
"channels, including FreeBSD Committer only mailing lists and restricted "
"access IRC channels are considered private communications. Permission is "
"required to publish material from these sources."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3576
+#: documentation/content/en/articles/committers-guide/_index.adoc:3584
msgid "Core may approve publication."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3578
+#: documentation/content/en/articles/committers-guide/_index.adoc:3586
msgid ""
"Where it is impractical to obtain permission due to the number of "
"correspondents or where permission to publish is unreasonably withheld, Core "
"may approve release of such private matters that merit more general "
"publication."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3580
+#: documentation/content/en/articles/committers-guide/_index.adoc:3588
#, no-wrap
msgid "Support for Multiple Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3587
+#: documentation/content/en/articles/committers-guide/_index.adoc:3595
msgid ""
"FreeBSD is a highly portable operating system intended to function on many "
"different types of hardware architectures. Maintaining clean separation of "
"Machine Dependent (MD) and Machine Independent (MI) code, as well as "
"minimizing MD code, is an important part of our strategy to remain agile "
"with regards to current hardware trends. Each new hardware architecture "
"supported by FreeBSD adds substantially to the cost of code maintenance, "
"toolchain support, and release engineering. It also dramatically increases "
"the cost of effective testing of kernel changes. As such, there is strong "
"motivation to differentiate between classes of support for various "
"architectures while remaining strong in a few key architectures that are "
"seen as the FreeBSD \"target audience\"."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3588
+#: documentation/content/en/articles/committers-guide/_index.adoc:3596
#, no-wrap
msgid "Statement of General Intent"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3593
+#: documentation/content/en/articles/committers-guide/_index.adoc:3601
msgid ""
"The FreeBSD Project targets \"production quality commercial off-the-shelf "
"(COTS) workstation, server, and high-end embedded systems\". By retaining a "
"focus on a narrow set of architectures of interest in these environments, "
"the FreeBSD Project is able to maintain high levels of quality, stability, "
"and performance, as well as minimize the load on various support teams on "
"the project, such as the ports team, documentation team, security officer, "
"and release engineering teams. Diversity in hardware support broadens the "
"options for FreeBSD consumers by offering new features and usage "
"opportunities, but these benefits must always be carefully considered in "
"terms of the real-world maintenance cost associated with additional platform "
"support."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3600
+#: documentation/content/en/articles/committers-guide/_index.adoc:3608
msgid ""
"The FreeBSD Project differentiates platform targets into four tiers. Each "
"tier includes a list of guarantees consumers may rely on as well as "
"obligations by the Project and developers to fulfill those guarantees. "
"These lists define the minimum guarantees for each tier. The Project and "
"developers may provide additional levels of support beyond the minimum "
"guarantees for a given tier, but such additional support is not guaranteed. "
"Each platform target is assigned to a specific tier for each stable branch. "
"As a result, a platform target might be assigned to different tiers on "
"concurrent stable branches."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3601
+#: documentation/content/en/articles/committers-guide/_index.adoc:3609
#, no-wrap
msgid "Platform Targets"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3608
+#: documentation/content/en/articles/committers-guide/_index.adoc:3616
msgid ""
"Support for a hardware platform consists of two components: kernel support "
"and userland Application Binary Interfaces (ABIs). Kernel platform support "
"includes things needed to run a FreeBSD kernel on a hardware platform such "
"as machine-dependent virtual memory management and device drivers. A "
"userland ABI specifies an interface for user processes to interact with a "
"FreeBSD kernel and base system libraries. A userland ABI includes system "
"call interfaces, the layout and semantics of public data structures, and the "
"layout and semantics of arguments passed to subroutines. Some components of "
"an ABI may be defined by specifications such as the layout of C++ exception "
"objects or calling conventions for C functions."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3610
+#: documentation/content/en/articles/committers-guide/_index.adoc:3618
msgid ""
"A FreeBSD kernel also uses an ABI (sometimes referred to as the Kernel "
"Binary Interface (KBI)) which includes the semantics and layouts of public "
"data structures and the layout and semantics of arguments to public "
"functions within the kernel itself."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3615
+#: documentation/content/en/articles/committers-guide/_index.adoc:3623
msgid ""
"A FreeBSD kernel may support multiple userland ABIs. For example, FreeBSD's "
"amd64 kernel supports FreeBSD amd64 and i386 userland ABIs as well as Linux "
"x86_64 and i386 userland ABIs. A FreeBSD kernel should support a \"native\" "
"ABI as the default ABI. The native \"ABI\" generally shares certain "
"properties with the kernel ABI such as the C calling convention, sizes of "
"basic types, etc."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3617
+#: documentation/content/en/articles/committers-guide/_index.adoc:3625
msgid ""
"Tiers are defined for both kernels and userland ABIs. In the common case, a "
"platform's kernel and FreeBSD ABIs are assigned to the same tier."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3618
+#: documentation/content/en/articles/committers-guide/_index.adoc:3626
#, no-wrap
msgid "Tier 1: Fully-Supported Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3623
+#: documentation/content/en/articles/committers-guide/_index.adoc:3631
msgid ""
"Tier 1 platforms are the most mature FreeBSD platforms. They are supported "
"by the security officer, release engineering, and Ports Management Team. "
"Tier 1 architectures are expected to be Production Quality with respect to "
"all aspects of the FreeBSD operating system, including installation and "
"development environments."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3625
+#: documentation/content/en/articles/committers-guide/_index.adoc:3633
msgid ""
"The FreeBSD Project provides the following guarantees to consumers of Tier 1 "
"platforms:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3627
+#: documentation/content/en/articles/committers-guide/_index.adoc:3635
msgid ""
"Official FreeBSD release images will be provided by the release engineering "
"team."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3628
+#: documentation/content/en/articles/committers-guide/_index.adoc:3636
msgid ""
"Binary updates and source patches for Security Advisories and Errata Notices "
"will be provided for supported releases."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3629
+#: documentation/content/en/articles/committers-guide/_index.adoc:3637
msgid ""
"Source patches for Security Advisories will be provided for supported "
"branches."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3630
+#: documentation/content/en/articles/committers-guide/_index.adoc:3638
msgid ""
"Binary updates and source patches for cross-platform Security Advisories "
"will typically be provided at the time of the announcement."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3631
+#: documentation/content/en/articles/committers-guide/_index.adoc:3639
msgid ""
"Changes to userland ABIs will generally include compatibility shims to "
"ensure correct operation of binaries compiled against any stable branch "
"where the platform is Tier 1. These shims might not be enabled in the "
"default install. If compatibility shims are not provided for an ABI change, "
"the lack of shims will be clearly documented in the release notes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3632
+#: documentation/content/en/articles/committers-guide/_index.adoc:3640
msgid ""
"Changes to certain portions of the kernel ABI will include compatibility "
"shims to ensure correct operation of kernel modules compiled against the "
"oldest supported release on the branch. Note that not all parts of the "
"kernel ABI are protected."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3633
+#: documentation/content/en/articles/committers-guide/_index.adoc:3641
msgid ""
"Official binary packages for third party software will be provided by the "
"ports team. For embedded architectures, these packages may be cross-built "
"from a different architecture."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3634
+#: documentation/content/en/articles/committers-guide/_index.adoc:3642
msgid ""
"Most relevant ports should either build or have the appropriate filters to "
"prevent inappropriate ones from building."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3635
+#: documentation/content/en/articles/committers-guide/_index.adoc:3643
msgid ""
"New features which are not inherently platform-specific will be fully "
"functional on all Tier 1 architectures."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3636
+#: documentation/content/en/articles/committers-guide/_index.adoc:3644
msgid ""
"Features and compatibility shims used by binaries compiled against older "
"stable branches may be removed in newer major versions. Such removals will "
"be clearly documented in the release notes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3637
+#: documentation/content/en/articles/committers-guide/_index.adoc:3645
msgid ""
"Tier 1 platforms should be fully documented. Basic operations will be "
"documented in the FreeBSD Handbook."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3638
+#: documentation/content/en/articles/committers-guide/_index.adoc:3646
msgid "Tier 1 platforms will be included in the source tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3639
+#: documentation/content/en/articles/committers-guide/_index.adoc:3647
msgid ""
"Tier 1 platforms should be self-hosting either via the in-tree toolchain or "
"an external toolchain. If an external toolchain is required, official binary "
"packages for an external toolchain will be provided."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3641
+#: documentation/content/en/articles/committers-guide/_index.adoc:3649
msgid ""
"To maintain maturity of Tier 1 platforms, the FreeBSD Project will maintain "
"the following resources to support development:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3643
+#: documentation/content/en/articles/committers-guide/_index.adoc:3651
msgid ""
"Build and test automation support either in the FreeBSD.org cluster or some "
"other location easily available for all developers. Embedded platforms may "
"substitute an emulator available in the FreeBSD.org cluster for actual "
"hardware."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3644
-#: documentation/content/en/articles/committers-guide/_index.adoc:3674
+#: documentation/content/en/articles/committers-guide/_index.adoc:3652
+#: documentation/content/en/articles/committers-guide/_index.adoc:3682
msgid "Inclusion in the `make universe` and `make tinderbox` targets."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3645
+#: documentation/content/en/articles/committers-guide/_index.adoc:3653
msgid ""
"Dedicated hardware in one of the FreeBSD clusters for package building "
"(either natively or via qemu-user)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3647
+#: documentation/content/en/articles/committers-guide/_index.adoc:3655
msgid ""
"Collectively, developers are required to provide the following to maintain "
"the Tier 1 status of a platform:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3649
+#: documentation/content/en/articles/committers-guide/_index.adoc:3657
msgid ""
"Changes to the source tree should not knowingly break the build of a Tier 1 "
"platform."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3650
+#: documentation/content/en/articles/committers-guide/_index.adoc:3658
msgid ""
"Tier 1 architectures must have a mature, healthy ecosystem of users and "
"active developers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3651
+#: documentation/content/en/articles/committers-guide/_index.adoc:3659
msgid ""
"Developers should be able to build packages on commonly available, non-"
"embedded Tier 1 systems. This can mean either native builds if non-embedded "
"systems are commonly available for the platform in question, or it can mean "
"cross-builds hosted on some other Tier 1 architecture."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3652
+#: documentation/content/en/articles/committers-guide/_index.adoc:3660
msgid ""
"Changes cannot break the userland ABI. If an ABI change is required, ABI "
"compatibility for existing binaries should be provided via use of symbol "
"versioning or shared library version bumps."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3653
+#: documentation/content/en/articles/committers-guide/_index.adoc:3661
msgid ""
"Changes merged to stable branches cannot break the protected portions of the "
"kernel ABI. If a kernel ABI change is required, the change should be "
"modified to preserve functionality of existing kernel modules."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3654
+#: documentation/content/en/articles/committers-guide/_index.adoc:3662
#, no-wrap
msgid "Tier 2: Developmental and Niche Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3658
+#: documentation/content/en/articles/committers-guide/_index.adoc:3666
msgid ""
"Tier 2 platforms are functional, but less mature FreeBSD platforms. They "
"are not supported by the security officer, release engineering, and Ports "
"Management Team."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3662
+#: documentation/content/en/articles/committers-guide/_index.adoc:3670
msgid ""
"Tier 2 platforms may be Tier 1 platform candidates that are still under "
"active development. Architectures reaching end of life may also be moved "
"from Tier 1 status to Tier 2 status as the availability of resources to "
"continue to maintain the system in a Production Quality state diminishes. "
"Well-supported niche architectures may also be Tier 2."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3664
+#: documentation/content/en/articles/committers-guide/_index.adoc:3672
msgid ""
"The FreeBSD Project provides the following guarantees to consumers of Tier 2 "
"platforms:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3666
+#: documentation/content/en/articles/committers-guide/_index.adoc:3674
msgid ""
"The ports infrastructure should include basic support for Tier 2 "
"architectures sufficient to support building ports and packages. This "
"includes support for basic packages such as ports-mgmt/pkg, but there is no "
"guarantee that arbitrary ports will be buildable or functional."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3667
+#: documentation/content/en/articles/committers-guide/_index.adoc:3675
msgid ""
"New features which are not inherently platform-specific should be feasible "
"on all Tier 2 architectures if not implemented."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3668
+#: documentation/content/en/articles/committers-guide/_index.adoc:3676
msgid "Tier 2 platforms will be included in the source tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3669
+#: documentation/content/en/articles/committers-guide/_index.adoc:3677
msgid ""
"Tier 2 platforms should be self-hosting either via the in-tree toolchain or "
"an external toolchain. If an external toolchain is required, official binary "
"packages for an external toolchain will be provided."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3670
+#: documentation/content/en/articles/committers-guide/_index.adoc:3678
msgid ""
"Tier 2 platforms should provide functional kernels and userlands even if an "
"official release distribution is not provided."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3672
+#: documentation/content/en/articles/committers-guide/_index.adoc:3680
msgid ""
"To maintain maturity of Tier 2 platforms, the FreeBSD Project will maintain "
"the following resources to support development:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3676
+#: documentation/content/en/articles/committers-guide/_index.adoc:3684
msgid ""
"Collectively, developers are required to provide the following to maintain "
"the Tier 2 status of a platform:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3678
+#: documentation/content/en/articles/committers-guide/_index.adoc:3686
msgid ""
"Changes to the source tree should not knowingly break the build of a Tier 2 "
"platform."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3679
+#: documentation/content/en/articles/committers-guide/_index.adoc:3687
msgid ""
"Tier 2 architectures must have an active ecosystem of users and developers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3680
+#: documentation/content/en/articles/committers-guide/_index.adoc:3688
msgid ""
"While changes are permitted to break the userland ABI, the ABI should not be "
"broken gratuitously. Significant userland ABI changes should be restricted "
"to major versions."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3681
+#: documentation/content/en/articles/committers-guide/_index.adoc:3689
msgid ""
"New features that are not yet implemented on Tier 2 architectures should "
"provide a means of disabling them on those architectures."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3682
+#: documentation/content/en/articles/committers-guide/_index.adoc:3690
#, no-wrap
msgid "Tier 3: Experimental Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3686
+#: documentation/content/en/articles/committers-guide/_index.adoc:3694
msgid ""
"Tier 3 platforms have at least partial FreeBSD support. They are _not_ "
"supported by the security officer, release engineering, and Ports Management "
"Team."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3689
+#: documentation/content/en/articles/committers-guide/_index.adoc:3697
msgid ""
"Tier 3 platforms are architectures in the early stages of development, for "
"non-mainstream hardware platforms, or which are considered legacy systems "
"unlikely to see broad future use. Initial support for Tier 3 platforms may "
"exist in a separate repository rather than the main source repository."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3692
+#: documentation/content/en/articles/committers-guide/_index.adoc:3700
msgid ""
"The FreeBSD Project provides no guarantees to consumers of Tier 3 platforms "
"and is not committed to maintaining resources to support development. Tier "
"3 platforms may not always be buildable, nor are any kernel or userland ABIs "
"considered stable."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3693
+#: documentation/content/en/articles/committers-guide/_index.adoc:3701
#, no-wrap
msgid "Unsupported Architectures"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3697
+#: documentation/content/en/articles/committers-guide/_index.adoc:3705
msgid ""
"Other platforms are not supported in any form by the project. The project "
"previously described these as Tier 4 systems."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3700
+#: documentation/content/en/articles/committers-guide/_index.adoc:3708
msgid ""
"After a platform transitions to unsupported, all support for the platform is "
"removed from the source, ports and documentation trees. Note that ports "
"support should remain as long as the platform is supported in a branch "
"supported by ports."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3701
+#: documentation/content/en/articles/committers-guide/_index.adoc:3709
#, no-wrap
msgid "Policy on Changing the Tier of an Architecture"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3705
+#: documentation/content/en/articles/committers-guide/_index.adoc:3713
msgid ""
"Systems may only be moved from one tier to another by approval of the "
"FreeBSD Core Team, which shall make that decision in collaboration with the "
"Security Officer, Release Engineering, and ports management teams. For a "
"platform to be promoted to a higher tier, any missing support guarantees "
"must be satisfied before the promotion is completed."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3707
+#: documentation/content/en/articles/committers-guide/_index.adoc:3715
#, no-wrap
msgid "Ports Specific FAQ"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3710
+#: documentation/content/en/articles/committers-guide/_index.adoc:3718
#, no-wrap
msgid "Adding a New Port"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3713
+#: documentation/content/en/articles/committers-guide/_index.adoc:3721
#, no-wrap
msgid "How do I add a new port?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3717
+#: documentation/content/en/articles/committers-guide/_index.adoc:3725
msgid ""
"Adding a port to the tree is relatively simple. Once the port is ready to be "
"added, as explained later <<ports-qa-add-new-extra,here>>, you need to add "
"the port's directory entry in the category's [.filename]#Makefile#. In this "
"[.filename]#Makefile#, ports are listed in alphabetical order and added to "
"the `SUBDIR` variable, like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3721
+#: documentation/content/en/articles/committers-guide/_index.adoc:3729
#, no-wrap
msgid "\tSUBDIR += newport\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3724
+#: documentation/content/en/articles/committers-guide/_index.adoc:3732
msgid ""
"Once the port and its category's Makefile are ready, the new port can be "
"committed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3729
+#: documentation/content/en/articles/committers-guide/_index.adoc:3737
#, no-wrap
msgid ""
"% git add category/Makefile category/newport\n"
"% git commit\n"
"% git push\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3733
+#: documentation/content/en/articles/committers-guide/_index.adoc:3741
msgid ""
"Don't forget to <<port-commit-message-formats,setup git hooks for the ports "
"tree as explained here>>; a specific hook has been developed to verify the "
"category's [.filename]#Makefile#."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3736
+#: documentation/content/en/articles/committers-guide/_index.adoc:3744
#, no-wrap
msgid "Any other things I need to know when I add a new port?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3739
+#: documentation/content/en/articles/committers-guide/_index.adoc:3747
msgid ""
"Check the port, preferably to make sure it compiles and packages correctly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3742
+#: documentation/content/en/articles/committers-guide/_index.adoc:3750
msgid ""
"The extref:{porters-handbook}testing[Porters Handbook's Testing Chapter] "
"contains more detailed instructions. See the extref:{porters-handbook}"
"testing[Portclippy / Portfmt, testing-portclippy] and the extref:{porters-"
"handbook}testing[Poudriere, testing-poudriere] sections."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3744
+#: documentation/content/en/articles/committers-guide/_index.adoc:3752
msgid ""
"You do not necessarily have to eliminate all warnings but make sure you have "
"fixed the simple ones."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3746
+#: documentation/content/en/articles/committers-guide/_index.adoc:3754
msgid ""
"If the port came from a submitter who has not contributed to the Project "
"before, add that person's name to the extref:{contributors}[Additional "
"Contributors, contrib-additional] section of the FreeBSD Contributors List."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3749
+#: documentation/content/en/articles/committers-guide/_index.adoc:3757
msgid ""
"Close the PR if the port came in as a PR. To close a PR, change the state "
"to `Issue Resolved` and the resolution as `Fixed`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3753
+#: documentation/content/en/articles/committers-guide/_index.adoc:3761
msgid ""
"If for some reason using extref:{porters-handbook}testing[Poudriere, testing-"
"poudriere] to test the new port is not possible, the bare minimum of testing "
"includes this sequence:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3763
+#: documentation/content/en/articles/committers-guide/_index.adoc:3771
#, no-wrap
msgid ""
"# make install\n"
"# make package\n"
"# make deinstall\n"
"# pkg add package you built above\n"
"# make deinstall\n"
"# make reinstall\n"
"# make package\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3766
+#: documentation/content/en/articles/committers-guide/_index.adoc:3774
msgid ""
"Note that poudriere is the reference for package building, it the port does "
"not build in poudriere, it will be removed."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3769
+#: documentation/content/en/articles/committers-guide/_index.adoc:3777
#, no-wrap
msgid "Removing an Existing Port"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3772
+#: documentation/content/en/articles/committers-guide/_index.adoc:3780
#, no-wrap
msgid "How do I remove an existing port?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3775
+#: documentation/content/en/articles/committers-guide/_index.adoc:3783
msgid ""
"First, please read the section about repository copies. Before you remove "
"the port, you have to verify there are no other ports depending on it."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3777
+#: documentation/content/en/articles/committers-guide/_index.adoc:3785
msgid "Make sure there is no dependency on the port in the ports collection:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3778
+#: documentation/content/en/articles/committers-guide/_index.adoc:3786
msgid "The port's PKGNAME appears in exactly one line in a recent INDEX file."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3779
+#: documentation/content/en/articles/committers-guide/_index.adoc:3787
msgid ""
"No other ports contains any reference to the port's directory or PKGNAME in "
"their Makefiles"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3783
+#: documentation/content/en/articles/committers-guide/_index.adoc:3791
msgid ""
"When using Git, consider using man:git-grep[1], it is much faster than `grep "
"-r`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3786
+#: documentation/content/en/articles/committers-guide/_index.adoc:3794
msgid "Then, remove the port:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3790
+#: documentation/content/en/articles/committers-guide/_index.adoc:3798
msgid "Remove the port's files and directory with `git rm`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3791
+#: documentation/content/en/articles/committers-guide/_index.adoc:3799
msgid ""
"Remove the `SUBDIR` listing of the port in the parent directory [."
"filename]#Makefile#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3792
-#: documentation/content/en/articles/committers-guide/_index.adoc:3807
+#: documentation/content/en/articles/committers-guide/_index.adoc:3800
+#: documentation/content/en/articles/committers-guide/_index.adoc:3815
msgid "Add an entry to [.filename]#ports/MOVED#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3793
+#: documentation/content/en/articles/committers-guide/_index.adoc:3801
msgid "Remove the port from [.filename]#ports/LEGAL# if it is there."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3798
+#: documentation/content/en/articles/committers-guide/_index.adoc:3806
msgid ""
"Alternatively, you can use the rmport script, from [.filename]#ports/Tools/"
"scripts#. This script was written by {vd}. When sending questions about "
"this script to the {freebsd-ports}, please also CC {crees}, the current "
"maintainer."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3800
+#: documentation/content/en/articles/committers-guide/_index.adoc:3808
#, no-wrap
msgid "How do I move a port to a new location?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3805
+#: documentation/content/en/articles/committers-guide/_index.adoc:3813
msgid ""
"Perform a thorough check of the ports collection for any dependencies on the "
"old port location/name, and update them. Running `grep` on [."
"filename]#INDEX# is not enough because some ports have dependencies enabled "
"by compile-time options. A full man:git-grep[1] of the ports collection is "
"recommended."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3806
+#: documentation/content/en/articles/committers-guide/_index.adoc:3814
msgid ""
"Remove the `SUBDIR` entry from the old category Makefile and add a `SUBDIR` "
"entry to the new category Makefile."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3808
+#: documentation/content/en/articles/committers-guide/_index.adoc:3816
msgid ""
"Search for entries in xml files inside [.filename]#ports/security/vuxml# and "
"adjust them accordingly. In particular, check for previous packages with the "
"new name which version could include the new port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3809
+#: documentation/content/en/articles/committers-guide/_index.adoc:3817
msgid "Move the port with `git mv`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3810
-#: documentation/content/en/articles/committers-guide/_index.adoc:3821
+#: documentation/content/en/articles/committers-guide/_index.adoc:3818
+#: documentation/content/en/articles/committers-guide/_index.adoc:3829
msgid "Commit the changes."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3813
+#: documentation/content/en/articles/committers-guide/_index.adoc:3821
#, no-wrap
msgid "How do I copy a port to a new location?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3818
+#: documentation/content/en/articles/committers-guide/_index.adoc:3826
msgid "Copy port with `cp -R old-cat/old-port new-cat/new-port`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3819
+#: documentation/content/en/articles/committers-guide/_index.adoc:3827
msgid "Add the new port to the [.filename]#new-cat/Makefile#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3820
+#: documentation/content/en/articles/committers-guide/_index.adoc:3828
msgid "Change stuff in [.filename]#new-cat/new-port#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3824
+#: documentation/content/en/articles/committers-guide/_index.adoc:3832
#, no-wrap
msgid "Ports Freeze"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3827
+#: documentation/content/en/articles/committers-guide/_index.adoc:3835
#, no-wrap
msgid "What is a “ports freeze”?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3834
+#: documentation/content/en/articles/committers-guide/_index.adoc:3842
msgid ""
"A “ports freeze” was a restricted state the ports tree was put in before a "
"release. It was used to ensure a higher quality for the packages shipped "
"with a release. It usually lasted a couple of weeks. During that time, "
"build problems were fixed, and the release packages were built. This "
"practice is no longer used, as the packages for the releases are built from "
"the current stable, quarterly branch."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3836
+#: documentation/content/en/articles/committers-guide/_index.adoc:3844
msgid ""
"For more information on how to merge commits to the quarterly branch, see "
"<<ports-qa-misc-request-mfh>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3838
+#: documentation/content/en/articles/committers-guide/_index.adoc:3846
#, no-wrap
msgid "Quarterly Branches"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3841
+#: documentation/content/en/articles/committers-guide/_index.adoc:3849
#, no-wrap
msgid "What is the procedure to request authorization for merging a commit to the quarterly branch?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3844
+#: documentation/content/en/articles/committers-guide/_index.adoc:3852
msgid ""
"As of November 30, 2020, there is no need to seek explicit approval to "
"commit to the quarterly branch."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3846
+#: documentation/content/en/articles/committers-guide/_index.adoc:3854
#, no-wrap
msgid "What is the procedure for merging commits to the quarterly branch?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3849
+#: documentation/content/en/articles/committers-guide/_index.adoc:3857
msgid ""
"Merging commits to the quarterly branch (a process we call MFH for a "
"historical reason) is very similar to MFC'ing a commit in the src "
"repository, so basically:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3855
+#: documentation/content/en/articles/committers-guide/_index.adoc:3863
#, no-wrap
msgid ""
"% git checkout 2021Q2\n"
"% git cherry-pick -x $HASH\n"
"(verify everything is OK, for example by doing a build test)\n"
"% git push\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3859
+#: documentation/content/en/articles/committers-guide/_index.adoc:3867
msgid ""
"where '$HASH' is the hash of the commit you want to copy over to the "
"quarterly branch. The -x parameter ensures the hash '$HASH' of the main "
"branch is included in the new commit message of the quarterly branch."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:3861
+#: documentation/content/en/articles/committers-guide/_index.adoc:3869
#, no-wrap
msgid "Creating a New Category"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3864
+#: documentation/content/en/articles/committers-guide/_index.adoc:3872
#, no-wrap
msgid "What is the procedure for creating a new category?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3869
+#: documentation/content/en/articles/committers-guide/_index.adoc:3877
msgid ""
"Please see extref:{porters-handbook}[Proposing a New Category, proposing-"
"categories] in the Porter's Handbook. Once that procedure has been followed "
"and the PR has been assigned to the {portmgr}, it is their decision whether "
"or not to approve it. If they do, it is their responsibility to:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3873
+#: documentation/content/en/articles/committers-guide/_index.adoc:3881
msgid "Perform any needed moves. (This only applies to physical categories.)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3874
+#: documentation/content/en/articles/committers-guide/_index.adoc:3882
msgid ""
"Update the `VALID_CATEGORIES` definition in [.filename]#ports/Mk/bsd.port."
"mk#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3875
+#: documentation/content/en/articles/committers-guide/_index.adoc:3883
msgid "Assign the PR back to you."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3878
+#: documentation/content/en/articles/committers-guide/_index.adoc:3886
#, no-wrap
msgid "What do I need to do to implement a new physical category?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3883
+#: documentation/content/en/articles/committers-guide/_index.adoc:3891
msgid ""
"Upgrade each moved port's [.filename]#Makefile#. Do not connect the new "
"category to the build yet."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3885
+#: documentation/content/en/articles/committers-guide/_index.adoc:3893
msgid "To do this, you will need to:"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:3889
+#: documentation/content/en/articles/committers-guide/_index.adoc:3897
msgid ""
"Change the port's `CATEGORIES` (this was the point of the exercise, "
"remember?) The new category is listed first. This will help to ensure that "
"the PKGORIGIN is correct."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:3890
+#: documentation/content/en/articles/committers-guide/_index.adoc:3898
msgid ""
"Run a `make describe`. Since the top-level `make index` that you will be "
"running in a few steps is an iteration of `make describe` over the entire "
"ports hierarchy, catching any errors here will save you having to re-run "
"that step later on."
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/committers-guide/_index.adoc:3891
+#: documentation/content/en/articles/committers-guide/_index.adoc:3899
msgid ""
"If you want to be really thorough, now might be a good time to run man:"
"portlint[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3894
+#: documentation/content/en/articles/committers-guide/_index.adoc:3902
msgid ""
"Check that the ``PKGORIGIN``s are correct. The ports system uses each port's "
"`CATEGORIES` entry to create its `PKGORIGIN`, which is used to connect "
"installed packages to the port directory they were built from. If this entry "
"is wrong, common port tools like man:pkg-version[8] and man:portupgrade[1] "
"fail."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3896
+#: documentation/content/en/articles/committers-guide/_index.adoc:3904
msgid ""
"To do this, use the [.filename]#chkorigin.sh# tool: `env PORTSDIR=/path/to/"
"ports sh -e /path/to/ports/Tools/scripts/chkorigin.sh`. This will check "
"every port in the ports tree, even those not connected to the build, so you "
"can run it directly after the move operation. Hint: do not forget to look at "
"the ``PKGORIGIN``s of any slave ports of the ports you just moved!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3897
+#: documentation/content/en/articles/committers-guide/_index.adoc:3905
msgid ""
"On your own local system, test the proposed changes: first, comment out the "
"SUBDIR entries in the old ports' categories' [.filename]##Makefile##s; then "
"enable building the new category in [.filename]#ports/Makefile#. Run make "
"checksubdirs in the affected category directories to check the SUBDIR "
"entries. Next, in the [.filename]#ports/# directory, run make index. This "
"can take over 40 minutes on even modern systems; however, it is a necessary "
"step to prevent problems for other people."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3898
+#: documentation/content/en/articles/committers-guide/_index.adoc:3906
msgid ""
"Once this is done, you can commit the updated [.filename]#ports/Makefile# to "
"connect the new category to the build and also commit the [."
"filename]#Makefile# changes for the old category or categories."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3899
+#: documentation/content/en/articles/committers-guide/_index.adoc:3907
msgid "Add appropriate entries to [.filename]#ports/MOVED#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3900
+#: documentation/content/en/articles/committers-guide/_index.adoc:3908
msgid "Update the documentation by modifying:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3901
-#: documentation/content/en/articles/committers-guide/_index.adoc:3910
+#: documentation/content/en/articles/committers-guide/_index.adoc:3909
+#: documentation/content/en/articles/committers-guide/_index.adoc:3918
msgid ""
"the extref:{porters-handbook}[list of categories, PORTING-CATEGORIES] in the "
"Porter's Handbook"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3903
+#: documentation/content/en/articles/committers-guide/_index.adoc:3911
msgid ""
"Only once all the above have been done, and no one is any longer reporting "
"problems with the new ports, should the old ports be deleted from their "
"previous locations in the repository."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3905
+#: documentation/content/en/articles/committers-guide/_index.adoc:3913
#, no-wrap
msgid "What do I need to do to implement a new virtual category?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3908
+#: documentation/content/en/articles/committers-guide/_index.adoc:3916
msgid ""
"This is much simpler than a physical category. Only a few modifications are "
"needed:"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3912
-#: documentation/content/en/articles/committers-guide/_index.adoc:4006
+#: documentation/content/en/articles/committers-guide/_index.adoc:3920
+#: documentation/content/en/articles/committers-guide/_index.adoc:4014
#, no-wrap
msgid "Miscellaneous Questions"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3915
+#: documentation/content/en/articles/committers-guide/_index.adoc:3923
#, no-wrap
msgid "Are there changes that can be committed without asking the maintainer for approval?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3918
+#: documentation/content/en/articles/committers-guide/_index.adoc:3926
msgid "Blanket approval for most ports applies to these types of fixes:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3920
+#: documentation/content/en/articles/committers-guide/_index.adoc:3928
msgid ""
"Most infrastructure changes to a port (that is, modernizing, but not "
"changing the functionality). For example, the blanket covers converting to "
"new `USES` macros, enabling verbose builds, and switching to new ports "
"system syntaxes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3921
+#: documentation/content/en/articles/committers-guide/_index.adoc:3929
msgid "Trivial and _tested_ build and runtime fixes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3922
+#: documentation/content/en/articles/committers-guide/_index.adoc:3930
msgid ""
"Documentations or metadata changes to ports, like [.filename]#pkg-descr# or "
"`COMMENT`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3927
+#: documentation/content/en/articles/committers-guide/_index.adoc:3935
msgid ""
"Exceptions to this are anything maintained by the {portmgr}, or the "
"{security-officer}. No unauthorized commits may ever be made to ports "
"maintained by those groups."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3930
+#: documentation/content/en/articles/committers-guide/_index.adoc:3938
#, no-wrap
msgid "How do I know if my port is building correctly or not?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3934
+#: documentation/content/en/articles/committers-guide/_index.adoc:3942
msgid ""
"The packages are built multiple times each week. If a port fails, the "
"maintainer will receive an email from `pkg-fallout@FreeBSD.org`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3936
+#: documentation/content/en/articles/committers-guide/_index.adoc:3944
msgid ""
"Reports for all the package builds (official, experimental, and non-"
"regression) are aggregated at link:pkg-status.FreeBSD.org[pkg-status.FreeBSD."
"org]."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3938
+#: documentation/content/en/articles/committers-guide/_index.adoc:3946
#, no-wrap
msgid "I added a new port. Do I need to add it to the [.filename]#INDEX#?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3941
+#: documentation/content/en/articles/committers-guide/_index.adoc:3949
msgid ""
"No. The file can either be generated by running `make index`, or a pre-"
"generated version can be downloaded with `make fetchindex`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3943
+#: documentation/content/en/articles/committers-guide/_index.adoc:3951
#, no-wrap
msgid "Are there any other files I am not allowed to touch?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3947
+#: documentation/content/en/articles/committers-guide/_index.adoc:3955
msgid ""
"Any file directly under [.filename]#ports/#, or any file under a "
"subdirectory that starts with an uppercase letter ([.filename]#Mk/#, [."
"filename]#Tools/#, etc.). In particular, the {portmgr} is very protective "
"of [.filename]#ports/Mk/bsd.port*.mk# so do not commit changes to those "
"files unless you want to face their wrath."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3949
+#: documentation/content/en/articles/committers-guide/_index.adoc:3957
#, no-wrap
msgid "What is the proper procedure for updating the checksum for a port distfile when the file changes without a version change?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3953
+#: documentation/content/en/articles/committers-guide/_index.adoc:3961
msgid ""
"When the checksum for a distribution file is updated due to the author "
"updating the file without changing the port revision, the commit message "
"includes a summary of the relevant diffs between the original and new "
"distfile to ensure that the distfile has not been corrupted or maliciously "
"altered. If the current version of the port has been in the ports tree for "
"a while, a copy of the old distfile will usually be available on the ftp "
"servers; otherwise the author or maintainer should be contacted to find out "
"why the distfile has changed."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/committers-guide/_index.adoc:3955
+#: documentation/content/en/articles/committers-guide/_index.adoc:3963
#, no-wrap
msgid "How can an experimental test build of the ports tree (exp-run) be requested?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3959
+#: documentation/content/en/articles/committers-guide/_index.adoc:3967
msgid ""
"An exp-run must be completed before patches with a significant ports impact "
"are committed. The patch can be against the ports tree or the base system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3961
+#: documentation/content/en/articles/committers-guide/_index.adoc:3969
msgid ""
"Full package builds will be done with the patches provided by the submitter, "
"and the submitter is required to fix detected problems _(fallout)_ before "
"commit."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3965
+#: documentation/content/en/articles/committers-guide/_index.adoc:3973
msgid "Go to the link:https://bugs.freebsd.org/submit[Bugzilla new PR page]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3966
+#: documentation/content/en/articles/committers-guide/_index.adoc:3974
msgid "Select the product your patch is about."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3967
+#: documentation/content/en/articles/committers-guide/_index.adoc:3975
msgid "Fill in the bug report as normal. Remember to attach the patch."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3968
+#: documentation/content/en/articles/committers-guide/_index.adoc:3976
msgid ""
"If at the top it says “Show Advanced Fields” click on it. It will now say "
"“Hide Advanced Fields”. Many new fields will be available. If it already "
"says “Hide Advanced Fields”, no need to do anything."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3969
+#: documentation/content/en/articles/committers-guide/_index.adoc:3977
msgid ""
"In the “Flags” section, set the “exp-run” one to `?`. As for all other "
"fields, hovering the mouse over any field shows more details."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3970
+#: documentation/content/en/articles/committers-guide/_index.adoc:3978
msgid "Submit. Wait for the build to run."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3971
+#: documentation/content/en/articles/committers-guide/_index.adoc:3979
msgid "{portmgr} will reply with a possible fallout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3972
+#: documentation/content/en/articles/committers-guide/_index.adoc:3980
msgid "Depending on the fallout:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3973
+#: documentation/content/en/articles/committers-guide/_index.adoc:3981
msgid ""
"If there is no fallout, the procedure stops here, and the change can be "
"committed, pending any other approval required."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3974
+#: documentation/content/en/articles/committers-guide/_index.adoc:3982
msgid ""
"If there is fallout, it _must_ be fixed, either by fixing the ports directly "
"in the ports tree, or adding to the submitted patch."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3975
+#: documentation/content/en/articles/committers-guide/_index.adoc:3983
msgid ""
"When this is done, go back to step 6 saying the fallout was fixed and wait "
"for the exp-run to be run again. Repeat as long as there are broken ports."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3978
+#: documentation/content/en/articles/committers-guide/_index.adoc:3986
#, no-wrap
msgid "Issues Specific to Developers Who Are Not Committers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3983
+#: documentation/content/en/articles/committers-guide/_index.adoc:3991
msgid ""
"A few people who have access to the FreeBSD machines do not have commit "
"bits. Almost all of this document will apply to these developers as well "
"(except things specific to commits and the mailing list memberships that go "
"with them). In particular, we recommend that you read:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3985
+#: documentation/content/en/articles/committers-guide/_index.adoc:3993
msgid "<<admin>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3986
+#: documentation/content/en/articles/committers-guide/_index.adoc:3994
msgid "<<conventions-everyone>>"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:3990
+#: documentation/content/en/articles/committers-guide/_index.adoc:3998
msgid ""
"Get your mentor to add you to the \"Additional Contributors\" ([."
"filename]#doc/shared/contrib-additional.adoc#), if you are not already "
"listed there."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3992
+#: documentation/content/en/articles/committers-guide/_index.adoc:4000
msgid "<<developer.relations>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3993
+#: documentation/content/en/articles/committers-guide/_index.adoc:4001
msgid "<<ssh.guide>>"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3994
+#: documentation/content/en/articles/committers-guide/_index.adoc:4002
msgid "<<rules>>"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:3996
+#: documentation/content/en/articles/committers-guide/_index.adoc:4004
#, no-wrap
msgid "Information About Google Analytics"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:3999
+#: documentation/content/en/articles/committers-guide/_index.adoc:4007
msgid ""
"As of December 12, 2012, Google Analytics was enabled on the FreeBSD Project "
"website to collect anonymized usage statistics regarding usage of the site."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:4003
+#: documentation/content/en/articles/committers-guide/_index.adoc:4011
msgid ""
"As of March 3, 2022, Google Analytics was removed from the FreeBSD Project."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4008
+#: documentation/content/en/articles/committers-guide/_index.adoc:4016
#, no-wrap
msgid "How do I access people.FreeBSD.org to put up personal or project information?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4012
+#: documentation/content/en/articles/committers-guide/_index.adoc:4020
msgid ""
"`people.FreeBSD.org` is the same as `freefall.FreeBSD.org`. Just create a [."
"filename]#public_html# directory. Anything you place in that directory will "
"automatically be visible under https://people.FreeBSD.org/[https://people."
"FreeBSD.org/]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4013
+#: documentation/content/en/articles/committers-guide/_index.adoc:4021
#, no-wrap
msgid "Where are the mailing list archives stored?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4016
+#: documentation/content/en/articles/committers-guide/_index.adoc:4024
msgid ""
"The mailing lists are archived under [.filename]#/local/mail# on `freefall."
"FreeBSD.org`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4017
+#: documentation/content/en/articles/committers-guide/_index.adoc:4025
#, no-wrap
msgid "I would like to mentor a new committer. What process do I need to follow?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4020
+#: documentation/content/en/articles/committers-guide/_index.adoc:4028
msgid ""
"See the https://www.freebsd.org/internal/new-account/[New Account Creation "
"Procedure] document on the internal pages."
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/committers-guide/_index.adoc:4022
+#: documentation/content/en/articles/committers-guide/_index.adoc:4030
#, no-wrap
msgid "Benefits and Perks for FreeBSD Committers"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4025
+#: documentation/content/en/articles/committers-guide/_index.adoc:4033
#, no-wrap
msgid "Recognition"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4029
+#: documentation/content/en/articles/committers-guide/_index.adoc:4037
msgid ""
"Recognition as a competent software engineer is the longest lasting value. "
"In addition, getting a chance to work with some of the best people that "
"every engineer would dream of meeting is a great perk!"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4031
+#: documentation/content/en/articles/committers-guide/_index.adoc:4039
#, no-wrap
msgid "FreeBSD Mall"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4034
+#: documentation/content/en/articles/committers-guide/_index.adoc:4042
msgid ""
"FreeBSD committers can get a free 4-CD or DVD set at conferences from http://"
"www.freebsdmall.com[FreeBSD Mall, Inc.]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4036
+#: documentation/content/en/articles/committers-guide/_index.adoc:4044
#, no-wrap
msgid "`Gandi.net`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4039
+#: documentation/content/en/articles/committers-guide/_index.adoc:4047
msgid ""
"https://gandi.net[Gandi] provides website hosting, cloud computing, domain "
"registration, and X.509 certificate services."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4043
+#: documentation/content/en/articles/committers-guide/_index.adoc:4051
msgid ""
"Gandi offers an E-rate discount to all FreeBSD developers. In order to "
"streamline the process of getting the discount first set up a Gandi account, "
"fill in the billing information and select the currency. Then send an mail "
"to mailto:non-profit@gandi.net[non-profit@gandi.net] using your `@freebsd."
"org` mail address, and indicate your Gandi handle."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4045
+#: documentation/content/en/articles/committers-guide/_index.adoc:4053
#, no-wrap
msgid "`rsync.net`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4048
+#: documentation/content/en/articles/committers-guide/_index.adoc:4056
msgid ""
"https://rsync.net[rsync.net] provides cloud storage for offsite backup that "
"is optimized for UNIX users. Their service runs entirely on FreeBSD and ZFS."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4050
+#: documentation/content/en/articles/committers-guide/_index.adoc:4058
msgid ""
"rsync.net offers a free-forever 500 GB account to FreeBSD developers. Simply "
"sign up at https://www.rsync.net/freebsd.html[https://www.rsync.net/freebsd."
"html] using your `@freebsd.org` address to receive this free account."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/committers-guide/_index.adoc:4052
+#: documentation/content/en/articles/committers-guide/_index.adoc:4060
#, no-wrap
msgid "`JetBrains`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4055
+#: documentation/content/en/articles/committers-guide/_index.adoc:4063
msgid ""
"https://www.jetbrains.com[JetBrains] is a software development company which "
"makes tools for software developers and project managers. The company offers "
"many integrated development environments (IDEs) for different programming "
"languages."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/committers-guide/_index.adoc:4057
+#: documentation/content/en/articles/committers-guide/_index.adoc:4065
msgid ""
"JetBrains offers 100 free yearly licenses for all https://www.jetbrains.com/"
"products[JetBrains IDE products]. Simply sign up at https://account."
"jetbrains.com/a/322tl3z7[https://account.jetbrains.com/a/322tl3z7] using "
"your `@freebsd.org` address and the account will have a license attached to "
"it automatically. Once the account is active, use it in any of the products "
"to activate them and you're done."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/committers-guide/_index.adoc:4061
+#: documentation/content/en/articles/committers-guide/_index.adoc:4069
msgid ""
"Please, only use these licences personally and do not share them with anyone "
"outside of the FreeBSD project, as that would be a violation of the terms of "
"the donation."
msgstr ""
diff --git a/documentation/content/en/articles/nanobsd/_index.po b/documentation/content/en/articles/nanobsd/_index.po
index e830ab3bd6..4340572511 100644
--- a/documentation/content/en/articles/nanobsd/_index.po
+++ b/documentation/content/en/articles/nanobsd/_index.po
@@ -1,1176 +1,1184 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:21-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:1
#: documentation/content/en/articles/nanobsd/_index.adoc:46
#, no-wrap
msgid "This document provides information about the NanoBSD tools, which can be used to create FreeBSD system images for embedded applications, suitable for use on a USB key, memory card or other mass storage media."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/nanobsd/_index.adoc:1
#: documentation/content/en/articles/nanobsd/_index.adoc:11
#: documentation/content/en/articles/nanobsd/_index.adoc:52
#, no-wrap
msgid "Introduction to NanoBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:44
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:48
msgid "'''"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:56
msgid ""
"NanoBSD is a tool developed by {phk} and now maintained by {imp}. It "
"creates a FreeBSD system image for embedded applications, suitable for use "
"on a USB key, memory card or other mass storage media."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:60
msgid ""
"It can be used to build specialized install images, designed for easy "
-"installation and maintenance of systems commonly called \"computer appliances"
-"\". Computer appliances have their hardware and software bundled in the "
-"product, which means all applications are pre-installed. The appliance is "
-"plugged into an existing network and can begin working (almost) immediately."
+"installation and maintenance of systems commonly called \"computer "
+"appliances\". Computer appliances have their hardware and software bundled "
+"in the product, which means all applications are pre-installed. The "
+"appliance is plugged into an existing network and can begin working (almost) "
+"immediately."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:62
msgid "The features of NanoBSD include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:64
msgid ""
"Ports and packages work as in FreeBSD - Every single application can be "
"installed and used in a NanoBSD image, the same way as in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:65
msgid ""
"No missing functionality - If it is possible to do something with FreeBSD, "
"it is possible to do the same thing with NanoBSD, unless the specific "
"feature or features were explicitly removed from the NanoBSD image when it "
"was created."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:66
msgid ""
"Everything is read-only at run-time - It is safe to pull the power-plug. "
"There is no necessity to run man:fsck[8] after a non-graceful shutdown of "
"the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:67
msgid ""
"Easy to build and customize - Making use of just one shell script and one "
"configuration file it is possible to build reduced and customized images "
"satisfying any arbitrary set of requirements."
msgstr ""
#. type: Title ==
#: documentation/content/en/articles/nanobsd/_index.adoc:69
#, no-wrap
msgid "NanoBSD Howto"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/nanobsd/_index.adoc:72
#, no-wrap
msgid "The Design of NanoBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:76
msgid ""
"Once the image is present on the medium, it is possible to boot NanoBSD. "
"The mass storage medium is divided into three parts by default:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:78
msgid "Two image partitions: `code#1` and `code#2`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:79
msgid ""
"The configuration file partition, which can be mounted under the [."
"filename]#/cfg# directory at run time."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:81
msgid "These partitions are normally mounted read-only."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:83
msgid ""
"The [.filename]#/etc# and [.filename]#/var# directories are man:md[4] "
"(malloc) disks."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:86
msgid ""
"The configuration file partition persists under the [.filename]#/cfg# "
"directory. It contains files for [.filename]#/etc# directory and is briefly "
"mounted read-only right after the system boot, therefore it is required to "
"copy modified files from [.filename]#/etc# back to the [.filename]#/cfg# "
"directory if changes are expected to persist after the system restarts."
msgstr ""
#. type: Block title
#: documentation/content/en/articles/nanobsd/_index.adoc:87
#, no-wrap
msgid "Making Persistent Changes to [.filename]#/etc/resolv.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/nanobsd/_index.adoc:98
#, no-wrap
msgid ""
"# vi /etc/resolv.conf\n"
"[...]\n"
"# mount /cfg\n"
"# cp /etc/resolv.conf /cfg\n"
"# umount /cfg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:105
msgid ""
"The partition containing [.filename]#/cfg# should be mounted only at boot "
"time and while overriding the configuration files."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:107
msgid ""
"Keeping [.filename]#/cfg# mounted at all times is not a good idea, "
"especially if the NanoBSD system runs off a mass storage medium that may be "
"adversely affected by a large number of writes to the partition (like when "
"the filesystem syncer flushes data to the system disks)."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/nanobsd/_index.adoc:109
#, no-wrap
msgid "Building a NanoBSD Image"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/nanobsd/_index.adoc:113
msgid ""
"A NanoBSD image is built using a simple [.filename]#nanobsd.sh# shell "
"script, which can be found in the [.filename]#/usr/src/tools/tools/nanobsd# "
"directory. This script creates an image, which can be copied on the storage "
"medium using the man:dd[1] utility."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/articles/nanobsd/_index.adoc:115
msgid "The necessary commands to build a NanoBSD image are:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/nanobsd/_index.adoc:122
#, no-wrap
msgid ""
"# cd /usr/src/tools/tools/nanobsd <.>\n"
"# sh nanobsd.sh <.>\n"
"# cd /usr/obj/nanobsd.full <.>\n"
"# dd if=_.disk.full of=/dev/da0 bs=64k <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:125
msgid ""
"Change the current directory to the base directory of the NanoBSD build "
"script."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:127
msgid "Start the build process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:129
msgid ""
"Change the current directory to the place where the built images are located."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:131
msgid "Install NanoBSD onto the storage medium."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/nanobsd/_index.adoc:132
#, no-wrap
msgid "Options When Building a NanoBSD Image"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:136
msgid ""
"When building a NanoBSD image, several build options can be passed to [."
"filename]#nanobsd.sh# on the command line. These options can have a "
"significant impact on the build process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:138
msgid "Some options are for verbosity purposes:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:140
msgid "`-h`: prints the help summary page."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:141
msgid "`-q`: makes output quieter."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:142
msgid "`-v`: makes output more verbose"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:145
msgid ""
"Some other options can be used to restrict the building process. Sometimes "
"it is not necessary to rebuild everything from sources, especially if an "
"image has already been built, and only little change is made."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:147
msgid "`-k`: do not build the kernel"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:148
msgid "`-w`: do not build world"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:149
msgid "`-b`: do not build either kernel and world"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:150
msgid ""
"`-i`: do not build a disk image at all. As a file will not be created, it "
"will not be possible to man:dd[1] it to a storage media."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:151
msgid ""
"`-f`: do not build a disk image of the first partition (which is useful for "
"upgrade purposes)"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:152
msgid ""
"`-n`: add `-DNO_CLEAN` to `buildworld`, `buildkernel`. Also, all the files "
"that have already been built in a previous run are kept."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:155
msgid ""
"A configuration file can be used to tweak as many elements as desired. Load "
"it with `-c`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:157
msgid "The last options are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:159
msgid ""
"`-K`: do not install a kernel. A disk image without a kernel will not be "
"able to achieve a normal boot sequence."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/nanobsd/_index.adoc:160
#, no-wrap
msgid "The Complete Image Building Process"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:165
msgid ""
"The complete image building process is going through a lot of steps. The "
"exact steps taken will depend on the chosen options when starting the "
"script. Assuming the script is run with no particular options, this is what "
"will happen."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:167
msgid ""
"`run_early_customize`: commands that are defined in a supplied configuration "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:168
msgid ""
"`clean_build`: Just cleans the build environment by deleting the previously "
"built files."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:169
msgid ""
"`make_conf_build`: Assemble make.conffrom the `CONF_WORLD` and `CONF_BUILD` "
"variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:170
msgid "`build_world`: Build world."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:171
msgid "`build_kernel`: Build the kernel files."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:172
msgid "`clean_world`: Clean the destination directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:173
msgid ""
"`make_conf_install`: Assemble make.conf from the `CONF_WORLD` and "
"`CONF_INSTALL` variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:174
msgid "`install_world`: Install all files built during `buildworld`."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:175
msgid ""
"`install_etc`: Install the necessary files in the [.filename]#/etc# "
"directory, based on the `make distribution` command."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:176
msgid ""
"`setup_nanobsd_etc`: the first configuration specific to NanoBSD takes place "
"at this stage. The [.filename]#/etc/diskless# is created and the root "
"filesystem is defined as read-only."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:177
msgid "`install_kernel`: the kernel and modules files are installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:178
msgid ""
"`run_customize`: all the customizing routines defined by the user will be "
"called."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:179
msgid ""
"`setup_nanobsd`: a special configuration directory layout is setup. The [."
"filename]#/usr/local/etc# gets moved to [.filename]#/etc/local# and a "
"symbolic link is created back from [.filename]#/etc/local# to [.filename]#/"
"usr/local/etc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:180
msgid "`prune_usr`: the empty directories from [.filename]#/usr# are removed."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:181
msgid ""
"`run_late_customize`: the very last custom scripts can be run at this point."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:182
msgid "`fixup_before_diskimage`: List all installed files in a metalog"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:183
msgid ""
"`create_diskimage`: creates the actual disk image, based on the disk "
"geometries provides parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:184
msgid "`last_orders`: does nothing for now."
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/nanobsd/_index.adoc:185
#, no-wrap
msgid "Customizing a NanoBSD Image"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:189
msgid ""
"This is probably the most important and most interesting feature of "
"NanoBSD. This is also where you will be spending most of the time when "
"developing with NanoBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:191
msgid ""
"Invocation of the following command will force the [.filename]#nanobsd.sh# "
"to read its configuration from [.filename]#myconf.nano# located in the "
"current directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/nanobsd/_index.adoc:195
#, no-wrap
msgid "# sh nanobsd.sh -c myconf.nano\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:198
msgid "Customization is done in two ways:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:200
msgid "Configuration options"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:201
msgid "Custom functions"
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/nanobsd/_index.adoc:202
#, no-wrap
msgid "Configuration Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:207
msgid ""
"With configuration settings, it is possible to configure options passed to "
"both the `buildworld` and `installworld` stages of the NanoBSD build "
"process, as well as internal options passed to the main build process of "
"NanoBSD. Through these options it is possible to cut the system down, so it "
"will fit on as little as 64MB. You can use the configuration options to "
"trim down FreeBSD even more, until it will consists of just the kernel and "
"two or three files in the userland."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:210
msgid ""
"The configuration file consists of configuration options, which override the "
"default values. The most important directives are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:212
msgid "`NANO_NAME` - Name of build (used to construct the workdir names)."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:213
msgid "`NANO_SRC` - Path to the source tree used to build the image."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:214
msgid "`NANO_KERNEL` - Name of kernel configuration file used to build kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:215
msgid "`CONF_BUILD` - Options passed to the `buildworld` stage of the build."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:216
msgid ""
"`CONF_INSTALL` - Options passed to the `installworld` stage of the build."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:217
msgid ""
"`CONF_WORLD` - Options passed to both the `buildworld` and the "
"`installworld` stage of the build."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:218
msgid ""
"`FlashDevice` - Defines what type of media to use. Check [."
"filename]#FlashDevice.sub# for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:220
msgid ""
"There are many more configuration options that could be relevant depending "
"upon the kind of NanoBSD that is desired."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/nanobsd/_index.adoc:221
#, no-wrap
msgid "General Customization"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:224
msgid ""
"There are three stages, by design, at which it is possible to make changes "
"that affect the building process, just by setting up a variable in the "
"provided configuration file:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:226
msgid "`run_early_customize`: before anything else happens."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:227
msgid "`run_customize`: after all the standard files have been laid out"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:228
msgid ""
"`run_late_customize`: at the very end of the process, just before the actual "
"NanoBSD image is built."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:230
msgid ""
"To customize a NanoBSD image, at any of these steps, it is best to add a "
"specific value to one of the corresponding variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:233
msgid ""
"The `NANO_EARLY_CUSTOMIZE` variable is used at the first step of the "
"building process. At this point, there is no example as to what can be done "
"using that variable, but it may change in the future."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:236
msgid ""
"The `NANO_CUSTOMIZE` variable is used after the kernel, world and etc "
"configuration files have been installed, and the etc files have been setup "
"as to be a NanoBSD installation. So it is the correct step in the building "
"process to tweak configuration options and add packages, like in the "
"cust_nobeastie example."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:240
msgid ""
"The `NANO_LATE_CUSTOMIZE` variable is used just before the disk image is "
"created, so it is the very last moment to change anything. Remember that "
"the `setup_nanobsd` routine already executed and that the [.filename]#etc#, "
"[.filename]#conf# and [.filename]#cfg# directories and subdirectories are "
"already modified, so it is not time to change them at this point. Rather, "
"it is possible to add or remove specific files."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/nanobsd/_index.adoc:241
#, no-wrap
msgid "Booting Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:245
msgid ""
"There are also variables that can change the way the NanoBSD image boots. "
"Two options are passed to man:boot0cfg[8] to initialize the boot sector of "
"the disk image:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:247
msgid "`NANO_BOOT0CFG`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:248
msgid "`NANO_BOOTLOADER`"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:253
msgid ""
"With `NANO_BOOTLOADER` a bootloader file can be chosen. The most common "
"possible options are between [.filename]#boot0sio# and [.filename]#boot0# "
"depending on whether the appliance has a serial port or not. It is best to "
"avoid supplying a different bootloader, but it is possible. To do so, it is "
"best to have checked the extref:{handbook}boot[FreeBSD Handbook] chapter on "
"the boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:260
msgid ""
"With `NANO_BOOT0CFG`, the booting process can be tweaked, like selecting on "
"which partition the NanoBSD image will actually boot. It is best to check "
"the man:boot0cfg[8] page before changing the default value of this "
"variable. One option that could be interesting to change is the timeout of "
"the booting procedure. To do so, the `NANO_BOOT0CFG` variable can be "
"changed to `\"-o packet -s 1 -m 3 -t 36\"`. That way the booting process "
"would start after approximately 2 seconds; because it is rare that waiting "
"10 seconds before actually booting is desired."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:263
msgid ""
"Good to know: the `NANO_BOOT2CFG` variable is only used in the "
"`cust_comconsole` routine that can be called at the `NANO_CUSTOMIZE` step if "
"the appliance has a serial port and all console input and output has to take "
"place through it. Be sure to check the relevant parameters of the serial "
"port, as setting a bad parameter value can make it useless."
msgstr ""
#. type: Title =====
#: documentation/content/en/articles/nanobsd/_index.adoc:264
#, no-wrap
msgid "Disk Image Creation"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:268
msgid ""
"In the end of the boot process is the disk image creation. With this step, "
"the NanoBSD script provides a file that can simply be copied onto a disk for "
"the appliance, and that will make it boot and start."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:270
msgid ""
"There are many variable that need to be set just right for the script to "
"produce a usable disk image."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:272
msgid ""
"The `NANO_DRIVE` variable must be set to the drive name of the media at "
"runtime. Usually, the default value `ada0`, which represents the first `IDE`/"
"`ATA`/`SATA` device on the appliance is expected to be the correct one, but "
"a different type of storage could also be used - like a USB key, in which "
"case, it would rather be da0."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:273
msgid ""
"The `NANO_MEDIASIZE` variable must be set to the size (in 512 bytes sectors) "
"of the storage media that will be used. If you set it wrong, it is possible "
"that the NanoBSD image will not boot at all, and a message at boot time will "
"be warning about incorrect disk geometry."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:275
msgid ""
"The [.filename]#/etc#, [.filename]#/var#, and [.filename]#/tmp# directories "
"are allocated as man:md[4] (malloc) disks at boot time; so their sizes can "
"be tailored to suit the appliance needs. The `NANO_RAM_ETCSIZE` variable "
"sets the size of the [.filename]#/etc#; and the `NANO_RAM_TMPVARSIZE` "
"variable sets the size of both the [.filename]#/var# and [.filename]#/tmp# "
"directory, as [.filename]#/tmp# is symbolically linked to [.filename]#/var/"
"tmp#. By default, both malloc disks sizes are set at 20MB each. They can "
"always be changed, but usually the [.filename]#/etc# does not grow too much "
"in size, so 20MB is a good starting point, whereas the [.filename]#/var# and "
"especially [.filename]#/tmp# can grow much larger if not careful about it. "
"For memory constrained systems, smaller filesystem sizes may be chosen."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:276
msgid ""
"As NanoBSD is mainly designed to build a system image for an appliance, it "
"is assumed that the storage media used will be relatively small. For that "
"reason, the filesystem that is laid out is configured to have a small block "
"size (4Kb) and a small fragment size (512b). The configuration options of "
"the filesystem can be modified through the `NANO_NEWFS` variable, but the "
"syntax must respect the man:newfs[8] command format. Also, by default, the "
"filesystem has Soft Updates enabled. The extref:{handbook}[FreeBSD Handbook] "
"can be checked about this."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:277
msgid ""
"The different partition sizes can be set through the use of `NANO_CODESIZE`, "
"`NANO_CONFSIZE`, and `NANO_DATASIZE` as a multiple of 512 bytes sectors. "
"`NANO_CODESIZE` defines the size of the first two image partitions: `code#1` "
"and `code#2`. They have to be big enough to hold all the files that will be "
"produced as a result of the `buildworld` and `buildkernel` processes. "
"`NANO_CONFSIZE` defines the size of the configuration file partition, so it "
"does not need to be very big; but do not make it so small that it will not "
"hold all configuration files. Finally, `NANO_DATASIZE` defines the size of "
"an optional partition, that can be used on the appliance. The last partition "
"can be used, for example, to keep files created on the fly on disk."
msgstr ""
#. type: Title ====
#: documentation/content/en/articles/nanobsd/_index.adoc:278
#, no-wrap
msgid "Custom Functions"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:282
msgid ""
"It is possible to fine-tune NanoBSD using shell functions in the "
"configuration file. The following example illustrates the basic model of "
"custom functions:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/nanobsd/_index.adoc:290
#, no-wrap
msgid ""
"cust_foo () (\n"
"\techo \"bar=baz\" > \\\n"
"\t\t${NANO_WORLDDIR}/etc/foo\n"
")\n"
"customize_cmd cust_foo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:293
msgid ""
"A more useful example of a customization function is the following, which "
"changes the default size of the [.filename]#/etc# directory from 5MB to 30MB:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/articles/nanobsd/_index.adoc:301
#, no-wrap
msgid ""
"cust_etc_size () (\n"
"\tcd ${NANO_WORLDDIR}/conf\n"
"\techo 30000 > default/etc/md_size\n"
")\n"
"customize_cmd cust_etc_size\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:304
msgid ""
"There are a few default pre-defined customization functions ready for use:"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:306
msgid ""
"`cust_comconsole` - Disables man:getty[8] on the VGA devices (the [."
"filename]#/dev/ttyv*# device nodes) and enables the use of the COM1 serial "
"port as the system console."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:307
msgid "`cust_allow_ssh_root` - Allow `root` to login via man:sshd[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:308
msgid ""
"`cust_install_files` - Installs files from the [.filename]#nanobsd/Files# "
"directory, which contains some useful scripts for system administration."
msgstr ""
-#. type: Title ====
+#. type: Plain text
#: documentation/content/en/articles/nanobsd/_index.adoc:309
+msgid ""
+"`cust_pkgng` - Installs packages from the [.filename]#nanobsd/Pkg# directory "
+"(needs also pkg-* package to bootstrap)."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/articles/nanobsd/_index.adoc:310
#, no-wrap
msgid "Adding Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:312
+#: documentation/content/en/articles/nanobsd/_index.adoc:313
msgid ""
"Packages can be added to a NanoBSD image, to provide specific "
"functionalities on the appliance. To do so, either:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:314
+#: documentation/content/en/articles/nanobsd/_index.adoc:315
msgid "Add the `cust_pkgng` to the `NANO_CUSTOMIZE` variable, or"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:315
+#: documentation/content/en/articles/nanobsd/_index.adoc:316
msgid ""
"Add a `'customize_cmd cust_pkgng'` command in a customized configuration "
"file."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:318
+#: documentation/content/en/articles/nanobsd/_index.adoc:319
msgid ""
"Both methods achieve the same result: launching the `cust_pkgng` routine. "
"This routine will go through `NANO_PACKAGE_DIR` directory to find either all "
"packages or just the list of packages in the `NANO_PACKAGE_LIST` variable."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:324
+#: documentation/content/en/articles/nanobsd/_index.adoc:325
msgid ""
"It is common, when installing applications through pkg on a standard FreeBSD "
"environment, that the install process puts configuration files, in the [."
"filename]#usr/local/etc# directory, and startup scripts in the [.filename]#/"
"usr/local/etc/rc.d# directory. So, after the required packages have been "
"installed, they need to be configured in order for them to start right out "
"of the box. To do so, the necessary configuration files have to be "
"installed in the correct directories. This can be achieved by writing "
"dedicated routines or the generic `cust_install_files` routine can be used "
"to lay out files properly from the [.filename]#/usr/src/tools/tools/nanobsd/"
"Files# directory. Usually a statement, sometimes multiple statements, in "
"the [.filename]#/etc/rc.conf# also needs to be added for each package."
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/nanobsd/_index.adoc:325
+#: documentation/content/en/articles/nanobsd/_index.adoc:326
#, no-wrap
msgid "Configuration File Example"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:328
+#: documentation/content/en/articles/nanobsd/_index.adoc:329
msgid ""
"A complete example of a configuration file for building a custom NanoBSD "
"image can be:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:335
+#: documentation/content/en/articles/nanobsd/_index.adoc:336
#, no-wrap
msgid ""
"NANO_NAME=custom\n"
"NANO_SRC=/usr/src\n"
"NANO_KERNEL=MYKERNEL\n"
"NANO_IMAGES=2\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:341
+#: documentation/content/en/articles/nanobsd/_index.adoc:342
#, no-wrap
msgid ""
"CONF_BUILD='\n"
"WITHOUT_KLDLOAD=YES\n"
"WITHOUT_NETGRAPH=YES\n"
"WITHOUT_PAM=YES\n"
"'\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:357
+#: documentation/content/en/articles/nanobsd/_index.adoc:358
#, no-wrap
msgid ""
"CONF_INSTALL='\n"
"WITHOUT_ACPI=YES\n"
"WITHOUT_BLUETOOTH=YES\n"
"WITHOUT_FORTRAN=YES\n"
"WITHOUT_HTML=YES\n"
"WITHOUT_LPR=YES\n"
"WITHOUT_MAN=YES\n"
"WITHOUT_SENDMAIL=YES\n"
"WITHOUT_SHAREDOCS=YES\n"
"WITHOUT_EXAMPLES=YES\n"
"WITHOUT_INSTALLLIB=YES\n"
"WITHOUT_CALENDAR=YES\n"
"WITHOUT_MISC=YES\n"
"WITHOUT_SHARE=YES\n"
"'\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:368
+#: documentation/content/en/articles/nanobsd/_index.adoc:369
#, no-wrap
msgid ""
"CONF_WORLD='\n"
"WITHOUT_BIND=YES\n"
"WITHOUT_MODULES=YES\n"
"WITHOUT_KERBEROS=YES\n"
"WITHOUT_GAMES=YES\n"
"WITHOUT_RESCUE=YES\n"
"WITHOUT_LOCALES=YES\n"
"WITHOUT_SYSCONS=YES\n"
"WITHOUT_INFO=YES\n"
"'\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:370
+#: documentation/content/en/articles/nanobsd/_index.adoc:371
#, no-wrap
msgid "FlashDevice SanDisk 1G\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:375
+#: documentation/content/en/articles/nanobsd/_index.adoc:376
#, no-wrap
msgid ""
"cust_nobeastie() (\n"
"\ttouch ${NANO_WORLDDIR}/boot/loader.conf\n"
"\techo \"beastie_disable=\\\"YES\\\"\" >> ${NANO_WORLDDIR}/boot/loader.conf\n"
")\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:380
+#: documentation/content/en/articles/nanobsd/_index.adoc:381
#, no-wrap
msgid ""
"customize_cmd cust_comconsole\n"
"customize_cmd cust_install_files\n"
"customize_cmd cust_allow_ssh_root\n"
"customize_cmd cust_nobeastie\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:384
+#: documentation/content/en/articles/nanobsd/_index.adoc:385
msgid ""
"All the build and install compilation options can be found in the man:src."
"conf[5] man page, but not all options can or should be used when building a "
"NanoBSD image. The build and install options should be defined according to "
"the needs of the image being built."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:388
+#: documentation/content/en/articles/nanobsd/_index.adoc:389
msgid ""
"For example, the ftp client and server might not be needed. Adding "
"`WITHOUT_FTP=TRUE` to a configuration file in the `CONF_BUILD` section will "
"avoid having them built. Also, if the NanoBSD appliance will not be used to "
"build programs then it is possible to add the `WITHOUT_BINUTILS=TRUE` in the "
"`CONF_INSTALL` section; but not in the `CONF_BUILD` section as they will be "
"used to build the NanoBSD image."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:390
+#: documentation/content/en/articles/nanobsd/_index.adoc:391
msgid ""
"Not building a particular set of programs - through a compilation option - "
"shortens the overall building time and lowers the required size for the disk "
"image, whereas not installing the same specific set of programs does not "
"lower the overall building time."
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/nanobsd/_index.adoc:391
+#: documentation/content/en/articles/nanobsd/_index.adoc:392
#, no-wrap
msgid "Updating NanoBSD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:394
+#: documentation/content/en/articles/nanobsd/_index.adoc:395
msgid "The update process of NanoBSD is relatively simple:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:398
+#: documentation/content/en/articles/nanobsd/_index.adoc:399
msgid "Build a new NanoBSD image, as usual."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:399
+#: documentation/content/en/articles/nanobsd/_index.adoc:400
msgid ""
"Upload the new image into an unused partition of a running NanoBSD appliance."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:401
+#: documentation/content/en/articles/nanobsd/_index.adoc:402
msgid ""
"The most important difference of this step from the initial NanoBSD "
"installation is that now instead of using [.filename]#\\_.disk.full# (which "
"contains an image of the entire disk), the [.filename]#_.disk.image# image "
"is installed (which contains an image of a single system partition)."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:402
+#: documentation/content/en/articles/nanobsd/_index.adoc:403
msgid "Reboot, and start the system from the newly installed partition."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:403
+#: documentation/content/en/articles/nanobsd/_index.adoc:404
msgid "If all goes well, the upgrade is finished."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:404
+#: documentation/content/en/articles/nanobsd/_index.adoc:405
msgid ""
"If anything goes wrong, reboot back into the previous partition (which "
"contains the old, working image), to restore system functionality as fast as "
"possible. Fix any problems of the new build, and repeat the process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:407
+#: documentation/content/en/articles/nanobsd/_index.adoc:408
msgid ""
"To install new image onto the running NanoBSD system, it is possible to use "
"either the [.filename]#updatep1# or [.filename]#updatep2# script located in "
"the [.filename]#/root# directory, depending from which partition is running "
"the current system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:409
+#: documentation/content/en/articles/nanobsd/_index.adoc:410
msgid ""
"According to which services are available on host serving new NanoBSD image "
"and what type of transfer is preferred, it is possible to examine one of "
"these three ways:"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/nanobsd/_index.adoc:410
+#: documentation/content/en/articles/nanobsd/_index.adoc:411
#, no-wrap
msgid "Using man:ftp[1]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:413
+#: documentation/content/en/articles/nanobsd/_index.adoc:414
msgid "If the transfer speed is in first place, use this example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:418
+#: documentation/content/en/articles/nanobsd/_index.adoc:419
#, no-wrap
msgid ""
"# ftp myhost\n"
"get _.disk.image \"| sh updatep1\"\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/nanobsd/_index.adoc:420
+#: documentation/content/en/articles/nanobsd/_index.adoc:421
#, no-wrap
msgid "Using man:ssh[1]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:423
+#: documentation/content/en/articles/nanobsd/_index.adoc:424
msgid "If a secure transfer is preferred, consider using this example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:427
+#: documentation/content/en/articles/nanobsd/_index.adoc:428
#, no-wrap
msgid "# ssh myhost cat _.disk.image.gz | zcat | sh updatep1\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/articles/nanobsd/_index.adoc:429
+#: documentation/content/en/articles/nanobsd/_index.adoc:430
#, no-wrap
msgid "Using man:nc[1]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:432
+#: documentation/content/en/articles/nanobsd/_index.adoc:433
msgid ""
"Try this example if the remote host is not running neither man:ftpd[8] or "
"man:sshd[8] service:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:436
+#: documentation/content/en/articles/nanobsd/_index.adoc:437
msgid ""
"At first, open a TCP listener on host serving the image and make it send the "
"image to client:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:440
+#: documentation/content/en/articles/nanobsd/_index.adoc:441
#, no-wrap
msgid "myhost# nc -l 2222 < _.disk.image\n"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/articles/nanobsd/_index.adoc:445
+#: documentation/content/en/articles/nanobsd/_index.adoc:446
msgid ""
"Make sure that the used port is not blocked to receive incoming connections "
"from NanoBSD host by firewall."
msgstr ""
#. type: Plain text
-#: documentation/content/en/articles/nanobsd/_index.adoc:447
+#: documentation/content/en/articles/nanobsd/_index.adoc:448
msgid ""
"Connect to the host serving new image and execute [.filename]#updatep1# "
"script:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/articles/nanobsd/_index.adoc:451
+#: documentation/content/en/articles/nanobsd/_index.adoc:452
#, no-wrap
msgid "# nc myhost 2222 | sh updatep1\n"
msgstr ""
diff --git a/documentation/content/en/articles/pgpkeys/_index.po b/documentation/content/en/articles/pgpkeys/_index.po
index d09b750f24..8d647f00b6 100644
--- a/documentation/content/en/articles/pgpkeys/_index.po
+++ b/documentation/content/en/articles/pgpkeys/_index.po
@@ -1,2818 +1,2824 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-30 14:39-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/articles/pgpkeys/_index.adoc:1
#, no-wrap
msgid "List of OpenPGP keys that can be used to verify a signature or send encrypted email to FreeBSD.org officers or developers."
msgstr ""
#. type: Title =
#: documentation/content/en/articles/pgpkeys/_index.adoc:1
#: documentation/content/en/articles/pgpkeys/_index.adoc:7
#, no-wrap
msgid "OpenPGP Keys"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/pgpkeys/_index.adoc:45
msgid "'''"
msgstr ""
#. type: Plain text
#: documentation/content/en/articles/pgpkeys/_index.adoc:50
msgid ""
"These OpenPGP keys can be used to verify a signature or send encrypted email "
"to `FreeBSD.org` officers or developers. The complete keyring can be "
"downloaded at link:https://docs.FreeBSD.org/pgpkeys/pgpkeys.txt[pgpkeyring."
"txt]."
msgstr ""
#
#
#. Do not edit this file except as instructed by the addkey.sh script.
#. See the README file in /data/pgpkeys for instructions.
#. This article contains all the keys. The officer keys are also
#. shown in the Handbook PGP keys chapter.
#. type: Title ==
#: documentation/content/en/articles/pgpkeys/_index.adoc:61
#, no-wrap
msgid "Officers"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:63
#, no-wrap
msgid "{security-officer-name} `<{security-officer-email}>`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:66
#, no-wrap
-msgid "{secteam-secretary-name} `<{secteam-secretary-email}>`"
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:69
-#, no-wrap
msgid "{core-secretary-name} `<{core-secretary-email}>`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:72
+#: documentation/content/en/articles/pgpkeys/_index.adoc:69
#, no-wrap
msgid "{portmgr-secretary-name} `<{portmgr-secretary-email}>`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:75
+#: documentation/content/en/articles/pgpkeys/_index.adoc:72
#, no-wrap
msgid "{doceng-secretary-name} `<{doceng-secretary-email}>`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/pgpkeys/_index.adoc:79
+#: documentation/content/en/articles/pgpkeys/_index.adoc:76
#, no-wrap
msgid "Core Team Members"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:81
-#: documentation/content/en/articles/pgpkeys/_index.adoc:339
+#: documentation/content/en/articles/pgpkeys/_index.adoc:78
+#: documentation/content/en/articles/pgpkeys/_index.adoc:336
#, no-wrap
msgid "`{bapt}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:84
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1074
+#: documentation/content/en/articles/pgpkeys/_index.adoc:81
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1077
#, no-wrap
msgid "`{bcr}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:87
-#: documentation/content/en/articles/pgpkeys/_index.adoc:750
+#: documentation/content/en/articles/pgpkeys/_index.adoc:84
+#: documentation/content/en/articles/pgpkeys/_index.adoc:753
#, no-wrap
msgid "`{grog}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:90
-#: documentation/content/en/articles/pgpkeys/_index.adoc:174
+#: documentation/content/en/articles/pgpkeys/_index.adoc:87
+#: documentation/content/en/articles/pgpkeys/_index.adoc:171
#, no-wrap
msgid "`{jhb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:93
-#: documentation/content/en/articles/pgpkeys/_index.adoc:573
+#: documentation/content/en/articles/pgpkeys/_index.adoc:90
+#: documentation/content/en/articles/pgpkeys/_index.adoc:570
#, no-wrap
msgid "`{lwhsu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:96
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1335
+#: documentation/content/en/articles/pgpkeys/_index.adoc:93
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1338
#, no-wrap
msgid "`{manu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:99
-#: documentation/content/en/articles/pgpkeys/_index.adoc:201
+#: documentation/content/en/articles/pgpkeys/_index.adoc:96
+#: documentation/content/en/articles/pgpkeys/_index.adoc:198
#, no-wrap
msgid "`{tcberner}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:102
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1026
+#: documentation/content/en/articles/pgpkeys/_index.adoc:99
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1029
#, no-wrap
msgid "`{0mp}`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/pgpkeys/_index.adoc:106
+#: documentation/content/en/articles/pgpkeys/_index.adoc:103
#, no-wrap
msgid "Developers"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:108
+#: documentation/content/en/articles/pgpkeys/_index.adoc:105
#, no-wrap
msgid "`{jgh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:111
+#: documentation/content/en/articles/pgpkeys/_index.adoc:108
#, no-wrap
msgid "`{ariff}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:114
+#: documentation/content/en/articles/pgpkeys/_index.adoc:111
#, no-wrap
msgid "`{tabthorpe}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:117
+#: documentation/content/en/articles/pgpkeys/_index.adoc:114
#, no-wrap
msgid "`{eadler}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:120
+#: documentation/content/en/articles/pgpkeys/_index.adoc:117
#, no-wrap
msgid "`{pauamma}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:123
+#: documentation/content/en/articles/pgpkeys/_index.adoc:120
#, no-wrap
msgid "`{shaun}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:126
+#: documentation/content/en/articles/pgpkeys/_index.adoc:123
#, no-wrap
msgid "`{brix}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:129
+#: documentation/content/en/articles/pgpkeys/_index.adoc:126
#, no-wrap
msgid "`{mandree}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:132
+#: documentation/content/en/articles/pgpkeys/_index.adoc:129
#, no-wrap
msgid "`{will}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:135
+#: documentation/content/en/articles/pgpkeys/_index.adoc:132
#, no-wrap
msgid "`{dim}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:138
+#: documentation/content/en/articles/pgpkeys/_index.adoc:135
#, no-wrap
msgid "`{anholt}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:141
+#: documentation/content/en/articles/pgpkeys/_index.adoc:138
#, no-wrap
msgid "`{fernape}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:144
+#: documentation/content/en/articles/pgpkeys/_index.adoc:141
#, no-wrap
msgid "`{mva}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:147
+#: documentation/content/en/articles/pgpkeys/_index.adoc:144
#, no-wrap
msgid "`{araujo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:150
+#: documentation/content/en/articles/pgpkeys/_index.adoc:147
#, no-wrap
msgid "`{mat}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:153
+#: documentation/content/en/articles/pgpkeys/_index.adoc:150
#, no-wrap
msgid "`{syuu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:156
+#: documentation/content/en/articles/pgpkeys/_index.adoc:153
#, no-wrap
msgid "`{asami}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:159
+#: documentation/content/en/articles/pgpkeys/_index.adoc:156
#, no-wrap
msgid "`{jsa}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:162
+#: documentation/content/en/articles/pgpkeys/_index.adoc:159
#, no-wrap
msgid "`{jadawin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:165
+#: documentation/content/en/articles/pgpkeys/_index.adoc:162
#, no-wrap
msgid "`{jwb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:168
+#: documentation/content/en/articles/pgpkeys/_index.adoc:165
#, no-wrap
msgid "`{dbaio}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:171
+#: documentation/content/en/articles/pgpkeys/_index.adoc:168
#, no-wrap
msgid "`{timur}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:177
+#: documentation/content/en/articles/pgpkeys/_index.adoc:174
#, no-wrap
msgid "`{gjb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:180
+#: documentation/content/en/articles/pgpkeys/_index.adoc:177
#, no-wrap
msgid "`{snb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:183
+#: documentation/content/en/articles/pgpkeys/_index.adoc:180
#, no-wrap
msgid "`{barner}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:186
+#: documentation/content/en/articles/pgpkeys/_index.adoc:183
#, no-wrap
msgid "`{lbartoletti}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:189
+#: documentation/content/en/articles/pgpkeys/_index.adoc:186
#, no-wrap
msgid "`{art}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:192
+#: documentation/content/en/articles/pgpkeys/_index.adoc:189
#, no-wrap
msgid "`{tobez}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:195
+#: documentation/content/en/articles/pgpkeys/_index.adoc:192
#, no-wrap
msgid "`{damien}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:198
+#: documentation/content/en/articles/pgpkeys/_index.adoc:195
#, no-wrap
msgid "`{bdragon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:204
+#: documentation/content/en/articles/pgpkeys/_index.adoc:201
#, no-wrap
msgid "`{tdb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:207
+#: documentation/content/en/articles/pgpkeys/_index.adoc:204
#, no-wrap
msgid "`{mbr}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:210
+#: documentation/content/en/articles/pgpkeys/_index.adoc:207
#, no-wrap
msgid "`{bvs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:213
+#: documentation/content/en/articles/pgpkeys/_index.adoc:210
#, no-wrap
msgid "`{novel}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:216
+#: documentation/content/en/articles/pgpkeys/_index.adoc:213
#, no-wrap
msgid "`{garga}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:219
+#: documentation/content/en/articles/pgpkeys/_index.adoc:216
#, no-wrap
msgid "`{kbowling}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:222
+#: documentation/content/en/articles/pgpkeys/_index.adoc:219
#, no-wrap
msgid "`{alexbl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:225
+#: documentation/content/en/articles/pgpkeys/_index.adoc:222
#, no-wrap
msgid "`{ebrandi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:228
+#: documentation/content/en/articles/pgpkeys/_index.adoc:225
#, no-wrap
msgid "`{harti}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:231
+#: documentation/content/en/articles/pgpkeys/_index.adoc:228
#, no-wrap
msgid "`{obraun}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:234
+#: documentation/content/en/articles/pgpkeys/_index.adoc:231
#, no-wrap
msgid "`{makc}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:237
+#: documentation/content/en/articles/pgpkeys/_index.adoc:234
#, no-wrap
msgid "`{jmb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:240
+#: documentation/content/en/articles/pgpkeys/_index.adoc:237
#, no-wrap
msgid "`{antoine}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:243
+#: documentation/content/en/articles/pgpkeys/_index.adoc:240
#, no-wrap
msgid "`{db}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:246
+#: documentation/content/en/articles/pgpkeys/_index.adoc:243
#, no-wrap
msgid "`{brueffer}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:249
+#: documentation/content/en/articles/pgpkeys/_index.adoc:246
#, no-wrap
msgid "`{markus}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:252
+#: documentation/content/en/articles/pgpkeys/_index.adoc:249
#, no-wrap
msgid "`{br}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:255
+#: documentation/content/en/articles/pgpkeys/_index.adoc:252
#, no-wrap
msgid "`{jch}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:258
+#: documentation/content/en/articles/pgpkeys/_index.adoc:255
#, no-wrap
msgid "`{jchandra}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:261
+#: documentation/content/en/articles/pgpkeys/_index.adoc:258
#, no-wrap
msgid "`{jcamou}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:264
+#: documentation/content/en/articles/pgpkeys/_index.adoc:261
#, no-wrap
msgid "`{acm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:267
+#: documentation/content/en/articles/pgpkeys/_index.adoc:264
#, no-wrap
msgid "`{gahr}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:270
+#: documentation/content/en/articles/pgpkeys/_index.adoc:267
#, no-wrap
msgid "`{dchagin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:273
+#: documentation/content/en/articles/pgpkeys/_index.adoc:270
#, no-wrap
msgid "`{perky}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:276
+#: documentation/content/en/articles/pgpkeys/_index.adoc:273
#, no-wrap
msgid "`{jon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:279
+#: documentation/content/en/articles/pgpkeys/_index.adoc:276
#, no-wrap
msgid "`{jonathan}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:282
+#: documentation/content/en/articles/pgpkeys/_index.adoc:279
#, no-wrap
msgid "`{loader}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:285
+#: documentation/content/en/articles/pgpkeys/_index.adoc:282
#, no-wrap
msgid "`{luoqi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:288
+#: documentation/content/en/articles/pgpkeys/_index.adoc:285
#, no-wrap
msgid "`{ache}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:291
+#: documentation/content/en/articles/pgpkeys/_index.adoc:288
#, no-wrap
msgid "`{melifaro}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:294
+#: documentation/content/en/articles/pgpkeys/_index.adoc:291
#, no-wrap
msgid "`{cjh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:297
+#: documentation/content/en/articles/pgpkeys/_index.adoc:294
#, no-wrap
msgid "`{davidch}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:300
+#: documentation/content/en/articles/pgpkeys/_index.adoc:297
#, no-wrap
msgid "`{milki}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:303
+#: documentation/content/en/articles/pgpkeys/_index.adoc:300
#, no-wrap
msgid "`{cjc}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:306
+#: documentation/content/en/articles/pgpkeys/_index.adoc:303
#, no-wrap
msgid "`{marcus}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:309
+#: documentation/content/en/articles/pgpkeys/_index.adoc:306
#, no-wrap
msgid "`{nik}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:312
+#: documentation/content/en/articles/pgpkeys/_index.adoc:309
#, no-wrap
msgid "`{benjsc}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:315
+#: documentation/content/en/articles/pgpkeys/_index.adoc:312
#, no-wrap
msgid "`{lcook}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:318
+#: documentation/content/en/articles/pgpkeys/_index.adoc:315
#, no-wrap
msgid "`{ngie}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:321
+#: documentation/content/en/articles/pgpkeys/_index.adoc:318
#, no-wrap
msgid "`{rakuco}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:324
+#: documentation/content/en/articles/pgpkeys/_index.adoc:321
#, no-wrap
msgid "`{alc}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:327
+#: documentation/content/en/articles/pgpkeys/_index.adoc:324
#, no-wrap
msgid "`{olivier}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:330
+#: documentation/content/en/articles/pgpkeys/_index.adoc:327
#, no-wrap
msgid "`{bcran}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:333
+#: documentation/content/en/articles/pgpkeys/_index.adoc:330
#, no-wrap
msgid "`{culot}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:336
+#: documentation/content/en/articles/pgpkeys/_index.adoc:333
#, no-wrap
msgid "`{alfredo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:342
+#: documentation/content/en/articles/pgpkeys/_index.adoc:339
#, no-wrap
msgid "`{ceri}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:345
+#: documentation/content/en/articles/pgpkeys/_index.adoc:342
#, no-wrap
msgid "`{edavis}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:348
+#: documentation/content/en/articles/pgpkeys/_index.adoc:345
#, no-wrap
msgid "`{alexey}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:351
+#: documentation/content/en/articles/pgpkeys/_index.adoc:348
#, no-wrap
msgid "`{bsd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:354
+#: documentation/content/en/articles/pgpkeys/_index.adoc:351
#, no-wrap
msgid "`{carl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:357
+#: documentation/content/en/articles/pgpkeys/_index.adoc:354
#, no-wrap
msgid "`{carlavilla}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:360
+#: documentation/content/en/articles/pgpkeys/_index.adoc:357
#, no-wrap
msgid "`{vd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:363
+#: documentation/content/en/articles/pgpkeys/_index.adoc:360
#, no-wrap
msgid "`{rdivacky}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:366
+#: documentation/content/en/articles/pgpkeys/_index.adoc:363
#, no-wrap
msgid "`{danfe}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:369
+#: documentation/content/en/articles/pgpkeys/_index.adoc:366
#, no-wrap
msgid "`{dd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:372
+#: documentation/content/en/articles/pgpkeys/_index.adoc:369
#, no-wrap
msgid "`{bdrewery}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:375
+#: documentation/content/en/articles/pgpkeys/_index.adoc:372
#, no-wrap
msgid "`{gad}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:378
+#: documentation/content/en/articles/pgpkeys/_index.adoc:375
#, no-wrap
msgid "`{kd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:381
+#: documentation/content/en/articles/pgpkeys/_index.adoc:378
#, no-wrap
msgid "`{olivierd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:384
+#: documentation/content/en/articles/pgpkeys/_index.adoc:381
#, no-wrap
msgid "`{bruno}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:387
+#: documentation/content/en/articles/pgpkeys/_index.adoc:384
#, no-wrap
msgid "`{ale}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:390
+#: documentation/content/en/articles/pgpkeys/_index.adoc:387
#, no-wrap
msgid "`{nemysis}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:393
+#: documentation/content/en/articles/pgpkeys/_index.adoc:390
#, no-wrap
msgid "`{peadar}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:396
+#: documentation/content/en/articles/pgpkeys/_index.adoc:393
#, no-wrap
msgid "`{deischen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:399
+#: documentation/content/en/articles/pgpkeys/_index.adoc:396
#, no-wrap
msgid "`{diizzy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:402
+#: documentation/content/en/articles/pgpkeys/_index.adoc:399
#, no-wrap
msgid "`{ue}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:405
+#: documentation/content/en/articles/pgpkeys/_index.adoc:402
#, no-wrap
msgid "`{madpilot}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:408
+#: documentation/content/en/articles/pgpkeys/_index.adoc:405
#, no-wrap
msgid "`{rafan}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:411
+#: documentation/content/en/articles/pgpkeys/_index.adoc:408
#, no-wrap
msgid "`{kami}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:414
+#: documentation/content/en/articles/pgpkeys/_index.adoc:411
#, no-wrap
msgid "`{farrokhi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:417
+#: documentation/content/en/articles/pgpkeys/_index.adoc:414
#, no-wrap
msgid "`{jedgar}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:420
+#: documentation/content/en/articles/pgpkeys/_index.adoc:417
#, no-wrap
msgid "`{mfechner}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:423
+#: documentation/content/en/articles/pgpkeys/_index.adoc:420
#, no-wrap
msgid "`{feld}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:426
+#: documentation/content/en/articles/pgpkeys/_index.adoc:423
#, no-wrap
msgid "`{green}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:429
+#: documentation/content/en/articles/pgpkeys/_index.adoc:426
#, no-wrap
msgid "`{fanf}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:432
+#: documentation/content/en/articles/pgpkeys/_index.adoc:429
#, no-wrap
msgid "`{blackend}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:435
+#: documentation/content/en/articles/pgpkeys/_index.adoc:432
#, no-wrap
msgid "`{petef}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:438
+#: documentation/content/en/articles/pgpkeys/_index.adoc:435
#, no-wrap
msgid "`{decke}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:441
+#: documentation/content/en/articles/pgpkeys/_index.adoc:438
#, no-wrap
msgid "`{landonf}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:444
+#: documentation/content/en/articles/pgpkeys/_index.adoc:441
#, no-wrap
msgid "`{billf}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:447
+#: documentation/content/en/articles/pgpkeys/_index.adoc:444
#, no-wrap
msgid "`{grembo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:450
+#: documentation/content/en/articles/pgpkeys/_index.adoc:447
#, no-wrap
msgid "`{sgalabov}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:453
+#: documentation/content/en/articles/pgpkeys/_index.adoc:450
#, no-wrap
msgid "`{avg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:456
+#: documentation/content/en/articles/pgpkeys/_index.adoc:453
#, no-wrap
msgid "`{beat}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:459
+#: documentation/content/en/articles/pgpkeys/_index.adoc:456
#, no-wrap
msgid "`{sjg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:462
+#: documentation/content/en/articles/pgpkeys/_index.adoc:459
#, no-wrap
msgid "`{gibbs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:465
+#: documentation/content/en/articles/pgpkeys/_index.adoc:462
#, no-wrap
msgid "`{pfg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:468
+#: documentation/content/en/articles/pgpkeys/_index.adoc:465
#, no-wrap
msgid "`{girgen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:471
+#: documentation/content/en/articles/pgpkeys/_index.adoc:468
#, no-wrap
msgid "`{eugen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:474
+#: documentation/content/en/articles/pgpkeys/_index.adoc:471
#, no-wrap
msgid "`{pgollucci}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:477
+#: documentation/content/en/articles/pgpkeys/_index.adoc:474
#, no-wrap
msgid "`{trociny}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:480
+#: documentation/content/en/articles/pgpkeys/_index.adoc:477
#, no-wrap
msgid "`{dmgk}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:483
+#: documentation/content/en/articles/pgpkeys/_index.adoc:480
#, no-wrap
msgid "`{daichi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:486
+#: documentation/content/en/articles/pgpkeys/_index.adoc:483
#, no-wrap
msgid "`{grehan}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:489
+#: documentation/content/en/articles/pgpkeys/_index.adoc:486
#, no-wrap
msgid "`{jamie}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:492
+#: documentation/content/en/articles/pgpkeys/_index.adoc:489
#, no-wrap
msgid "`{adridg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:495
+#: documentation/content/en/articles/pgpkeys/_index.adoc:492
#, no-wrap
msgid "`{wg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:498
+#: documentation/content/en/articles/pgpkeys/_index.adoc:495
#, no-wrap
msgid "`{bar}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:501
+#: documentation/content/en/articles/pgpkeys/_index.adoc:498
#, no-wrap
msgid "`{jmg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:504
+#: documentation/content/en/articles/pgpkeys/_index.adoc:501
#, no-wrap
msgid "`{mjg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:507
+#: documentation/content/en/articles/pgpkeys/_index.adoc:504
#, no-wrap
msgid "`{jhale}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:510
+#: documentation/content/en/articles/pgpkeys/_index.adoc:507
#, no-wrap
msgid "`{dannyboy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:513
+#: documentation/content/en/articles/pgpkeys/_index.adoc:510
#, no-wrap
msgid "`{dhartmei}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:516
+#: documentation/content/en/articles/pgpkeys/_index.adoc:513
#, no-wrap
msgid "`{ohauer}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:519
+#: documentation/content/en/articles/pgpkeys/_index.adoc:516
#, no-wrap
msgid "`{ehaupt}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:522
+#: documentation/content/en/articles/pgpkeys/_index.adoc:519
#, no-wrap
msgid "`{jhay}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:525
+#: documentation/content/en/articles/pgpkeys/_index.adoc:522
#, no-wrap
msgid "`{bhd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:528
+#: documentation/content/en/articles/pgpkeys/_index.adoc:525
#, no-wrap
msgid "`{sheldonh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:531
+#: documentation/content/en/articles/pgpkeys/_index.adoc:528
#, no-wrap
msgid "`{mikeh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:534
+#: documentation/content/en/articles/pgpkeys/_index.adoc:531
#, no-wrap
msgid "`{mheinen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:537
+#: documentation/content/en/articles/pgpkeys/_index.adoc:534
#, no-wrap
msgid "`{niels}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:540
+#: documentation/content/en/articles/pgpkeys/_index.adoc:537
#, no-wrap
msgid "`{ghelmer}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:543
+#: documentation/content/en/articles/pgpkeys/_index.adoc:540
#, no-wrap
msgid "`{mux}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:546
+#: documentation/content/en/articles/pgpkeys/_index.adoc:543
#, no-wrap
msgid "`{wen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:549
+#: documentation/content/en/articles/pgpkeys/_index.adoc:546
#, no-wrap
msgid "`{dhn}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:552
+#: documentation/content/en/articles/pgpkeys/_index.adoc:549
#, no-wrap
msgid "`{jhibbits}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:555
+#: documentation/content/en/articles/pgpkeys/_index.adoc:552
#, no-wrap
msgid "`{jhixson}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:558
+#: documentation/content/en/articles/pgpkeys/_index.adoc:555
#, no-wrap
msgid "`{pho}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:561
+#: documentation/content/en/articles/pgpkeys/_index.adoc:558
#, no-wrap
msgid "`{oh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:564
+#: documentation/content/en/articles/pgpkeys/_index.adoc:561
#, no-wrap
msgid "`{mhorne}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:567
+#: documentation/content/en/articles/pgpkeys/_index.adoc:564
#, no-wrap
msgid "`{bhughes}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:570
+#: documentation/content/en/articles/pgpkeys/_index.adoc:567
#, no-wrap
msgid "`{sunpoet}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:576
+#: documentation/content/en/articles/pgpkeys/_index.adoc:573
#, no-wrap
msgid "`{foxfair}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:579
+#: documentation/content/en/articles/pgpkeys/_index.adoc:576
#, no-wrap
msgid "`{whu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:582
+#: documentation/content/en/articles/pgpkeys/_index.adoc:579
#, no-wrap
msgid "`{chinsan}`"
msgstr ""
+#. type: Title ===
+#: documentation/content/en/articles/pgpkeys/_index.adoc:582
+#, no-wrap
+msgid "`{zlei}`"
+msgstr ""
+
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:585
#, no-wrap
msgid "`{davide}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:588
#, no-wrap
msgid "`{jkh}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:591
#, no-wrap
msgid "`{versus}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:594
#, no-wrap
msgid "`{pi}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:597
#, no-wrap
msgid "`{weongyo}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:600
#, no-wrap
msgid "`{peterj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:603
#, no-wrap
msgid "`{jinmei}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:606
#, no-wrap
msgid "`{ahze}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:609
#, no-wrap
msgid "`{markj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:612
#, no-wrap
msgid "`{trevor}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:615
#, no-wrap
msgid "`{erj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:618
#, no-wrap
msgid "`{allanjude}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:621
#, no-wrap
msgid "`{bjk}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:624
#, no-wrap
msgid "`{phk}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:627
#, no-wrap
msgid "`{pluknet}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:630
#, no-wrap
msgid "`{cokane}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:633
#, no-wrap
msgid "`{karels}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:636
#, no-wrap
msgid "`{kato}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:639
#, no-wrap
msgid "`{vkashyap}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:642
#, no-wrap
msgid "`{pkubaj}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:645
#, no-wrap
msgid "`{kris}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:648
#, no-wrap
msgid "`{keramida}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:651
#, no-wrap
msgid "`{fjoe}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:654
#, no-wrap
msgid "`{manolis}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:657
#, no-wrap
msgid "`{stevek}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:660
#, no-wrap
msgid "`{jkim}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:663
#, no-wrap
msgid "`{zack}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:666
#, no-wrap
msgid "`{jceel}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:669
#, no-wrap
msgid "`{andreas}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:672
#, no-wrap
msgid "`{kai}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/articles/pgpkeys/_index.adoc:675
#, no-wrap
+msgid "`{corvink}`"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/articles/pgpkeys/_index.adoc:678
+#, no-wrap
msgid "`{jkois}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:678
+#: documentation/content/en/articles/pgpkeys/_index.adoc:681
#, no-wrap
msgid "`{sergei}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:681
+#: documentation/content/en/articles/pgpkeys/_index.adoc:684
#, no-wrap
msgid "`{maxim}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:684
+#: documentation/content/en/articles/pgpkeys/_index.adoc:687
#, no-wrap
msgid "`{taras}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:687
+#: documentation/content/en/articles/pgpkeys/_index.adoc:690
#, no-wrap
msgid "`{tobik}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:690
+#: documentation/content/en/articles/pgpkeys/_index.adoc:693
#, no-wrap
msgid "`{jkoshy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:693
+#: documentation/content/en/articles/pgpkeys/_index.adoc:696
#, no-wrap
msgid "`{wkoszek}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:696
+#: documentation/content/en/articles/pgpkeys/_index.adoc:699
#, no-wrap
msgid "`{ak}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:699
+#: documentation/content/en/articles/pgpkeys/_index.adoc:702
#, no-wrap
msgid "`{gabor}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:702
+#: documentation/content/en/articles/pgpkeys/_index.adoc:705
#, no-wrap
msgid "`{anchie}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:705
+#: documentation/content/en/articles/pgpkeys/_index.adoc:708
#, no-wrap
msgid "`{rushani}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:708
+#: documentation/content/en/articles/pgpkeys/_index.adoc:711
#, no-wrap
msgid "`{kuriyama}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:711
+#: documentation/content/en/articles/pgpkeys/_index.adoc:714
#, no-wrap
msgid "`{rene}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:714
+#: documentation/content/en/articles/pgpkeys/_index.adoc:717
#, no-wrap
msgid "`{jlaffaye}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:717
+#: documentation/content/en/articles/pgpkeys/_index.adoc:720
#, no-wrap
msgid "`{clement}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:720
+#: documentation/content/en/articles/pgpkeys/_index.adoc:723
#, no-wrap
msgid "`{mlaier}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:723
+#: documentation/content/en/articles/pgpkeys/_index.adoc:726
#, no-wrap
msgid "`{martymac}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:726
+#: documentation/content/en/articles/pgpkeys/_index.adoc:729
#, no-wrap
msgid "`{glarkin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:729
+#: documentation/content/en/articles/pgpkeys/_index.adoc:732
#, no-wrap
msgid "`{dru}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:732
+#: documentation/content/en/articles/pgpkeys/_index.adoc:735
#, no-wrap
msgid "`{lawrance}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:735
+#: documentation/content/en/articles/pgpkeys/_index.adoc:738
#, no-wrap
msgid "`{njl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:738
+#: documentation/content/en/articles/pgpkeys/_index.adoc:741
#, no-wrap
msgid "`{jlh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:741
+#: documentation/content/en/articles/pgpkeys/_index.adoc:744
#, no-wrap
msgid "`{leeym}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:744
+#: documentation/content/en/articles/pgpkeys/_index.adoc:747
#, no-wrap
msgid "`{sam}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:747
+#: documentation/content/en/articles/pgpkeys/_index.adoc:750
#, no-wrap
msgid "`{jylefort}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:753
+#: documentation/content/en/articles/pgpkeys/_index.adoc:756
#, no-wrap
msgid "`{oliver}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:756
+#: documentation/content/en/articles/pgpkeys/_index.adoc:759
#, no-wrap
msgid "`{netchild}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:759
+#: documentation/content/en/articles/pgpkeys/_index.adoc:762
#, no-wrap
msgid "`{leitao}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:762
+#: documentation/content/en/articles/pgpkeys/_index.adoc:765
#, no-wrap
msgid "`{ae}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:765
+#: documentation/content/en/articles/pgpkeys/_index.adoc:768
#, no-wrap
msgid "`{lesi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:768
+#: documentation/content/en/articles/pgpkeys/_index.adoc:771
#, no-wrap
msgid "`{achim}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:771
+#: documentation/content/en/articles/pgpkeys/_index.adoc:774
#, no-wrap
msgid "`{cel}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:774
+#: documentation/content/en/articles/pgpkeys/_index.adoc:777
#, no-wrap
msgid "`{glewis}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:777
+#: documentation/content/en/articles/pgpkeys/_index.adoc:780
#, no-wrap
msgid "`{vishwin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:780
+#: documentation/content/en/articles/pgpkeys/_index.adoc:783
#, no-wrap
msgid "`{delphij}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:783
+#: documentation/content/en/articles/pgpkeys/_index.adoc:786
#, no-wrap
msgid "`{avatar}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:786
+#: documentation/content/en/articles/pgpkeys/_index.adoc:789
#, no-wrap
msgid "`{ijliao}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:789
+#: documentation/content/en/articles/pgpkeys/_index.adoc:792
#, no-wrap
msgid "`{rlibby}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:792
+#: documentation/content/en/articles/pgpkeys/_index.adoc:795
#, no-wrap
msgid "`{pclin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:795
+#: documentation/content/en/articles/pgpkeys/_index.adoc:798
#, no-wrap
msgid "`{yzlin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:798
+#: documentation/content/en/articles/pgpkeys/_index.adoc:801
#, no-wrap
msgid "`{linimon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:801
+#: documentation/content/en/articles/pgpkeys/_index.adoc:804
#, no-wrap
msgid "`{arved}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:804
+#: documentation/content/en/articles/pgpkeys/_index.adoc:807
#, no-wrap
msgid "`{dryice}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:807
+#: documentation/content/en/articles/pgpkeys/_index.adoc:810
#, no-wrap
msgid "`{nemoliu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:810
+#: documentation/content/en/articles/pgpkeys/_index.adoc:813
#, no-wrap
msgid "`{kevlo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:813
+#: documentation/content/en/articles/pgpkeys/_index.adoc:816
#, no-wrap
msgid "`{zml}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:816
+#: documentation/content/en/articles/pgpkeys/_index.adoc:819
#, no-wrap
msgid "`{nox}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:819
+#: documentation/content/en/articles/pgpkeys/_index.adoc:822
#, no-wrap
msgid "`{avl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:822
+#: documentation/content/en/articles/pgpkeys/_index.adoc:825
#, no-wrap
msgid "`{scottl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:825
+#: documentation/content/en/articles/pgpkeys/_index.adoc:828
#, no-wrap
msgid "`{rmacklem}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:828
+#: documentation/content/en/articles/pgpkeys/_index.adoc:831
#, no-wrap
msgid "`{vmaffione}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:831
+#: documentation/content/en/articles/pgpkeys/_index.adoc:834
#, no-wrap
msgid "`{bmah}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:834
+#: documentation/content/en/articles/pgpkeys/_index.adoc:837
#, no-wrap
msgid "`{rm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:837
+#: documentation/content/en/articles/pgpkeys/_index.adoc:840
#, no-wrap
msgid "`{mtm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:840
+#: documentation/content/en/articles/pgpkeys/_index.adoc:843
#, no-wrap
msgid "`{dwmalone}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:843
+#: documentation/content/en/articles/pgpkeys/_index.adoc:846
#, no-wrap
msgid "`{marino}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:846
+#: documentation/content/en/articles/pgpkeys/_index.adoc:849
#, no-wrap
msgid "`{cherry}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:849
+#: documentation/content/en/articles/pgpkeys/_index.adoc:852
#, no-wrap
msgid "`{matusita}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:852
+#: documentation/content/en/articles/pgpkeys/_index.adoc:855
#, no-wrap
msgid "`{mm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:855
+#: documentation/content/en/articles/pgpkeys/_index.adoc:858
#, no-wrap
msgid "`{sem}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:858
+#: documentation/content/en/articles/pgpkeys/_index.adoc:861
#, no-wrap
msgid "`{mckusick}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:861
+#: documentation/content/en/articles/pgpkeys/_index.adoc:864
#, no-wrap
msgid "`{tmclaugh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:864
+#: documentation/content/en/articles/pgpkeys/_index.adoc:867
#, no-wrap
msgid "`{jmelo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:867
+#: documentation/content/en/articles/pgpkeys/_index.adoc:870
#, no-wrap
msgid "`{mmel}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:870
+#: documentation/content/en/articles/pgpkeys/_index.adoc:873
#, no-wrap
msgid "`{jmmv}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:873
+#: documentation/content/en/articles/pgpkeys/_index.adoc:876
#, no-wrap
msgid "`{kadesai}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:876
+#: documentation/content/en/articles/pgpkeys/_index.adoc:879
#, no-wrap
msgid "`{ken}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:879
+#: documentation/content/en/articles/pgpkeys/_index.adoc:882
#, no-wrap
msgid "`{markm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:882
+#: documentation/content/en/articles/pgpkeys/_index.adoc:885
#, no-wrap
msgid "`{dinoex}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:885
+#: documentation/content/en/articles/pgpkeys/_index.adoc:888
#, no-wrap
msgid "`{sanpei}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:888
+#: documentation/content/en/articles/pgpkeys/_index.adoc:891
#, no-wrap
msgid "`{rmh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:891
+#: documentation/content/en/articles/pgpkeys/_index.adoc:894
#, no-wrap
msgid "`{driesm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:894
+#: documentation/content/en/articles/pgpkeys/_index.adoc:897
#, no-wrap
msgid "`{jrm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:897
+#: documentation/content/en/articles/pgpkeys/_index.adoc:900
#, no-wrap
msgid "`{freqlabs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:900
+#: documentation/content/en/articles/pgpkeys/_index.adoc:903
#, no-wrap
msgid "`{mmoll}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:903
+#: documentation/content/en/articles/pgpkeys/_index.adoc:906
#, no-wrap
msgid "`{cmt}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:906
+#: documentation/content/en/articles/pgpkeys/_index.adoc:909
#, no-wrap
msgid "`{stephen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:909
+#: documentation/content/en/articles/pgpkeys/_index.adoc:912
#, no-wrap
msgid "`{marcel}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:912
+#: documentation/content/en/articles/pgpkeys/_index.adoc:915
#, no-wrap
msgid "`{dougm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:915
+#: documentation/content/en/articles/pgpkeys/_index.adoc:918
#, no-wrap
msgid "`{kmoore}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:918
+#: documentation/content/en/articles/pgpkeys/_index.adoc:921
#, no-wrap
msgid "`{marck}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:921
+#: documentation/content/en/articles/pgpkeys/_index.adoc:924
#, no-wrap
msgid "`{mav}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:924
+#: documentation/content/en/articles/pgpkeys/_index.adoc:927
#, no-wrap
msgid "`{rich}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:927
+#: documentation/content/en/articles/pgpkeys/_index.adoc:930
#, no-wrap
msgid "`{knu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:930
+#: documentation/content/en/articles/pgpkeys/_index.adoc:933
#, no-wrap
msgid "`{tmm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:933
+#: documentation/content/en/articles/pgpkeys/_index.adoc:936
#, no-wrap
msgid "`{max}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:936
+#: documentation/content/en/articles/pgpkeys/_index.adoc:939
#, no-wrap
msgid "`{maho}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:939
+#: documentation/content/en/articles/pgpkeys/_index.adoc:942
#, no-wrap
msgid "`{yoichi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:942
+#: documentation/content/en/articles/pgpkeys/_index.adoc:945
#, no-wrap
msgid "`{bland}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:945
+#: documentation/content/en/articles/pgpkeys/_index.adoc:948
#, no-wrap
msgid "`{gnn}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:948
+#: documentation/content/en/articles/pgpkeys/_index.adoc:951
#, no-wrap
msgid "`{khng}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:951
+#: documentation/content/en/articles/pgpkeys/_index.adoc:954
#, no-wrap
msgid "`{simon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:954
+#: documentation/content/en/articles/pgpkeys/_index.adoc:957
#, no-wrap
msgid "`{rnoland}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:957
+#: documentation/content/en/articles/pgpkeys/_index.adoc:960
#, no-wrap
msgid "`{anders}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:960
+#: documentation/content/en/articles/pgpkeys/_index.adoc:963
#, no-wrap
msgid "`{lofi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:963
+#: documentation/content/en/articles/pgpkeys/_index.adoc:966
#, no-wrap
msgid "`{obrien}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:966
+#: documentation/content/en/articles/pgpkeys/_index.adoc:969
#, no-wrap
msgid "`{olgeni}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:969
+#: documentation/content/en/articles/pgpkeys/_index.adoc:972
#, no-wrap
msgid "`{philip}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:972
+#: documentation/content/en/articles/pgpkeys/_index.adoc:975
#, no-wrap
msgid "`{jpaetzel}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:975
+#: documentation/content/en/articles/pgpkeys/_index.adoc:978
#, no-wrap
msgid "`{zirias}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:978
+#: documentation/content/en/articles/pgpkeys/_index.adoc:981
#, no-wrap
msgid "`{hiren}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:981
+#: documentation/content/en/articles/pgpkeys/_index.adoc:984
#, no-wrap
msgid "`{hmp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:984
+#: documentation/content/en/articles/pgpkeys/_index.adoc:987
#, no-wrap
msgid "`{fluffy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:987
+#: documentation/content/en/articles/pgpkeys/_index.adoc:990
#, no-wrap
msgid "`{sat}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:990
+#: documentation/content/en/articles/pgpkeys/_index.adoc:993
#, no-wrap
msgid "`{np}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:993
+#: documentation/content/en/articles/pgpkeys/_index.adoc:996
#, no-wrap
msgid "`{royger}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:996
+#: documentation/content/en/articles/pgpkeys/_index.adoc:999
#, no-wrap
msgid "`{rpaulo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:999
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1002
#, no-wrap
msgid "`{rpokala}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1002
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1005
#, no-wrap
msgid "`{mp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1005
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1008
#, no-wrap
msgid "`{roam}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1008
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1011
#, no-wrap
msgid "`{den}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1011
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1014
#, no-wrap
msgid "`{csjp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1014
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1017
#, no-wrap
msgid "`{grahamperrin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1017
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1020
#, no-wrap
msgid "`{gerald}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1020
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1023
#, no-wrap
msgid "`{scottph}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1023
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1026
#, no-wrap
msgid "`{jacula}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1029
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1032
#, no-wrap
msgid "`{jdp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1032
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1035
#, no-wrap
msgid "`{krion}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1035
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1038
#, no-wrap
msgid "`{sepotvin}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1038
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1041
#, no-wrap
msgid "`{cpm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1041
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1044
#, no-wrap
msgid "`{markp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1044
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1047
#, no-wrap
msgid "`{alepulver}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1047
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1050
#, no-wrap
msgid "`{kp}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1050
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1053
#, no-wrap
msgid "`{thomas}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1053
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1056
#, no-wrap
msgid "`{hq}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1056
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1059
#, no-wrap
msgid "`{bofh}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1059
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1062
#, no-wrap
msgid "`{fox}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1062
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1065
#, no-wrap
msgid "`{lbr}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1065
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1068
#, no-wrap
msgid "`{crees}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1068
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1071
#, no-wrap
msgid "`{rees}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1071
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1074
#, no-wrap
msgid "`{mr}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1077
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1080
#, no-wrap
msgid "`{trhodes}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1080
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1083
#, no-wrap
msgid "`{benno}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1083
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1086
#, no-wrap
msgid "`{beech}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1086
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1089
#, no-wrap
msgid "`{roberto}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1089
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1092
#, no-wrap
msgid "`{rodrigc}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1092
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1095
#, no-wrap
msgid "`{ler}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1095
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1098
#, no-wrap
msgid "`{leres}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1098
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1101
#, no-wrap
msgid "`{robak}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1101
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1104
#, no-wrap
msgid "`{guido}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1104
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1107
#, no-wrap
msgid "`{rea}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1107
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1110
#, no-wrap
msgid "`{ray}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1110
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1113
#, no-wrap
msgid "`{niklas}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1113
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1116
#, no-wrap
msgid "`{salvadore}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1116
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1119
#, no-wrap
msgid "`{bsam}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1119
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1122
#, no-wrap
msgid "`{marks}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1122
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1125
#, no-wrap
msgid "`{bschmidt}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1125
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1128
#, no-wrap
msgid "`{wosch}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1128
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1131
#, no-wrap
msgid "`{cy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1131
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1134
#, no-wrap
msgid "`{das}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1134
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1137
#, no-wrap
msgid "`{scheidell}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1137
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1140
#, no-wrap
msgid "`{matthew}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1140
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1143
#, no-wrap
msgid "`{tmseck}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1143
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1146
#, no-wrap
msgid "`{johans}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1146
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1149
#, no-wrap
msgid "`{bakul}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1149
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1152
#, no-wrap
msgid "`{gshapiro}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1152
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1155
#, no-wrap
msgid "`{wxs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1155
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1158
#, no-wrap
msgid "`{nork}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1158
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1161
#, no-wrap
msgid "`{syrinx}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1161
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1164
#, no-wrap
msgid "`{vanilla}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1164
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1167
#, no-wrap
msgid "`{ashish}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1167
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1170
#, no-wrap
msgid "`{asiciliano}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1170
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1173
#, no-wrap
msgid "`{chs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1173
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1176
#, no-wrap
msgid "`{bms}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1176
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1179
#, no-wrap
msgid "`{demon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1179
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1182
#, no-wrap
msgid "`{jesper}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1182
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1185
#, no-wrap
msgid "`{scop}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1185
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1188
#, no-wrap
msgid "`{anray}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1188
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1191
#, no-wrap
msgid "`{flo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1191
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1194
#, no-wrap
msgid "`{glebius}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1194
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1197
#, no-wrap
msgid "`{kensmith}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1197
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1200
#, no-wrap
msgid "`{ben}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1200
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1203
#, no-wrap
msgid "`{des}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1203
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1206
#, no-wrap
msgid "`{sobomax}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1206
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1209
#, no-wrap
msgid "`{asomers}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1209
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1212
#, no-wrap
msgid "`{brian}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1212
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1215
#, no-wrap
msgid "`{sson}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1215
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1218
#, no-wrap
msgid "`{nsouch}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1218
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1221
#, no-wrap
msgid "`{ssouhlal}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1221
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1224
#, no-wrap
msgid "`{loos}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1224
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1227
#, no-wrap
msgid "`{brnrd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1227
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1230
#, no-wrap
msgid "`{rink}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1230
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1233
#, no-wrap
msgid "`{vsevolod}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1233
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1236
#, no-wrap
msgid "`{pstef}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1236
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1239
#, no-wrap
msgid "`{zi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1239
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1242
#, no-wrap
msgid "`{lstewart}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1242
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1245
#, no-wrap
msgid "`{murray}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1245
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1248
#, no-wrap
msgid "`{vs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1248
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1251
#, no-wrap
msgid "`{xride}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1251
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1254
#, no-wrap
msgid "`{marius}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1254
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1257
#, no-wrap
msgid "`{cs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1257
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1260
#, no-wrap
msgid "`{clsung}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1260
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1263
#, no-wrap
msgid "`{gsutter}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1263
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1266
#, no-wrap
msgid "`{metal}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1266
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1269
#, no-wrap
msgid "`{ryusuke}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1269
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1272
#, no-wrap
msgid "`{nyan}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1272
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1275
#, no-wrap
msgid "`{sahil}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1275
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1278
#, no-wrap
msgid "`{tota}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1278
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1281
#, no-wrap
msgid "`{romain}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1281
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1284
#, no-wrap
msgid "`{eduardo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1284
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1287
#, no-wrap
msgid "`{sylvio}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1287
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1290
#, no-wrap
msgid "`{itetcu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1290
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1293
#, no-wrap
msgid "`{mi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1293
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1296
#, no-wrap
msgid "`{gordon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1296
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1299
#, no-wrap
msgid "`{lth}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1299
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1302
#, no-wrap
msgid "`{fabient}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1302
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1305
#, no-wrap
msgid "`{thierry}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1305
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1308
#, no-wrap
msgid "`{thompsa}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1308
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1311
#, no-wrap
msgid "`{flz}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1311
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1314
#, no-wrap
msgid "`{jilles}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1314
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1317
#, no-wrap
msgid "`{ganbold}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1317
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1320
#, no-wrap
msgid "`{tuexen}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1320
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1323
#, no-wrap
msgid "`{gonzo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1323
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1326
#, no-wrap
msgid "`{ume}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1326
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1329
#, no-wrap
msgid "`{ups}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1329
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1332
#, no-wrap
msgid "`{fsu}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1332
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1335
#, no-wrap
msgid "`{mikael}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1338
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1341
#, no-wrap
msgid "`{ram}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1341
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1344
#, no-wrap
msgid "`{bryanv}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1344
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1347
#, no-wrap
msgid "`{nectar}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1347
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1350
#, no-wrap
msgid "`{avilla}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1350
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1353
#, no-wrap
msgid "`{nivit}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1353
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1356
#, no-wrap
msgid "`{ivoras}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1356
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1359
#, no-wrap
msgid "`{stefan}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1359
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1362
#, no-wrap
msgid "`{kaiw}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1362
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1365
#, no-wrap
msgid "`{adamw}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1365
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1368
#, no-wrap
msgid "`{naddy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1368
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1371
#, no-wrap
msgid "`{peter}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1371
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1374
#, no-wrap
msgid "`{nwhitehorn}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1374
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1377
#, no-wrap
msgid "`{miwi}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1377
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1380
#, no-wrap
msgid "`{nate}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1380
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1383
#, no-wrap
msgid "`{twinterg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1383
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1386
#, no-wrap
msgid "`{def}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1386
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1389
#, no-wrap
msgid "`{wollman}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1389
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1392
#, no-wrap
msgid "`{joerg}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1392
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1395
#, no-wrap
msgid "`{ygy}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1395
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1398
#, no-wrap
msgid "`{emax}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1398
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1401
#, no-wrap
msgid "`{oshogbo}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1401
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1404
#, no-wrap
msgid "`{riggs}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1404
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1407
#, no-wrap
msgid "`{egypcio}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1407
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1410
#, no-wrap
msgid "`{bz}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1410
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1413
#, no-wrap
msgid "`{dsl}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1413
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1416
#, no-wrap
msgid "`{zeising}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1416
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1419
#, no-wrap
msgid "`{phantom}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1419
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1422
#, no-wrap
msgid "`{tz}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1422
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1425
#, no-wrap
msgid "`{rigoletto}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1425
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1428
#, no-wrap
msgid "`{kaktus}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1428
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1431
#, no-wrap
msgid "`{samm}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1431
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1434
#, no-wrap
msgid "`{arrowd}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1434
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1437
#, no-wrap
msgid "`{ronald}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1437
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1440
#, no-wrap
msgid "`{meta}`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1441
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1444
#, no-wrap
msgid "Other Cluster Account Holders"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1443
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1446
#, no-wrap
msgid "`{bk}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1446
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1449
#, no-wrap
msgid "`{deb}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1449
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1452
#, no-wrap
msgid "`{debdrup}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1452
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1455
#, no-wrap
msgid "`{dutchdaemon}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1455
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1458
#, no-wrap
msgid "`{keymaster}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1458
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1461
#, no-wrap
msgid "`{mwlucas}`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/articles/pgpkeys/_index.adoc:1461
+#: documentation/content/en/articles/pgpkeys/_index.adoc:1464
#, no-wrap
msgid "`{dhw}`"
msgstr ""
diff --git a/documentation/content/en/books/dev-model/_index.po b/documentation/content/en/books/dev-model/_index.po
index 1bfab9a87f..522024d082 100644
--- a/documentation/content/en/books/dev-model/_index.po
+++ b/documentation/content/en/books/dev-model/_index.po
@@ -1,2874 +1,2874 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/dev-model/_index.adoc:1
#, no-wrap
msgid "A formal study of the organization of the FreeBSD project"
msgstr ""
#. Copyright (c) 2002-2005 Niklas Saers
#. All rights reserved.
#. Redistribution and use in source and binary forms, with or without
#. modification, are permitted provided that the following conditions
#. are met:
#. 1. Redistributions of source code must retain the above copyright
#. notice, this list of conditions and the following disclaimer.
#. 2. Redistributions in binary form must reproduce the above copyright
#. notice, this list of conditions and the following disclaimer in the
#. documentation and/or other materials provided with the distribution.
#. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
#. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#. ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
#. FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
#. DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
#. OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
#. HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
#. LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
#. OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#. SUCH DAMAGE.
#. type: Title =
#: documentation/content/en/books/dev-model/_index.adoc:1
#: documentation/content/en/books/dev-model/_index.adoc:38
#, no-wrap
msgid "A project model for the FreeBSD Project"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:71
msgid "'''"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:77
msgid "Foreword"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:83
msgid ""
"Up until now, the FreeBSD project has released a number of described "
"techniques to do different parts of work. However, a project model "
"summarising how the project is structured is needed because of the "
"increasing amount of project members. footnote:[This goes hand-in-hand with "
"Brooks' law that adding another person to a late project will make it later "
"since it will increase the communication needs . A project model is a tool "
"to reduce the communication needs.] This paper will provide such a project "
"model and is donated to the FreeBSD Documentation project where it can "
"evolve together with the project so that it can at any point in time reflect "
"the way the project works. It is based on [<<thesis, Saers,2003>>]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:85
msgid ""
"I would like to thank the following people for taking the time to explain "
"things that were unclear to me and for proofreading the document."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:87
msgid "Andrey A. Chernov mailto:ache@freebsd.org[ache@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:88
msgid "Bruce A. Mah mailto:bmah@freebsd.org[bmah@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:89
msgid "Dag-Erling Smørgrav mailto:des@freebsd.org[des@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:90
msgid "Giorgos Keramidas mailto:keramida@freebsd.org[keramida@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:91
msgid ""
"Ingvil Hovig mailto:ingvil.hovig@skatteetaten.no[ingvil.hovig@skatteetaten."
"no]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:92
msgid "Jesper Holck mailto:jeh.inf@cbs.dk[jeh.inf@cbs.dk]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:93
msgid "John Baldwin mailto:jhb@freebsd.org[jhb@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:94
msgid "John Polstra mailto:jdp@freebsd.org[jdp@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:95
msgid "Kirk McKusick mailto:mckusick@freebsd.org[mckusick@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:96
msgid "Mark Linimon mailto:linimon@freebsd.org[linimon@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:97
msgid "Marleen Devos"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:98
msgid "Niels Jørgenssen mailto:nielsj@ruc.dk[nielsj@ruc.dk]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:99
msgid "Nik Clayton mailto:nik@freebsd.org[nik@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:100
msgid "Poul-Henning Kamp mailto:phk@freebsd.org[phk@freebsd.org]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:101
msgid "Simon L. Nielsen mailto:simon@freebsd.org[simon@freebsd.org]"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:103
#, no-wrap
msgid "Overview"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:108
msgid ""
"A project model is a means to reduce the communications overhead in a "
"project. As shown by [<<brooks, Brooks, 1995>>], increasing the number of "
"project participants increases the communication in the project "
"exponentionally. FreeBSD has during the past few years increased both its "
"mass of active users and committers, and the communication in the project "
"has risen accordingly. This project model will serve to reduce this "
"overhead by providing an up-to-date description of the project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:114
msgid ""
"During the Core elections in 2002, Mark Murray stated \"I am opposed to a "
"long rule-book, as that satisfies lawyer-tendencies, and is counter to the "
"technocentricity that the project so badly needs.\" [<<bsd-election2002, "
"FreeBSD, 2002B>>]. This project model is not meant to be a tool to justify "
"creating impositions for developers, but as a tool to facilitate "
"coordination. It is meant as a description of the project, with an overview "
"of how the different processes are executed. It is an introduction to how "
"the FreeBSD project works."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:117
msgid ""
"The FreeBSD project model will be described as of July 1st, 2004. It is "
"based on the Niels Jørgensen's paper [<<jorgensen2001, Jørgensen, 2001>>], "
"FreeBSD's official documents, discussions on FreeBSD mailing lists and "
"interviews with developers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:120
msgid ""
"After providing definitions of terms used, this document will outline the "
"organisational structure (including role descriptions and communication "
"lines), discuss the methodology model and after presenting the tools used "
"for process control, it will present the defined processes. Finally it will "
"outline major sub-projects of the FreeBSD project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:124
msgid ""
"[<<freebsd-developer-handbook, FreeBSD, 2002A>>] Section 1.2 and 1.3 give "
"the vision and the architectural guidelines for the project. The vision is "
"\"To produce the best UNIX-like operating system package possible, with due "
"respect to the original software tools ideology as well as usability, "
"performance and stability.\" The architectural guidelines help determine "
"whether a problem that someone wants to be solved is within the scope of the "
"project"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:126
#, no-wrap
msgid "Definitions"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:129
#, no-wrap
msgid "Activity"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:134
msgid ""
"An \"activity\" is an element of work performed during the course of a "
"project [<<ref-pmbok, PMI, 2000>>]. It has an output and leads towards an "
"outcome. Such an output can either be an input to another activity or a "
"part of the process' delivery."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:136
#, no-wrap
msgid "Process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:141
msgid ""
"A \"process\" is a series of activities that lead towards a particular "
"outcome. A process can consist of one or more sub-processes. An example of "
"a process is software design."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:143
#, no-wrap
msgid "Hat"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:149
msgid ""
"A \"hat\" is synonymous with role. A hat has certain responsibilities in a "
"process and for the process outcome. The hat executes activities. It is "
"well defined what issues the hat should be contacted about by the project "
"members and people outside the project."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:151
#, no-wrap
msgid "Outcome"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:157
msgid ""
"An \"outcome\" is the final output of the process. This is synonymous with "
"deliverable, that is defined as \"any measurable, tangible, verifiable "
"outcome, result or item that must be produced to complete a project or part "
"of a project. Often used more narrowly in reference to an external "
"deliverable, which is a deliverable that is subject to approval by the "
"project sponsor or customer\" by [<<ref-pmbok, PMI, 2000>>]. Examples of "
"outcomes are a piece of software, a decision made or a report written."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:159
#, no-wrap
msgid "FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:162
msgid ""
"When saying \"FreeBSD\" we will mean the BSD derivative UNIX-like operating "
"system FreeBSD, whereas when saying \"the FreeBSD Project\" we will mean the "
"project organisation."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:164
#, no-wrap
msgid "Organisational structure"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:167
msgid ""
"While no-one takes ownership of FreeBSD, the FreeBSD organisation is divided "
"into core, committers and contributors and is part of the FreeBSD community "
"that lives around it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:169
msgid "The FreeBSD Project's structure (in order of descending authority)"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:174
#: documentation/content/en/books/dev-model/_index.adoc:209
#, no-wrap
msgid "Group"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:176
#: documentation/content/en/books/dev-model/_index.adoc:212
#, no-wrap
msgid "Number of people"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:177
#: documentation/content/en/books/dev-model/_index.adoc:213
#, no-wrap
msgid "Core members"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:179
#: documentation/content/en/books/dev-model/_index.adoc:216
#, no-wrap
msgid "9"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:180
#: documentation/content/en/books/dev-model/_index.adoc:217
#, no-wrap
msgid "Committers"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:182
#, no-wrap
msgid "318"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:183
#: documentation/content/en/books/dev-model/_index.adoc:233
#, no-wrap
msgid "Contributors"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:184
#: documentation/content/en/books/dev-model/_index.adoc:235
#, no-wrap
msgid "~3000"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:187
msgid ""
"Number of committers has been determined by going through CVS logs from "
"January 1st, 2004 to December 31st, 2004 and contributors by going through "
"the list of contributions and problem reports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:192
msgid ""
"The main resource in the FreeBSD community is its developers: the committers "
"and contributors. It is with their contributions that the project can move "
"forward. Regular developers are referred to as contributors. As of January "
"1st, 2003, there are an estimated 5500 contributors on the project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:196
msgid ""
"Committers are developers with the privilege of being able to commit "
"changes. These are usually the most active developers who are willing to "
"spend their time not only integrating their own code but integrating code "
"submitted by the developers who do not have this privilege. They are also "
"the developers who elect the core team, and they have access to closed "
"discussions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:200
msgid ""
"The project can be grouped into four distinct separate parts, and most "
"developers will focus their involvement in one part of FreeBSD. The four "
"parts are kernel development, userland development, ports and "
"documentation. When referring to the base system, both kernel and userland "
"is meant."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:202
msgid "This split changes our table to look like this:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:204
msgid "The FreeBSD Project's structure with committers in categories"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:210
#, no-wrap
msgid "Category"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:218
#, no-wrap
msgid "Base"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:220
#, no-wrap
msgid "164"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:222
#, no-wrap
msgid "Docs"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:224
#, no-wrap
msgid "45"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:226
#, no-wrap
msgid "Ports"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:228
#, no-wrap
msgid "166"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:230
#, no-wrap
msgid "Total"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:232
#, no-wrap
msgid "374"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:240
msgid ""
"Number of committers per area has been determined by going through CVS logs "
"from January 1st, 2004 to December 31st, 2004. Note that many committers "
"work in multiple areas, making the total number higher than the real number "
"of committers. The total number of active unique committers on June 2022 "
"was 317."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:243
msgid ""
"Committers fall into three groups: committers who are only concerned with "
"one area of the project (for instance file systems), committers who are "
"involved only with one sub-project, and committers who commit to different "
"parts of the code, including sub-projects. Because some committers work on "
"different parts, the total number in the committers section of the table is "
"higher than in the above table."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:248
msgid ""
"The kernel is the main building block of FreeBSD. While the userland "
"applications are protected against faults in other userland applications, "
"the entire system is vulnerable to errors in the kernel. This, combined "
"with the vast amount of dependencies in the kernel and that it is not easy "
"to see all the consequences of a kernel change, demands developers with a "
"relative full understanding of the kernel. Multiple development efforts in "
"the kernel also require a closer coordination than userland applications do."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:252
msgid ""
"The core utilities, known as userland, provide the interface that identifies "
"FreeBSD, both user interface, shared libraries and external interfaces to "
"connecting clients. Currently, 162 people are involved in userland "
"development and maintenance, many being maintainers for their own part of "
"the code. Maintainership will be discussed in the <<role-maintainer>> "
"section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:255
msgid ""
"Documentation is handled by <<sub-project-documentation>> and includes all "
"documents surrounding the FreeBSD project, including the web pages. There "
"were during 2004 101 people making commits to the FreeBSD Documentation "
"Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:263
msgid ""
"Ports is the collection of meta-data that is needed to make software "
"packages build correctly on FreeBSD. An example of a port is the port for "
"the web-browser Mozilla. It contains information about where to fetch the "
"source, what patches to apply and how, and how the package should be "
"installed on the system. This allows automated tools to fetch, build and "
"install the package. As of this writing, there are more than 12600 ports "
"available. footnote:[Statistics are generated by counting the number of "
"entries in the file fetched by portsdb by April 1st, 2005. portsdb is a part "
"of the port sysutils/portupgrade.] , ranging from web servers to games, "
"programming languages and most of the application types that are in use on "
"modern computers. Ports will be discussed further in the section <<sub-"
"project-ports>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:265
#, no-wrap
msgid "Methodology model"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:268
#, no-wrap
msgid "Development model"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:272
msgid ""
"There is no defined model for how people write code in FreeBSD. However, "
"Niels Jørgenssen has suggested a model of how written code is integrated "
"into the project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:274
#: documentation/content/en/books/dev-model/_index.adoc:848
msgid "Jørgenssen's model for change integration"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:279
#: documentation/content/en/books/dev-model/_index.adoc:853
#, no-wrap
msgid "Stage"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:280
#: documentation/content/en/books/dev-model/_index.adoc:854
#, no-wrap
msgid "Next if successful"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:282
#: documentation/content/en/books/dev-model/_index.adoc:856
#, no-wrap
msgid "Next if unsuccessful"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:283
#: documentation/content/en/books/dev-model/_index.adoc:290
#: documentation/content/en/books/dev-model/_index.adoc:294
#: documentation/content/en/books/dev-model/_index.adoc:298
#: documentation/content/en/books/dev-model/_index.adoc:302
#: documentation/content/en/books/dev-model/_index.adoc:305
#: documentation/content/en/books/dev-model/_index.adoc:857
#: documentation/content/en/books/dev-model/_index.adoc:864
#: documentation/content/en/books/dev-model/_index.adoc:868
#: documentation/content/en/books/dev-model/_index.adoc:872
#: documentation/content/en/books/dev-model/_index.adoc:876
#: documentation/content/en/books/dev-model/_index.adoc:879
#, no-wrap
msgid "code"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:284
#: documentation/content/en/books/dev-model/_index.adoc:287
#: documentation/content/en/books/dev-model/_index.adoc:858
#: documentation/content/en/books/dev-model/_index.adoc:861
#, no-wrap
msgid "review"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:288
#: documentation/content/en/books/dev-model/_index.adoc:291
#: documentation/content/en/books/dev-model/_index.adoc:862
#: documentation/content/en/books/dev-model/_index.adoc:865
#, no-wrap
msgid "pre-commit test"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:292
#: documentation/content/en/books/dev-model/_index.adoc:295
#: documentation/content/en/books/dev-model/_index.adoc:866
#: documentation/content/en/books/dev-model/_index.adoc:869
#, no-wrap
msgid "development release"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:296
#: documentation/content/en/books/dev-model/_index.adoc:299
#: documentation/content/en/books/dev-model/_index.adoc:870
#: documentation/content/en/books/dev-model/_index.adoc:873
#, no-wrap
msgid "parallel debugging"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:300
#: documentation/content/en/books/dev-model/_index.adoc:303
#: documentation/content/en/books/dev-model/_index.adoc:874
#: documentation/content/en/books/dev-model/_index.adoc:877
#, no-wrap
msgid "production release"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:308
msgid ""
"The \"development release\" is the FreeBSD-CURRENT (\"-CURRENT\") branch and "
"the \"production release\" is the FreeBSD-STABLE branch (\"-STABLE\") "
"[<<jorgensen2001, Jørgensen, 2001>>]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:314
msgid ""
"This is a model for one change, and shows that after coding, developers seek "
"community review and try integrating it with their own systems. After "
"integrating the change into the development release, called FreeBSD-CURRENT, "
"it is tested by many users and developers in the FreeBSD community. After "
"it has gone through enough testing, it is merged into the production "
"release, called FreeBSD-STABLE. Unless each stage is finished successfully, "
"the developer needs to go back and make modifications in the code and "
"restart the process. To integrate a change with either -CURRENT or -STABLE "
"is called making a commit."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:317
msgid ""
"Jørgensen found that most FreeBSD developers work individually, meaning that "
"this model is used in parallel by many developers on the different ongoing "
"development efforts. A developer can also be working on multiple changes, "
"so that while they are waiting for review or people to test one or more of "
"their changes, they may be writing another change."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:320
msgid ""
"As each commit represents an increment, this is a massively incremental "
"model. The commits are in fact so frequent that during one year footnote:"
"[The period from January 1st, 2004 to December 31st, 2004 was examined to "
"find this number.] , 85427 commits were made, making a daily average of 233 "
"commits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:324
msgid ""
"Within the \"code\" bracket in Jørgensen's model, each programmer has their "
"own working style and follows their own development models. The bracket "
"could very well have been called \"development\" as it includes requirements "
"gathering and analysis, system and detailed design, implementation and "
"verification. However, the only output from these stages is the source code "
"or system documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:330
msgid ""
"From a stepwise model's perspective (such as the waterfall model), the other "
"brackets can be seen as further verification and system integration. This "
"system integration is also important to see if a change is accepted by the "
"community. Up until the code is committed, the developer is free to choose "
"how much to communicate about it to the rest of the project. In order for -"
"CURRENT to work as a buffer (so that bright ideas that had some undiscovered "
"drawbacks can be backed out) the minimum time a commit should be in -CURRENT "
"before merging it to -STABLE is 3 days. Such a merge is referred to as an "
"MFC (Merge From Current)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:333
msgid ""
"It is important to notice the word \"change\". Most commits do not contain "
"radical new features, but are maintenance updates."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:336
msgid ""
"The only exceptions from this model are security fixes and changes to "
"features that are deprecated in the -CURRENT branch. In these cases, "
"changes can be committed directly to the -STABLE branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:341
msgid ""
"In addition to many people working on the project, there are many related "
"projects to the FreeBSD Project. These are either projects developing brand "
"new features, sub-projects or projects whose outcome is incorporated into "
"FreeBSD footnote:[For instance, the development of the Bluetooth stack "
"started as a sub-project until it was deemed stable enough to be merged into "
"the -CURRENT branch. Now it is a part of the core FreeBSD system.]. These "
"projects fit into the FreeBSD Project just like regular development efforts: "
"they produce code that is integrated with the FreeBSD Project. However, "
"some of them (like Ports and Documentation) have the privilege of being "
"applicable to both branches or commit directly to both -CURRENT and -STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:348
msgid ""
"There is no standards to how design should be done, nor is design collected "
"in a centralised repository. The main design is that of 4.4BSD. footnote:"
"[According to Kirk McKusick, after 20 years of developing UNIX operating "
"systems, the interfaces are for the most part figured out. There is "
"therefore no need for much design. However, new applications of the system "
"and new hardware leads to some implementations being more beneficial than "
"those that used to be preferred. One example is the introduction of web "
"browsing that made the normal TCP/IP connection a short burst of data rather "
"than a steady stream over a longer period of time.] As design is a part of "
"the \"Code\" bracket in Jørgenssen's model, it is up to every developer or "
"sub-project how this should be done. Even if the design should be stored in "
"a central repository, the output from the design stages would be of limited "
"use as the differences of methodologies would make them poorly if at all "
"interoperable. For the overall design of the project, the project relies on "
"the sub-projects to negotiate fit interfaces between each other rather than "
"to dictate interfacing."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:350
#, no-wrap
msgid "Release branches"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:354
msgid ""
"The releases of FreeBSD are best illustrated by a tree with many branches "
"where each major branch represents a major version. Minor versions are "
"represented by branches of the major branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:361
msgid ""
"In the following release tree, arrows that follow one-another in a "
"particular direction represent a branch. Boxes with full lines and diamonds "
"represent official releases. Boxes with dotted lines represent the "
"development branch at that time. Security branches are represented by "
"ovals. Diamonds differ from boxes in that they represent a fork, meaning a "
"place where a branch splits into two branches where one of the branches "
"becomes a sub-branch. For example, at 4.0-RELEASE the 4.0-CURRENT branch "
"split into 4-STABLE and 5.0-CURRENT. At 4.5-RELEASE, the branch forked off a "
"security branch called RELENG_4_5."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:362
#, no-wrap
msgid "The FreeBSD release tree"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/dev-model/_index.adoc:363
#, no-wrap
msgid "Refer to table below for a screen-reader friendly version."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:363
#, no-wrap
msgid "branches.png"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:369
#, no-wrap
msgid "Major release"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:370
#, no-wrap
msgid "Forked from"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:372
#, no-wrap
msgid "Following minor releases"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:373
#: documentation/content/en/books/dev-model/_index.adoc:393
#, no-wrap
msgid "..."
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:377
#, no-wrap
msgid "3.0 Current (development branch)"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:380
#, no-wrap
msgid "Releng 3 branches: 3.0 Release to 3.5 Release, leading to 3.5.1 Release and the subsequent 3 Stable branch"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:381
#, no-wrap
msgid "4.0 Current (development branch)"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:382
#, no-wrap
msgid "3.1 Release"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:384
#, no-wrap
msgid "Releng 4 branches: 4.1 Release to 4.6 Release (and 4.6.2 Release), then 4.7 Release to 4.11 Release (all starting at 4.3 Release also leading to a Releng_4_n branch), and the subsequent 4 Release branch"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:385
#, no-wrap
msgid "5.0 Current (development branch)"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:386
#, no-wrap
msgid "4.0 Release"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:388
#, no-wrap
msgid "Releng 5 branches: 5.0 Release to 5.4 Release (all except 5.0 and 5.3 also leading to a Releng_5_n branch), and the subsequent 5 Release branch"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:389
#, no-wrap
msgid "6.0 Current (development branch)"
msgstr ""
#. type: Table
#: documentation/content/en/books/dev-model/_index.adoc:390
#, no-wrap
msgid "5.3 Release"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:400
msgid ""
"The latest -CURRENT version is always referred to as -CURRENT, while the "
"latest -STABLE release is always referred to as -STABLE. In this figure, -"
"STABLE refers to 4-STABLE while -CURRENT refers to 5.0-CURRENT following 5.0-"
"RELEASE. [<<freebsd-releng, FreeBSD, 2002E>>]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:407
msgid ""
"A \"major release\" is always made from the -CURRENT branch. However, the -"
"CURRENT branch does not need to fork at that point in time, but can focus on "
"stabilising. An example of this is that following 3.0-RELEASE, 3.1-RELEASE "
"was also a continuation of the -CURRENT-branch, and -CURRENT did not become "
"a true development branch until this version was released and the 3-STABLE "
"branch was forked. When -CURRENT returns to becoming a development branch, "
"it can only be followed by a major release. 5-STABLE is predicted to be "
"forked off 5.0-CURRENT at around 5.3-RELEASE. It is not until 5-STABLE is "
"forked that the development branch will be branded 6.0-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:409
msgid ""
"A \"minor release\" is made from the -CURRENT branch following a major "
"release, or from the -STABLE branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:412
msgid ""
"Following and including, 4.3-RELEASEfootnote:[The first release this "
"actually happened for was 4.5-RELEASE, but security branches were at the "
"same time created for 4.3-RELEASE and 4.4-RELEASE.], when a minor release "
"has been made, it becomes a \"security branch\". This is meant for "
"organisations that do not want to follow the -STABLE branch and the "
"potential new/changed features it offers, but instead require an absolutely "
"stable environment, only updating to implement security updates. footnote:"
"[There is a terminology overlap with respect to the word \"stable\", which "
"leads to some confusion. The -STABLE branch is still a development branch, "
"whose goal is to be useful for most people. If it is never acceptable for a "
"system to get changes that are not announced at the time it is deployed, "
"that system should run a security branch.]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:417
msgid ""
"Each update to a security branch is called a \"patchlevel\". For every "
"security enhancement that is done, the patchlevel number is increased, "
"making it easy for people tracking the branch to see what security "
"enhancements they have implemented. In cases where there have been "
"especially serious security flaws, an entire new release can be made from a "
"security branch. An example of this is 4.6.2-RELEASE."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:419
#, no-wrap
msgid "Model summary"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:422
msgid ""
"To summarise, the development model of FreeBSD can be seen as the following "
"tree:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:423
#, no-wrap
msgid "The overall development model"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/dev-model/_index.adoc:424
#, no-wrap
msgid "Refer to paragraphs below for a screen-reader friendly version."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:424
#, no-wrap
msgid "freebsd-code-model.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:427
msgid ""
"The tree of the FreeBSD development with ongoing development efforts and "
"continuous integration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:431
msgid ""
"The tree symbolises the release versions with major versions spawning new "
"main branches and minor versions being versions of the main branch. The top "
"branch is the -CURRENT branch where all new development is integrated, and "
"the -STABLE branch is the branch directly below it. Below the -STABLE "
"branch are old, unsupported versions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:435
msgid ""
"Clouds of development efforts hang over the project where developers use the "
"development models they see fit. The product of their work is then "
"integrated into -CURRENT where it undergoes parallel debugging and is "
"finally merged from -CURRENT into -STABLE. Security fixes are merged from -"
"STABLE to the security branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:442
msgid ""
"Many committers have a special area of responsibility. These roles are "
"called hats. These hats can be either project roles, such as public "
"relations officer, or maintainer for a certain area of the code. Because "
"this is a project where people give voluntarily of their spare time, people "
"with assigned hats are not always available. They must therefore appoint a "
"deputy that can perform the hat's role in their absence. The other option "
"is to have the role held by a group."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:447
msgid ""
"Many of these hats are not formalised. Formalised hats have a charter "
"stating the exact purpose of the hat along with its privileges and "
"responsibilities. The writing of such charters is a new part of the "
"project, and has thus yet to be completed for all hats. These hat "
"descriptions are not such a formalisation, rather a summary of the role with "
"links to the charter where available and contact addresses."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:449
#, no-wrap
msgid "Hats"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:452
#, no-wrap
msgid "General Hats"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:455
#, no-wrap
msgid "Contributor"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:458
msgid ""
"A Contributor contributes to the FreeBSD project either as a developer, as "
"an author, by sending problem reports, or in other ways contributing to the "
"progress of the project. A contributor has no special privileges in the "
"FreeBSD project. [<<freebsd-contributors, FreeBSD, 2002F>>]"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:460
#, no-wrap
msgid "Committer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:465
msgid ""
"A person who has the required privileges to add their code or documentation "
"to the repository. A committer has made a commit within the past 12 "
"months. [<<freebsd-developer-handbook, FreeBSD, 2000A>>] An active "
"committer is a committer who has made an average of one commit per month "
"during that time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:468
msgid ""
"It is worth noting that there are no technical barriers to prevent someone, "
"once having gained commit privileges to the main- or a sub-project, to make "
"commits in parts of that project's source the committer did not specifically "
"get permission to modify. However, when wanting to make modifications to "
"parts a committer has not been involved in before, they should read the logs "
"to see what has happened in this area before, and also read the MAINTAINERS "
"file to see if the maintainer of this part has any special requests on how "
"changes in the code should be made."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:470
#, no-wrap
msgid "Core Team"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:476
msgid ""
"The core team is elected by the committers from the pool of committers and "
"serves as the board of directors of the FreeBSD project. It promotes active "
"contributors to committers, assigns people to well-defined hats, and is the "
"final arbiter of decisions involving which way the project should be "
"heading. As of July 1st, 2004, core consisted of 9 members. Elections are "
"held every two years."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:478
#, no-wrap
msgid "Maintainership"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:482
msgid ""
"Maintainership means that the person is responsible for what is allowed to "
"go into that area of the code and has the final say should disagreements "
"over the code occur. This involves proactive work aimed at stimulating "
"contributions and reactive work in reviewing commits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:485
msgid ""
"With the FreeBSD source comes the MAINTAINERS file that contains a one-line "
"summary of how each maintainer would like contributions to be made. Having "
"this notice and contact information enables developers to focus on the "
"development effort rather than being stuck in a slow correspondence should "
"the maintainer be unavailable for some time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:488
msgid ""
"If the maintainer is unavailable for an unreasonably long period of time, "
"and other people do a significant amount of work, maintainership may be "
"switched without the maintainer's approval. This is based on the stance "
"that maintainership should be demonstrated, not declared."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:490
msgid ""
"Maintainership of a particular piece of code is a hat that is not held as a "
"group."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:492
#, no-wrap
msgid "Official Hats"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:497
msgid ""
"The official hats in the FreeBSD Project are hats that are more or less "
"formalised and mainly administrative roles. They have the authority and "
"responsibility for their area. The following list shows the responsibility "
"lines and gives a description of each hat, including who it is held by."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:499
#, no-wrap
msgid "Documentation project manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:502
msgid ""
"<<sub-project-documentation>> architect is responsible for defining and "
"following up documentation goals for the committers in the Documentation "
"project, which they supervise."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:505
msgid ""
"Hat held by: The DocEng team mailto:doceng@FreeBSD.org[doceng@FreeBSD.org]. "
"The https://www.freebsd.org/internal/doceng/[ DocEng Charter]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:507
#, no-wrap
msgid "Postmaster"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:511
msgid ""
"The Postmaster is responsible for mail being correctly delivered to the "
"committers' email address. They are also responsible for ensuring that the "
"mailing lists work and should take measures against possible disruptions of "
"mail such as having troll-, spam- and virus-filters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:513
msgid ""
"Hat currently held by: the Postmaster Team mailto:postmaster@FreeBSD."
"org[postmaster@FreeBSD.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:515
#, no-wrap
msgid "Release Coordination"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:518
msgid "The responsibilities of the Release Engineering Team are"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:520
msgid ""
"Setting, publishing and following a release schedule for official releases"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:521
msgid "Documenting and formalising release engineering procedures"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:522
msgid "Creation and maintenance of code branches"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:523
msgid ""
"Coordinating with the Ports and Documentation teams to have an updated set "
"of packages and documentation released with the new releases"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:524
msgid ""
"Coordinating with the Security team so that pending releases are not "
"affected by recently disclosed vulnerabilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:526
msgid ""
"Further information about the development process is available in the "
"<<process-release-engineering>> section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:530
msgid ""
"Hat held by: the Release Engineering team mailto:re@FreeBSD.org[re@FreeBSD."
"org]. The https://www.freebsd.org/releng/charter/[ Release Engineering "
"Charter]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:532
#, no-wrap
msgid "Public Relations & Corporate Liaison"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:535
msgid "The Public Relations & Corporate Liaison's responsibilities are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:537
msgid ""
"Making press statements when happenings that are important to the FreeBSD "
"Project happen."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:538
msgid ""
"Being the official contact person for corporations that are working close "
"with the FreeBSD Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:539
msgid ""
"Take steps to promote FreeBSD within both the Open Source community and the "
"corporate world."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:540
msgid "Handle the \"freebsd-advocacy\" mailing list."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:542
msgid "This hat is currently not occupied."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:544
#, no-wrap
msgid "Security Officer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:548
msgid ""
"The Security Officer's main responsibility is to coordinate information "
"exchange with others in the security community and in the FreeBSD project. "
"The Security Officer is also responsible for taking action when security "
"problems are reported and promoting proactive development behavior when it "
"comes to security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:551
msgid ""
"Because of the fear that information about vulnerabilities may leak out to "
"people with malicious intent before a patch is available, only the Security "
"Officer, consisting of an officer, a deputy and two <<role-core>> members, "
"receive sensitive information about security issues. However, to create or "
"implement a patch, the Security Officer has the Security Officer Team mailto:"
"security-team@FreeBSD.org[security-team@FreeBSD.org] to help do the work."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:553
#, no-wrap
msgid "Source Repository Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:558
msgid ""
"The Source Repository Manager is the only one who is allowed to directly "
-"modify the repository without using the <<tool-svn>> tool. It is their "
+"modify the repository without using the <<tool-git>> tool. It is their "
"responsibility to ensure that technical problems that arise in the "
"repository are resolved quickly. The source repository manager has the "
-"authority to back out commits if this is necessary to resolve a SVN "
+"authority to back out commits if this is necessary to resolve a Git "
"technical problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:560
msgid ""
"Hat held by: the Source Repository Manager mailto:clusteradm@FreeBSD."
"org[clusteradm@FreeBSD.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:562
#, no-wrap
msgid "Election Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:567
msgid ""
"The Election Manager is responsible for the <<process-core-election>> "
"process. The manager is responsible for running and maintaining the "
"election system, and is the final authority should minor unforeseen events "
"happen in the election process. Major unforeseen events have to be "
"discussed with the <<role-core>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:569
msgid "Hat held only during elections."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:571
#, no-wrap
msgid "Web site Management"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:575
msgid ""
"The Web site Management hat is responsible for coordinating the rollout of "
"updated web pages on mirrors around the world, for the overall structure of "
"the primary web site and the system it is running upon. The management "
"needs to coordinate the content with <<sub-project-documentation>> and acts "
"as maintainer for the \"www\" tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:577
msgid ""
"Hat held by: the FreeBSD Webmasters mailto:www@FreeBSD.org[www@FreeBSD.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:579
#, no-wrap
msgid "Ports Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:582
msgid ""
"The Ports Manager acts as a liaison between <<sub-project-ports>> and the "
"core project, and all requests from the project should go to the ports "
"manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:585
msgid ""
"Hat held by: the Ports Management Team mailto:portmgr@FreeBSD."
"org[portmgr@FreeBSD.org]. The https://www.freebsd.org/portmgr/charter/"
"[Portmgr charter]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:587
#, no-wrap
msgid "Standards"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:590
msgid ""
"The Standards hat is responsible for ensuring that FreeBSD complies with the "
"standards it is committed to , keeping up to date on the development of "
"these standards and notifying FreeBSD developers of important changes that "
"allows them to take a proactive role and decrease the time between a "
"standards update and FreeBSD's compliancy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:592
msgid ""
"Hat currently held by: Garrett Wollman mailto:wollman@FreeBSD."
"org[wollman@FreeBSD.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:594
#, no-wrap
msgid "Core Secretary"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:598
msgid ""
"The Core Secretary's main responsibility is to write drafts to and publish "
"the final Core Reports. The secretary also keeps the core agenda, thus "
"ensuring that no balls are dropped unresolved."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:600
msgid "Hat currently held by: {carlavilla}."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:602
#, no-wrap
msgid "Bugmeister"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:606
msgid ""
"The Bugmeister is responsible for ensuring that the maintenance database is "
"in working order, that the entries are correctly categorised and that there "
"are no invalid entries. They supervise bugbusters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:608
msgid ""
"Hat currently held by: the Bugmeister Team mailto:bugmeister@FreeBSD."
"org[bugmeister@FreeBSD.org]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:610
#, no-wrap
msgid "Donations Liaison Officer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:613
msgid ""
"The task of the donations liaison officer is to match the developers with "
"needs with people or organisations willing to make a donation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:616
msgid ""
"Hat held by: the Donations Liaison Office mailto:donations@FreeBSD."
"org[donations@FreeBSD.org]. The https://www.freebsd.org/donations/"
"[ Donations Liaison Charter]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:618
#, no-wrap
msgid "Admin"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:621
msgid "(Also called \"FreeBSD Cluster Admin\")"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:624
msgid ""
"The admin team consists of the people responsible for administrating the "
"computers that the project relies on for its distributed work and "
"communication to be synchronised. It consists mainly of those people who "
"have physical access to the servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:626
msgid ""
"Hat held by: the Admin team mailto:admin@FreeBSD.org[admin@FreeBSD.org]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:628
#, no-wrap
msgid "Process dependent hats"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:631
#, no-wrap
msgid "Report originator"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:634
msgid "The person originally responsible for filing a Problem Report."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:636
#, no-wrap
msgid "Bugbuster"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:639
msgid ""
"A person who will either find the right person to solve the problem, or "
"close the PR if it is a duplicate or otherwise not an interesting one."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:641
#, no-wrap
msgid "Mentor"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:644
msgid ""
"A mentor is a committer who takes it upon them to introduce a new committer "
"to the project, both in terms of ensuring the new committer's setup is "
"valid, that the new committer knows the available tools required in their "
"work, and that the new committer knows what is expected of them in terms of "
"behavior."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:646
#, no-wrap
msgid "Vendor"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:649
msgid ""
"The person(s) or organisation whom external code comes from and whom patches "
"are sent to."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/dev-model/_index.adoc:651
#, no-wrap
msgid "Reviewers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:654
msgid "People on the mailing list where the request for review is posted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:657
msgid ""
"The following section will describe the defined project processes. Issues "
"that are not handled by these processes happen on an ad-hoc basis based on "
"what has been customary to do in similar cases."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:659
#, no-wrap
msgid "Processes"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:662
#, no-wrap
msgid "Adding new and removing old committers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:667
msgid ""
"The Core team has the responsibility of giving and removing commit "
"privileges to contributors. This can only be done through a vote on the "
"core mailing list. The ports and documentation sub-projects can give commit "
"privileges to people working on these projects, but have to date not removed "
"such privileges."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:670
msgid ""
"Normally a contributor is recommended to core by a committer. For "
"contributors or outsiders to contact core asking to be a committer is not "
"well thought of and is usually rejected."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:673
msgid ""
"If the area of particular interest for the developer potentially overlaps "
"with other committers' area of maintainership, the opinion of those "
"maintainers is sought. However, it is frequently this committer that "
"recommends the developer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:676
msgid ""
"When a contributor is given committer status, they are assigned a mentor. "
"The committer who recommended the new committer will, in the general case, "
"take it upon themselves to be the new committers mentor."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:680
msgid ""
"When a contributor is given their commit bit, a <<tool-pgp>>-signed email is "
"sent from either <<role-core-secretary>>, <<role-ports-manager>>, or "
"nik@freebsd.org to both admins@freebsd.org, the assigned mentor, the new "
"committer, and core confirming the approval of a new account. The mentor "
"then gathers a password line, <<tool-ssh2>> public key, and PGP key from the "
"new committer and sends them to <<role-admin>>. When the new account is "
"created, the mentor activates the commit bit and guides the new committer "
"through the rest of the initial process."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:681
#, no-wrap
msgid "Process summary: adding a new committer"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/dev-model/_index.adoc:682
#: documentation/content/en/books/dev-model/_index.adoc:697
#: documentation/content/en/books/dev-model/_index.adoc:740
#: documentation/content/en/books/dev-model/_index.adoc:791
#: documentation/content/en/books/dev-model/_index.adoc:913
#, no-wrap
msgid "Refer to paragraph below for a screen-reader friendly version."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:682
#, no-wrap
msgid "proc-add-committer.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:689
msgid ""
"When a contributor sends a piece of code, the receiving committer may choose "
"to recommend that the contributor is given commit privileges. If they "
"recommend this to core, core will vote on this recommendation. If the vote "
"is in favour, a mentor is assigned the new committer and the new committer "
"has to email their details to the administrators for an account to be "
"created. After this, the new committer is all set to make their first "
"commit. By tradition, this is by adding their name to the committers list."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:692
msgid ""
"Recall that a committer is considered to be someone who has committed code "
"during the past 12 months. However, it is not until after 18 months of "
"inactivity have passed that commit privileges are eligible to be revoked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:695
msgid ""
"There are, however, no automatic procedures for doing this. For reactions "
"concerning commit privileges not triggered by time, see <<process-reactions,"
"section 1.5.8>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:696
#, no-wrap
msgid "Process summary: removing a committer"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:697
#, no-wrap
msgid "proc-rm-committer.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:701
msgid ""
"When Core decides to clean up the committers list, they check who has not "
"made a commit for the past 18 months. Committers who have not done so have "
"their commit bits revoked and their account removed by the administrators."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:704
msgid ""
"It is also possible for committers to request that their commit bit be "
"retired if for some reason they are no longer going to be actively "
"committing to the project. In this case, it can also be restored at a later "
"time by core, should the committer ask."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:706
msgid "Roles in this process:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:708
#: documentation/content/en/books/dev-model/_index.adoc:800
#: documentation/content/en/books/dev-model/_index.adoc:954
msgid "<<role-core>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:709
#: documentation/content/en/books/dev-model/_index.adoc:759
msgid "<<role-contributor>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:710
#: documentation/content/en/books/dev-model/_index.adoc:758
#: documentation/content/en/books/dev-model/_index.adoc:801
#: documentation/content/en/books/dev-model/_index.adoc:955
msgid "<<role-committer>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:711
#: documentation/content/en/books/dev-model/_index.adoc:924
msgid "<<role-maintainer>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:712
msgid "<<role-mentor>>"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:716
#, no-wrap
msgid "Committing code"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:721
msgid ""
"The committing of new or modified code is one of the most frequent processes "
"in the FreeBSD project and will usually happen many times a day. Committing "
"of code can only be done by a \"committer\". Committers commit either code "
"written by themselves, code submitted to them, or code submitted through a "
"<<model-pr,problem report>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:727
msgid ""
"When code is written by the developer that is non-trivial, they should seek "
"a code review from the community. This is done by sending mail to the "
"relevant list asking for review. Before submitting the code for review, "
"they should ensure it compiles correctly with the entire tree and that all "
"relevant tests run. This is called \"pre-commit test\". When contributed "
"code is received, it should be reviewed by the committer and tested the same "
"way."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:730
msgid ""
"When a change is committed to a part of the source that has been contributed "
"from an outside <<role-vendor>>, the maintainer should ensure that the patch "
"is contributed back to the vendor. This is in line with the open source "
"philosophy and makes it easier to stay in sync with outside projects as the "
"patches do not have to be reapplied every time a new release is made."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:735
msgid ""
"After the code has been available for review and no further changes are "
"necessary, the code is committed into the development branch, -CURRENT. If "
"the change applies for the -STABLE branch or the other branches as well, a "
"\"Merge From Current\" (\"MFC\") countdown is set by the committer. After "
"the number of days the committer chose when setting the MFC have passed, an "
"email will automatically be sent to the committer reminding them to commit "
"it to the -STABLE branch (and possibly security branches as well). Only "
"security critical changes should be merged to security branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:738
msgid ""
"Delaying the commit to -STABLE and other branches allows for \"parallel "
"debugging\" where the committed code is tested on a wide range of "
"configurations. This makes changes to -STABLE to contain fewer faults and "
"thus giving the branch its name."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:739
#, no-wrap
msgid "Process summary: A committer commits code"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:740
#, no-wrap
msgid "proc-commit.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:748
msgid ""
"When a committer has written a piece of code and wants to commit it, they "
"first need to determine if it is trivial enough to go in without prior "
"review or if it should first be reviewed by the developer community. If the "
"code is trivial or has been reviewed and the committer is not the "
"maintainer, they should consult the maintainer before proceeding. If the "
"code is contributed by an outside vendor, the maintainer should create a "
"patch that is sent back to the vendor. The code is then committed and then "
"deployed by the users. Should they find problems with the code, this will "
"be reported and the committer can go back to writing a patch. If a vendor "
"is affected, they can choose to implement or ignore the patch."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:749
#, no-wrap
msgid "Process summary: A contributor commits code"
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/dev-model/_index.adoc:750
#, no-wrap
msgid "Refer to paragraphs below and above for a screen-reader friendly version."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:750
#, no-wrap
msgid "proc-contrib.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:754
msgid ""
"The difference when a contributor makes a code contribution is that they "
"submit the code through the Bugzilla interface. This report is picked up by "
"the maintainer who reviews the code and commits it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:756
msgid "Hats included in this process are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:760
msgid "<<role-vendor>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:761
msgid "<<role-reviewer>>"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:765
#, no-wrap
msgid "Core election"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:770
msgid ""
"Core elections are held at least every two years. footnote:[The first Core "
"election was held September 2000] Nine core members are elected. New "
"elections are held if the number of core members drops below seven. New "
"elections can also be held should at least 1/3 of the active committers "
"demand this."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:772
msgid ""
"When an election is to take place, core announces this at least 6 weeks in "
"advance, and appoints an election manager to run the elections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:777
msgid ""
"Only committers can be elected into core. The candidates need to submit "
"their candidacy at least one week before the election starts, but can refine "
"their statements until the voting starts. They are presented in the http://"
"election.uk.freebsd.org/candidates.html[candidates list]. When writing "
"their election statements, the candidates must answer a few standard "
"questions submitted by the election manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:780
msgid ""
"During elections, the rule that a committer must have committed during the "
"12 past months is followed strictly. Only these committers are eligible to "
"vote."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:783
msgid ""
"When voting, the committer may vote once in support of up to nine nominees. "
"The voting is done over a period of four weeks with reminders being posted "
"on \"developers\" mailing list that is available to all committers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:785
msgid ""
"The election results are released one week after the election ends, and the "
"new core team takes office one week after the results have been posted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:787
msgid ""
"Should there be a voting tie, this will be resolved by the new, "
"unambiguously elected core members."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:789
msgid ""
"Votes and candidate statements are archived, but the archives are not "
"publicly available."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:790
#, no-wrap
msgid "Process summary: Core elections"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:791
#, no-wrap
msgid "proc-elections.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:796
msgid ""
"Core announces the election and selects an election manager who prepares the "
"elections, and when ready, candidates can announce their candidacies through "
"submitting their statements. The committers then vote. After the vote is "
"over, the election results are announced and the new core team takes office."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:798
msgid "Hats in core elections are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:802
msgid "<<role-election-manager>>"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:806
#, no-wrap
msgid "Development of new features"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:813
msgid ""
"Within the project there are sub-projects that are working on new features. "
"These projects are generally done by one person [<<jorgensen2001, Jørgensen, "
"2001>>]. Every project is free to organise development as it sees fit. "
"However, when the project is merged to the -CURRENT branch it must follow "
"the project guidelines. When the code has been well tested in the -CURRENT "
"branch and deemed stable enough and relevant to the -STABLE branch, it is "
"merged to the -STABLE branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:819
msgid ""
"The requirements of the project are given by developer wishes, requests from "
"the community in terms of direct requests by mail, Problem Reports, "
"commercial funding for the development of features, or contributions by the "
"scientific community. The wishes that come within the responsibility of a "
"developer are given to that developer who prioritises their time between the "
"request and their wishes. A common way to do this is maintain a TODO-list "
"maintained by the project. Items that do not come within someone's "
"responsibility are collected on TODO-lists unless someone volunteers to take "
"the responsibility. All requests, their distribution and follow-up are "
"handled by the <<tool-bugzilla>> tool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:824
msgid ""
"Requirements analysis happens in two ways. The requests that come in are "
"discussed on mailing lists, both within the main project and in the sub-"
"project that the request belongs to or is spawned by the request. "
"Furthermore, individual developers on the sub-project will evaluate the "
"feasibility of the requests and determine the prioritisation between them. "
"Other than archives of the discussions that have taken place, no outcome is "
"created by this phase that is merged into the main project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:827
msgid ""
"As the requests are prioritised by the individual developers on the basis of "
"doing what they find interesting, necessary, or are funded to do, there is "
"no overall strategy or prioritisation of what requests to regard as "
"requirements and following up their correct implementation. However, most "
"developers have some shared vision of what issues are more important, and "
"they can ask for guidelines from the release engineering team."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:834
msgid ""
"The verification phase of the project is two-fold. Before committing code "
"to the current-branch, developers request their code to be reviewed by their "
"peers. This review is for the most part done by functional testing, but "
"also code review is important. When the code is committed to the branch, a "
"broader functional testing will happen, that may trigger further code review "
"and debugging should the code not behave as expected. This second "
"verification form may be regarded as structural verification. Although the "
"sub-projects themselves may write formal tests such as unit tests, these are "
"usually not collected by the main project and are usually removed before the "
"code is committed to the current branch. footnote:[More and more tests are "
"however performed when building the system (make world). These tests are "
"however a very new addition and no systematic framework for these tests have "
"yet been created.]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:836
#, no-wrap
msgid "Maintenance"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:843
msgid ""
"It is an advantage to the project to for each area of the source have at "
"least one person that knows this area well. Some parts of the code have "
"designated maintainers. Others have de-facto maintainers, and some parts of "
"the system do not have maintainers. The maintainer is usually a person from "
"the sub-project that wrote and integrated the code, or someone who has "
"ported it from the platform it was written for. footnote:[sendmail and "
"named are examples of code that has been merged from other platforms.] The "
"maintainer's job is to make sure the code is in sync with the project the "
"code comes from if it is contributed code, and apply patches submitted by "
"the community or write fixes to issues that are discovered."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:846
msgid ""
"The main bulk of work that is put into the FreeBSD project is maintenance. "
"[<<jorgensen2001, Jørgensen, 2001>>] has made a figure showing the life "
"cycle of changes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:884
msgid ""
"Here \"development release\" refers to the -CURRENT branch while "
-"\"production release\" refers to the -STABLE branch. The \"pre-commit test"
-"\" is the functional testing by peer developers when asked to do so or "
+"\"production release\" refers to the -STABLE branch. The \"pre-commit "
+"test\" is the functional testing by peer developers when asked to do so or "
"trying out the code to determine the status of the sub-project. \"Parallel "
"debugging\" is the functional testing that can trigger more review, and "
"debugging when the code is included in the -CURRENT branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:891
msgid ""
"As of this writing, there were 269 committers in the project. When they "
"commit a change to a branch, that constitutes a new release. It is very "
"common for users in the community to track a particular branch. The "
"immediate existence of a new release makes the changes widely available "
"right away and allows for rapid feedback from the community. This also "
"gives the community the response time they expect on issues that are of "
"importance to them. This makes the community more engaged, and thus allows "
"for more and better feedback that again spurs more maintenance and "
"ultimately should create a better product."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:893
msgid ""
"Before making changes to code in parts of the tree that has a history "
"unknown to the committer, the committer is required to read the commit logs "
"to see why certain features are implemented the way they are in order not to "
"make mistakes that have previously either been thought through or resolved."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:895
#, no-wrap
msgid "Problem reporting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:900
msgid ""
"Before FreeBSD 10, FreeBSD included a problem reporting tool called `send-"
"pr`. Problems include bug reports, feature requests, feature enhancements "
"and notices of new versions of external software that are included in the "
"project. Although `send-pr` is available, users and developers are "
"encouraged to submit issues using our https://bugs.freebsd.org/submit/"
"[ problem report form]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:911
msgid ""
"Problem reports are sent to an email address where it is inserted into the "
"Problem Reports maintenance database. A <<role-bugbuster>> classifies the "
"problem and sends it to the correct group or maintainer within the project. "
"After someone has taken responsibility for the report, the report is being "
"analysed. This analysis includes verifying the problem and thinking out a "
"solution for the problem. Often feedback is required from the report "
"originator or even from the FreeBSD community. Once a patch for the problem "
"is made, the originator may be asked to try it out. Finally, the working "
"patch is integrated into the project, and documented if applicable. It "
"there goes through the regular maintenance cycle as described in section "
"<<model-maintenance>>. These are the states a problem report can be in: "
"open, analyzed, feedback, patched, suspended and closed. The suspended "
"state is for when further progress is not possible due to the lack of "
"information or for when the task would require so much work that nobody is "
"working on it at the moment."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:912
#, no-wrap
msgid "Process summary: problem reporting"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/dev-model/_index.adoc:913
#, no-wrap
msgid "proc-pr.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:919
msgid ""
"A problem is reported by the report originator. It is then classified by a "
"bugbuster and handed to the correct maintainer. They verify the problem and "
"discuss the problem with the originator until they have enough information "
"to create a working patch. This patch is then committed and the problem "
"report is closed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:921
msgid "The roles included in this process are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:923
msgid "<<role-problem-originator>>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:925
msgid "<<role-bugbuster>>"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:929
#, no-wrap
msgid "Reacting to misbehavior"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:935
msgid ""
"[<<freebsd-committer, FreeBSD, 2001>>] has a number of rules that committers "
"should follow. However, it happens that these rules are broken. The "
"following rules exist in order to be able to react to misbehavior. They "
"specify what actions will result in how long a suspension of the committer's "
"commit privileges."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:937
msgid ""
"Committing during code freezes without the approval of the Release "
"Engineering team - 2 days"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:938
msgid "Committing to a security branch without approval - 2 days"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:939
msgid "Commit wars - 5 days to all participating parties"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:940
msgid "Impolite or inappropriate behavior - 5 days"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:947
msgid ""
"For the suspensions to be efficient, any single core member can implement a "
"suspension before discussing it on the \"core\" mailing list. Repeat "
"offenders can, with a 2/3 vote by core, receive harsher penalties, including "
"permanent removal of commit privileges. (However, the latter is always "
"viewed as a last resort, due to its inherent tendency to create "
"controversy.) All suspensions are posted to the \"developers\" mailing "
"list, a list available to committers only."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:950
msgid ""
"It is important that you cannot be suspended for making technical errors. "
"All penalties come from breaking social etiquette."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:952
msgid "Hats involved in this process:"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:957
#, no-wrap
msgid "Release engineering"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:963
msgid ""
"The FreeBSD project has a Release Engineering team with a principal release "
"engineer that is responsible for creating releases of FreeBSD that can be "
"brought out to the user community via the net or sold in retail outlets. "
"Since FreeBSD is available on multiple platforms and releases for the "
"different architectures are made available at the same time, the team has "
"one person in charge of each architecture. Also, there are roles in the "
"team responsible for coordinating quality assurance efforts, building a "
"package set and for having an updated set of documents. When referring to "
"the release engineer, a representative for the release engineering team is "
"meant."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:970
msgid ""
"When a release is coming, the FreeBSD project changes shape somewhat. A "
"release schedule is made containing feature- and code-freezes, release of "
"interim releases and the final release. A feature-freeze means no new "
"features are allowed to be committed to the branch without the release "
"engineers' explicit consent. Code-freeze means no changes to the code (like "
"bugs-fixes) are allowed to be committed without the release engineers' "
"explicit consent. This feature- and code-freeze is known as stabilising. "
"During the release process, the release engineer has the full authority to "
"revert to older versions of code and thus \"back out\" changes should they "
"find that the changes are not suitable to be included in the release."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:972
msgid "There are three different kinds of releases:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:974
msgid ""
".0 releases are the first release of a major version. These are branched of "
"the -CURRENT branch and have a significantly longer release engineering "
"cycle due to the unstable nature of the -CURRENT branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:975
msgid ""
".X releases are releases of the -STABLE branch. They are scheduled to come "
"out every 4 months."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:976
msgid ""
".X.Y releases are security releases that follow the .X branch. These come "
"out only when sufficient security fixes have been merged since the last "
"release on that branch. New features are rarely included, and the security "
"team is far more involved in these than in regular releases."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:985
msgid ""
"For releases of the -STABLE-branch, the release process starts 45 days "
"before the anticipated release date. During the first phase, the first 15 "
"days, the developers merge what changes they have had in -CURRENT that they "
"want to have in the release to the release branch. When this period is "
"over, the code enters a 15 day code freeze in which only bug fixes, "
"documentation updates, security-related fixes and minor device driver "
"changes are allowed. These changes must be approved by the release engineer "
"in advance. At the beginning of the last 15 day period a release candidate "
"is created for widespread testing. Updates are less likely to be allowed "
"during this period, except for important bug fixes and security updates. In "
"this final period, all releases are considered release candidates. At the "
"end of the release process, a release is created with the new version "
"number, including binary distributions on web sites and the creation of CD-"
"ROM images. However, the release is not considered \"really released\" "
"until a <<tool-pgp>>-signed message stating exactly that, is sent to the "
"mailing list freebsd-announce; anything labelled as a \"release\" before "
"that may well be in-process and subject to change before the PGP-signed "
"message is sent. footnote:[Many commercial vendors use these images to "
"create CD-ROMs that are sold in retail outlets.]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:994
msgid ""
"The releases of the -CURRENT-branch (that is, all releases that end with "
"\".0\") are very similar, but with twice as long timeframe. It starts 8 "
"weeks prior to the release with announcement of the release time line. Two "
"weeks into the release process, the feature freeze is initiated and "
"performance tweaks should be kept to a minimum. Four weeks prior to the "
"release, an official beta version is made available. Two weeks prior to "
"release, the code is officially branched into a new version. This version "
"is given release candidate status, and as with the release engineering of -"
"STABLE, the code freeze of the release candidate is hardened. However, "
"development on the main development branch can continue. Other than these "
"differences, the release engineering processes are alike."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:996
#, no-wrap
msgid "*.0 releases go into their own branch and are aimed mainly at early adopters. The branch then goes through a period of stabilisation, and it is not until the <<role-releng, Release Engineering Team>> decides the demands to stability have been satisfied that the branch becomes -STABLE and -CURRENT targets the next major version. While this for the majority has been with *.1 versions, this is not a demand.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1001
msgid ""
"Most releases are made when a given date that has been deemed a long enough "
"time since the previous release comes. A target is set for having major "
"releases every 18 months and minor releases every 4 months. The user "
"community has made it very clear that security and stability cannot be "
"sacrificed by self-imposed deadlines and target release dates. For slips of "
"time not to become too long with regards to security and stability issues, "
"extra discipline is required when committing changes to -STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1003
msgid "Make release schedule"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1004
msgid "Feature freeze"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1005
msgid "Code freeze"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1006
msgid "Make branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1007
msgid "Release candidate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1008
msgid ""
"Stabilize release (loop back to previous step as many times as necessary; "
"when release is considered stable, proceed with next step)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1009
msgid "Build packages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1010
msgid "Warn mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1011
msgid "Publish release"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:1015
#, no-wrap
msgid "Tools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1019
msgid ""
"The major support tools for supporting the development process are Bugzilla, "
"Mailman, and OpenSSH. These are externally developed tools and are commonly "
"used in the open source world."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1021
#, no-wrap
-msgid "Subversion (SVN)"
+msgid "Git"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1025
msgid ""
-"Subversion (\"SVN\") is a system to handle multiple versions of text files "
-"and tracking who committed what changes and why. A project lives within a "
-"\"repository\" and different versions are considered different \"branches\"."
+"Git is a system to handle multiple versions of text files and tracking who "
+"committed what changes and why. A project lives within a \"repository\" and "
+"different versions are considered different \"branches\"."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1027
#, no-wrap
msgid "Bugzilla"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1033
msgid ""
"Bugzilla is a maintenance database consisting of a set of tools to track "
"bugs at a central site. It supports the bug tracking process for sending "
"and handling bugs as well as querying and updating the database and editing "
"bug reports. The project uses its web interface to send \"Problem Reports\" "
"to the project's central Bugzilla server. The committers also have web and "
"command-line clients."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1035
#, no-wrap
msgid "Mailman"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1042
msgid ""
"Mailman is a program that automates the management of mailing lists. The "
"FreeBSD Project uses it to run 16 general lists, 60 technical lists, 4 "
-"limited lists and 5 lists with SVN commit logs. It is also used for many "
+"limited lists and 5 lists with Git commit logs. It is also used for many "
"mailing lists set up and used by other people and projects in the FreeBSD "
"community. General lists are lists for the general public, technical lists "
"are mainly for the development of specific areas of interest, and closed "
"lists are for internal communication not intended for the general public. "
"The majority of all the communication in the project goes through these 85 "
"lists [<<ref-bsd-handbook, FreeBSD, 2003A>>, Appendix C]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1044
#, no-wrap
msgid "Pretty Good Privacy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1049
msgid ""
"Pretty Good Privacy, better known as PGP, is a cryptosystem using a public "
"key architecture to allow people to digitally sign and/or encrypt "
"information in order to ensure secure communication between two parties. A "
"signature is used when sending information out to many recipients, enabling "
"them to verify that the information has not been tampered with before they "
"received it. In the FreeBSD Project this is the primary means of ensuring "
"that information has been written by the person who claims to have written "
"it, and not altered in transit."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1051
#, no-wrap
msgid "Secure Shell"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1058
msgid ""
"Secure Shell is a standard for securely logging into a remote system and for "
"executing commands on the remote system. It allows other connections, "
"called tunnels, to be established and protected between the two involved "
"systems. This standard exists in two primary versions, and only version two "
"is used for the FreeBSD Project. The most common implementation of the "
"standard is OpenSSH that is a part of the project's main distribution. "
"Since its source is updated more often than FreeBSD releases, the latest "
"version is also available in the ports tree."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:1060
#, no-wrap
msgid "Sub-projects"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1063
msgid ""
"Sub-projects are formed to reduce the amount of communication needed to "
"coordinate the group of developers. When a problem area is sufficiently "
"isolated, most communication would be within the group focusing on the "
"problem, requiring less communication with the groups they communicate with "
"than were the group not isolated."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1065
#, no-wrap
msgid "The Ports Subproject"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1069
msgid ""
"A \"port\" is a set of meta-data and patches that are needed to fetch, "
"compile and install correctly an external piece of software on a FreeBSD "
"system. The amount of ports has grown at a tremendous rate, as shown by the "
"following figure."
msgstr ""
#. type: Block title
#: documentation/content/en/books/dev-model/_index.adoc:1070
#, no-wrap
msgid "Number of ports added between 1995 and 2022 [[fig-ports]]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1072
msgid "image::portsstatus.svg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1075
msgid ""
"<<fig-ports>> shows the number of ports available to FreeBSD in the period "
"1995 to 2022. It looks like the curve has first grown exponentially, and "
"then from the middle of 2001 to the middle of 2007 grown linearly at a rate "
"of about 2000 ports/year, before its growth rate gets lower."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1078
msgid ""
"As the external software described by the port often is under continued "
"development, the amount of work required to maintain the ports is already "
"large, and increasing. This has led to the ports part of the FreeBSD "
"project gaining a more empowered structure, and is more and more becoming a "
"sub-project of the FreeBSD project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1081
msgid ""
"Ports has its own core team with the <<role-ports-manager>> as its leader, "
"and this team can appoint committers without FreeBSD Core's approval. "
"Unlike in the FreeBSD Project, where a lot of maintenance frequently is "
"rewarded with a commit bit, the ports sub-project contains many active "
"maintainers that are not committers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1085
msgid ""
"Unlike the main project, the ports tree is not branched. Every release of "
"FreeBSD follows the current ports collection and has thus available updated "
"information on where to find programs and how to build them. This, however, "
"means that a port that makes dependencies on the system may need to have "
"variations depending on what version of FreeBSD it runs on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1088
msgid ""
"With an unbranched ports repository it is not possible to guarantee that any "
"port will run on anything other than -CURRENT and -STABLE, in particular "
"older, minor releases. There is neither the infrastructure nor volunteer "
"time needed to guarantee this."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1090
msgid ""
"For efficiency of communication, teams depending on Ports, such as the "
"release engineering team, have their own ports liaisons."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/dev-model/_index.adoc:1092
#, no-wrap
msgid "The FreeBSD Documentation Project"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1097
msgid ""
"The FreeBSD Documentation project was started January 1995. From the "
"initial group of a project leader, four team leaders and 16 members, they "
"are now a total of 44 committers. The documentation mailing list has just "
"under 300 members, indicating that there is quite a large community around "
"it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1099
msgid ""
"The goal of the Documentation project is to provide good and useful "
"documentation of the FreeBSD project, thus making it easier for new users to "
"get familiar with the system and detailing advanced features for the users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1101
msgid ""
"The main tasks in the Documentation project are to work on current projects "
"in the \"FreeBSD Documentation Set\", and translate the documentation to "
"other languages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1105
msgid ""
"Like the FreeBSD Project, documentation is split in the same branches. This "
"is done so that there is always an updated version of the documentation for "
"each version. Only documentation errors are corrected in the security "
"branches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1107
msgid ""
"Like the ports sub-project, the Documentation project can appoint "
"documentation committers without FreeBSD Core's approval. [<<freebsd-doceng-"
"charter, FreeBSD, 2003B>>]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1110
msgid ""
"The Documentation project has extref:{fdp-primer}[a primer]. This is used "
"both to introduce new project members to the standard tools and syntaxes and "
"to act as a reference when working on the project."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/dev-model/_index.adoc:1115
#, no-wrap
msgid "References"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1119
msgid ""
"[Brooks, 1995] Frederick P. Brooks. Copyright © 1975, 1995 Pearson Education "
"Limited. 0201835959. Addison-Wesley Pub Co. The Mythical Man-Month. Essays "
"on Software Engineering, Anniversary Edition (2nd Edition)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1122
msgid ""
"[Saers, 2003] Niklas Saers. Copyright © 2003. A project model for the "
"FreeBSD Project. Candidatus Scientiarum thesis. http://niklas.saers.com/"
"thesis."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1125
msgid ""
"[Jørgensen, 2001] Niels Jørgensen. Copyright © 2001. Putting it All in the "
"Trunk. Incremental Software Development in the FreeBSD Open Source Project. "
"http://www.dat.ruc.dk/~nielsj/research/papers/freebsd.pdf."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1128
msgid ""
"[PMI, 2000] Project Management Institute. Copyright © 1996, 2000 Project "
"Management Institute. 1-880410-23-0. Project Management Institute. Newtown "
"Square Pennsylvania USA . PMBOK Guide. A Guide to the Project Management "
"Body of Knowledge, 2000 Edition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1131
msgid ""
"[FreeBSD, 2000A] Copyright © 2002 The FreeBSD Project. Core Bylaws. https://"
"www.freebsd.org/internal/bylaws/."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1134
msgid ""
"[FreeBSD, 2002A] Copyright © 2002 The FreeBSD Documentation Project. FreeBSD "
"Developer's Handbook. extref:{developers-handbook}[Developers Handbook]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1137
msgid ""
"[FreeBSD, 2002B] Copyright © 2002 The FreeBSD Project. Core team election "
"2002. http://election.uk.freebsd.org/candidates.html."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1140
msgid ""
"[FreeBSD, 2002C] Dag-Erling Smørgrav and Hiten Pandya. Copyright © 2002 The "
"FreeBSD Documentation Project. The FreeBSD Documentation Project. Problem "
"Report Handling Guidelines. extref:{pr-guidelines}[Problem Report Handling "
"Guidelines]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1143
msgid ""
"[FreeBSD, 2002D] Dag-Erling Smørgrav. Copyright © 2002 The FreeBSD "
"Documentation Project. The FreeBSD Documentation Project. Writing FreeBSD "
"Problem Reports. extref:{problem-reports}[Writing FreeBSD Problem Reports]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1146
msgid ""
"[FreeBSD, 2001] Copyright © 2001 The FreeBSD Documentation Project. The "
"FreeBSD Documentation Project. Committers Guide. extref:{committers-guide}"
"[Committer's Guide]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1149
msgid ""
"[FreeBSD, 2002E] Murray Stokely. Copyright © 2002 The FreeBSD Documentation "
"Project. The FreeBSD Documentation Project. FreeBSD Release Engineering. "
"extref:{releng}[FreeBSD Release Engineering]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1152
msgid ""
"[FreeBSD, 2003A] The FreeBSD Documentation Project. FreeBSD Handbook. extref:"
"{handbook}[FreeBSD Handbook]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1155
msgid ""
"[FreeBSD, 2002F] Copyright © 2002 The FreeBSD Documentation Project. The "
"FreeBSD Documentation Project. Contributors to FreeBSD. extref:{contributors}"
"[Contributors to FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1158
msgid ""
"[FreeBSD, 2002G] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. "
"Core team elections 2002. http://election.uk.freebsd.org."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1161
msgid ""
"[FreeBSD, 2002H] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. "
"Commit Bit Expiration Policy. 2002/04/06 15:35:30. https://www.freebsd.org/"
"internal/expire-bits/."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1164
msgid ""
"[FreeBSD, 2002I] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. "
"New Account Creation Procedure. 2002/08/19 17:11:27. https://www.freebsd.org/"
"internal/new-account/."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1167
msgid ""
"[FreeBSD, 2003B] Copyright © 2002 The FreeBSD Documentation Project. The "
"FreeBSD Documentation Project. FreeBSD DocEng Team Charter. 2003/03/16 "
"12:17. https://www.freebsd.org/internal/doceng/."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/dev-model/_index.adoc:1169
msgid ""
"[Lehey, 2002] Greg Lehey. Copyright © 2002 Greg Lehey. Greg Lehey. Two years "
"in the trenches. The evolution of a software project. http://www.lemis.com/"
"grog/In-the-trenches.pdf."
msgstr ""
diff --git a/documentation/content/en/books/developers-handbook/tools/_index.po b/documentation/content/en/books/developers-handbook/tools/_index.po
index 34236042f9..82cafbde0f 100644
--- a/documentation/content/en/books/developers-handbook/tools/_index.po
+++ b/documentation/content/en/books/developers-handbook/tools/_index.po
@@ -1,3377 +1,3377 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:23-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Title =
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:16
#, no-wrap
msgid "Programming Tools"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1
#, no-wrap
msgid "Chapter 2. Programming Tools"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:56
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:63
msgid ""
"This chapter is an introduction to using some of the programming tools "
"supplied with FreeBSD, although much of it will be applicable to many other "
"versions of UNIX(R). It does _not_ attempt to describe coding in any "
"detail. Most of the chapter assumes little or no previous programming "
"knowledge, although it is hoped that most programmers will find something of "
"value in it."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:65
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:72
msgid ""
"FreeBSD offers an excellent development environment. Compilers for C and C+"
"+ and an assembler come with the basic system, not to mention classic "
"UNIX(R) tools such as `sed` and `awk`. If that is not enough, there are "
"many more compilers and interpreters in the Ports collection. The following "
"section, <<tools-programming,Introduction to Programming>>, lists some of "
"the available options. FreeBSD is very compatible with standards such as "
"POSIX(R) and ANSI C, as well with its own BSD heritage, so it is possible to "
"write applications that will compile and run with little or no modification "
"on a wide range of platforms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:76
msgid ""
"However, all this power can be rather overwhelming at first if you have "
"never written programs on a UNIX(R) platform before. This document aims to "
"help you get up and running, without getting too deeply into more advanced "
"topics. The intention is that this document should give you enough of the "
"basics to be able to make some sense of the documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:78
msgid ""
"Most of the document requires little or no knowledge of programming, "
"although it does assume a basic competence with using UNIX(R) and a "
"willingness to learn!"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:80
#, no-wrap
msgid "Introduction to Programming"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:86
msgid ""
"A program is a set of instructions that tell the computer to do various "
"things; sometimes the instruction it has to perform depends on what happened "
"when it performed a previous instruction. This section gives an overview of "
"the two main ways in which you can give these instructions, or \"commands\" "
"as they are usually called. One way uses an _interpreter_, the other a "
"_compiler_. As human languages are too difficult for a computer to "
"understand in an unambiguous way, commands are usually written in one or "
"other languages specially designed for the purpose."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:87
#, no-wrap
msgid "Interpreters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:92
msgid ""
"With an interpreter, the language comes as an environment, where you type in "
"commands at a prompt and the environment executes them for you. For more "
"complicated programs, you can type the commands into a file and get the "
"interpreter to load the file and execute the commands in it. If anything "
"goes wrong, many interpreters will drop you into a debugger to help you "
"track down the problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:97
msgid ""
"The advantage of this is that you can see the results of your commands "
"immediately, and mistakes can be corrected readily. The biggest "
"disadvantage comes when you want to share your programs with someone. They "
"must have the same interpreter, or you must have some way of giving it to "
"them, and they need to understand how to use it. Also users may not "
"appreciate being thrown into a debugger if they press the wrong key! From a "
"performance point of view, interpreters can use up a lot of memory, and "
"generally do not generate code as efficiently as compilers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:102
msgid ""
"In my opinion, interpreted languages are the best way to start if you have "
"not done any programming before. This kind of environment is typically "
"found with languages like Lisp, Smalltalk, Perl and Basic. It could also be "
"argued that the UNIX(R) shell (`sh`, `csh`) is itself an interpreter, and "
"many people do in fact write shell \"scripts\" to help with various "
"\"housekeeping\" tasks on their machine. Indeed, part of the original "
"UNIX(R) philosophy was to provide lots of small utility programs that could "
"be linked together in shell scripts to perform useful tasks."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:103
#, no-wrap
msgid "Interpreters Available with FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:106
msgid ""
"Here is a list of interpreters that are available from the FreeBSD Ports "
"Collection, with a brief discussion of some of the more popular interpreted "
"languages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:108
msgid ""
"Instructions on how to get and install applications from the Ports "
"Collection can be found in the extref:{handbook}[Ports section, ports-using] "
"of the handbook."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:109
#, no-wrap
msgid "BASIC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:113
msgid ""
"Short for Beginner's All-purpose Symbolic Instruction Code. Developed in "
"the 1950s for teaching University students to program and provided with "
"every self-respecting personal computer in the 1980s, BASIC has been the "
"first programming language for many programmers. It is also the foundation "
"for Visual Basic."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:115
msgid ""
"The Bywater Basic Interpreter can be found in the Ports Collection as "
"package:lang/bwbasic[] and the Phil Cockroft's Basic Interpreter (formerly "
"Rabbit Basic) is available as package:lang/pbasic[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:116
#, no-wrap
msgid "Lisp"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:120
msgid ""
"A language that was developed in the late 1950s as an alternative to the "
"\"number-crunching\" languages that were popular at the time. Instead of "
"being based on numbers, Lisp is based on lists; in fact, the name is short "
"for \"List Processing\". It is very popular in AI (Artificial Intelligence) "
"circles."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:122
msgid ""
"Lisp is an extremely powerful and sophisticated language, but can be rather "
"large and unwieldy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:127
msgid ""
"Various implementations of Lisp that can run on UNIX(R) systems are "
"available in the Ports Collection for FreeBSD. GNU Common Lisp can be found "
"as package:lang/gcl[]. CLISP by Bruno Haible and Michael Stoll is available "
"as package:lang/clisp[]. For CMUCL, which includes a highly-optimizing "
"compiler too, or simpler Lisp implementations like SLisp, which implements "
"most of the Common Lisp constructs in a few hundred lines of C code, package:"
"lang/cmucl[] and package:lang/slisp[] are available respectively."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:128
#, no-wrap
msgid "Perl"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:130
msgid ""
"Very popular with system administrators for writing scripts; also often used "
"on World Wide Web servers for writing CGI scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:132
msgid ""
"Perl is available in the Ports Collection as package:lang/perl5.24[] for all "
"FreeBSD releases."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:133
#, no-wrap
msgid "Scheme"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:137
msgid ""
"A dialect of Lisp that is rather more compact and cleaner than Common Lisp. "
"Popular in Universities as it is simple enough to teach to undergraduates as "
"a first language, while it has a high enough level of abstraction to be used "
"in research work."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:140
msgid ""
"Scheme is available from the Ports Collection as package:lang/elk[] for the "
"Elk Scheme Interpreter. The MIT Scheme Interpreter can be found in package:"
"lang/mit-scheme[] and the SCM Scheme Interpreter in package:lang/scm[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:141
#, no-wrap
msgid "Icon"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:144
msgid ""
"Icon is a high-level language with extensive facilities for processing "
"strings and structures. The version of Icon for FreeBSD can be found in the "
"Ports Collection as package:lang/icon[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:145
#, no-wrap
msgid "Logo"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:148
msgid ""
"Logo is a language that is easy to learn, and has been used as an "
"introductory programming language in various courses. It is an excellent "
"tool to work with when teaching programming to smaller age groups, as it "
"makes creation of elaborate geometric shapes an easy task."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:150
msgid ""
"The latest version of Logo for FreeBSD is available from the Ports "
"Collection in package:lang/logo[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:151
#, no-wrap
msgid "Python"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:154
msgid ""
"Python is an Object-Oriented, interpreted language. Its advocates argue "
"that it is one of the best languages to start programming with, since it is "
"relatively easy to start with, but is not limited in comparison to other "
"popular interpreted languages that are used for the development of large, "
"complex applications (Perl and Tcl are two other languages that are popular "
"for such tasks)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:156
msgid ""
"The latest version of Python is available from the Ports Collection in "
"package:lang/python[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:157
#, no-wrap
msgid "Ruby"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:160
msgid ""
"Ruby is an interpreter, pure object-oriented programming language. It has "
"become widely popular because of its easy to understand syntax, flexibility "
"when writing code, and the ability to easily develop and maintain large, "
"complex programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:162
-msgid "Ruby is available from the Ports Collection as package:lang/ruby25[]."
+msgid "Ruby is available from the Ports Collection as package:lang/ruby32[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:163
#, no-wrap
msgid "Tcl and Tk"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:166
msgid ""
"Tcl is an embeddable, interpreted language, that has become widely used and "
"became popular mostly because of its portability to many platforms. It can "
"be used both for quickly writing small, prototype applications, or (when "
"combined with Tk, a GUI toolkit) fully-fledged, featureful programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:169
msgid ""
"Various versions of Tcl are available as ports for FreeBSD. The latest "
"version, Tcl 8.5, can be found in package:lang/tcl87[]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:170
#, no-wrap
msgid "Compilers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:177
msgid ""
"Compilers are rather different. First of all, you write your code in a file "
"(or files) using an editor. You then run the compiler and see if it accepts "
"your program. If it did not compile, grit your teeth and go back to the "
"editor; if it did compile and gave you a program, you can run it either at a "
"shell command prompt or in a debugger to see if it works properly.footnote:"
"[If you run it in the shell, you may get a core dump.]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:184
msgid ""
"Obviously, this is not quite as direct as using an interpreter. However it "
"allows you to do a lot of things which are very difficult or even impossible "
"with an interpreter, such as writing code which interacts closely with the "
"operating system-or even writing your own operating system! It is also "
"useful if you need to write very efficient code, as the compiler can take "
"its time and optimize the code, which would not be acceptable in an "
"interpreter. Moreover, distributing a program written for a compiler is "
"usually more straightforward than one written for an interpreter-you can "
"just give them a copy of the executable, assuming they have the same "
"operating system as you."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:188
msgid ""
"As the edit-compile-run-debug cycle is rather tedious when using separate "
"programs, many commercial compiler makers have produced Integrated "
"Development Environments (IDEs for short). FreeBSD does not include an IDE "
"in the base system, but package:devel/kdevelop[] is available in the Ports "
"Collection and many use Emacs for this purpose. Using Emacs as an IDE is "
"discussed in <<emacs>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:190
#, no-wrap
msgid "Compiling with `cc`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:195
msgid ""
"This section deals with the clang compiler for C and C++, as it's installed "
"with the FreeBSD base system. Starting with FreeBSD 10.X `clang` is "
"installed as `cc`; the GNU compiler package:lang/gcc[gcc] is available in "
"the Ports Collection. The details of producing a program with an "
"interpreter vary considerably between interpreters, and are usually well "
"covered in the documentation and on-line help for the interpreter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:198
msgid ""
"Once you have written your masterpiece, the next step is to convert it into "
"something that will (hopefully!) run on FreeBSD. This usually involves "
"several steps, each of which is done by a separate program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:201
msgid ""
"Pre-process your source code to remove comments and do other tricks like "
"expanding macros in C."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:202
msgid ""
"Check the syntax of your code to see if you have obeyed the rules of the "
"language. If you have not, it will complain!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:203
msgid ""
"Convert the source code into assembly language-this is very close to machine "
"code, but still understandable by humans. Allegedly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:204
msgid ""
"Convert the assembly language into machine code-yep, we are talking bits and "
"bytes, ones and zeros here."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:205
msgid ""
"Check that you have used things like functions and global variables in a "
"consistent way. For example, if you have called a non-existent function, it "
"will complain."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:206
msgid ""
"If you are trying to produce an executable from several source code files, "
"work out how to fit them all together."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:207
msgid ""
"Work out how to produce something that the system's run-time loader will be "
"able to load into memory and run."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:208
msgid "Finally, write the executable on the filesystem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:211
msgid ""
"The word _compiling_ is often used to refer to just steps 1 to 4-the others "
"are referred to as _linking_. Sometimes step 1 is referred to as _pre-"
"processing_ and steps 3-4 as _assembling_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:213
msgid ""
"Fortunately, almost all this detail is hidden from you, as `cc` is a front "
"end that manages calling all these programs with the right arguments for "
"you; simply typing"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:217
#, no-wrap
msgid "% cc foobar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:221
msgid ""
"will cause [.filename]#foobar.c# to be compiled by all the steps above. If "
"you have more than one file to compile, just do something like"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:225
#, no-wrap
msgid "% cc foo.c bar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:230
msgid ""
"Note that the syntax checking is just that - checking the syntax. It will "
"not check for any logical mistakes you may have made, like putting the "
"program into an infinite loop, or using a bubble sort when you meant to use "
"a binary sort.footnote:[In case you did not know, a binary sort is an "
"efficient way of sorting things into order and a bubble sort is not.]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:233
msgid ""
"There are lots and lots of options for `cc`, which are all in the manual "
"page. Here are a few of the most important ones, with examples of how to "
"use them."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:234
#, no-wrap
msgid "`-o _filename_`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:236
msgid ""
"The output name of the file. If you do not use this option, `cc` will "
"produce an executable called [.filename]#a.out#.footnote:[The reasons for "
"this are buried in the mists of history.]"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:241
#, no-wrap
msgid ""
"% cc foobar.c executable is a.out\n"
"% cc -o foobar foobar.c executable is foobar\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:243
#, no-wrap
msgid "`-c`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:246
msgid ""
"Just compile the file, do not link it. Useful for toy programs where you "
"just want to check the syntax, or if you are using a [.filename]#Makefile#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:250
#, no-wrap
msgid "% cc -c foobar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:254
msgid ""
"This will produce an _object file_ (not an executable) called [."
"filename]#foobar.o#. This can be linked together with other object files "
"into an executable."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:255
#, no-wrap
msgid "`-g`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:261
msgid ""
"Create a debug version of the executable. This makes the compiler put "
"information into the executable about which line of which source file "
"corresponds to which function call. A debugger can use this information to "
"show the source code as you step through the program, which is _very_ "
"useful; the disadvantage is that all this extra information makes the "
"program much bigger. Normally, you compile with `-g` while you are "
"developing a program and then compile a \"release version\" without `-g` "
"when you are satisfied it works properly."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:266
#, no-wrap
msgid "% cc -g foobar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:269
msgid ""
"This will produce a debug version of the program. footnote:[Note, we did not "
"use the -o flag to specify the executable name, so we will get an executable "
"called a.out. Producing a debug version called foobar is left as an exercise "
"for the reader!]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:270
#, no-wrap
msgid "`-O`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:274
msgid ""
"Create an optimized version of the executable. The compiler performs "
"various clever tricks to try to produce an executable that runs faster than "
"normal. You can add a number after the `-O` to specify a higher level of "
"optimization, but this often exposes bugs in the compiler's optimizer."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:278
#, no-wrap
msgid "% cc -O -o foobar foobar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:281
msgid "This will produce an optimized version of [.filename]#foobar#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:284
msgid ""
"The following three flags will force `cc` to check that your code complies "
"to the relevant international standard, often referred to as the ANSI "
"standard, though strictly speaking it is an ISO standard."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:285
#, no-wrap
msgid "`-Wall`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:288
msgid ""
"Enable all the warnings which the authors of `cc` believe are worthwhile. "
"Despite the name, it will not enable all the warnings `cc` is capable of."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:289
#, no-wrap
msgid "`-ansi`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:292
msgid ""
"Turn off most, but not all, of the non-ANSI C features provided by `cc`. "
"Despite the name, it does not guarantee strictly that your code will comply "
"to the standard."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:293
#, no-wrap
msgid "`-pedantic`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:295
msgid "Turn off _all_ ``cc``'s non-ANSI C features."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:300
msgid ""
"Without these flags, `cc` will allow you to use some of its non-standard "
"extensions to the standard. Some of these are very useful, but will not "
"work with other compilers - in fact, one of the main aims of the standard is "
"to allow people to write code that will work with any compiler on any "
"system. This is known as _portable code_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:303
msgid ""
"Generally, you should try to make your code as portable as possible, as "
"otherwise you may have to completely rewrite the program later to get it to "
"work somewhere else - and who knows what you may be using in a few years "
"time?"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:307
#, no-wrap
msgid "% cc -Wall -ansi -pedantic -o foobar foobar.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:310
msgid ""
"This will produce an executable [.filename]#foobar# after checking [."
"filename]#foobar.c# for standard compliance."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:311
#, no-wrap
msgid "`-l__library__`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:313
msgid "Specify a function library to be used at link time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:316
msgid ""
"The most common example of this is when compiling a program that uses some "
"of the mathematical functions in C. Unlike most other platforms, these are "
"in a separate library from the standard C one and you have to tell the "
"compiler to add it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:320
msgid ""
"The rule is that if the library is called [.filename]#libsomething.a#, you "
"give `cc` the argument `-l__something__`. For example, the math library is "
-"[.filename]#libm.a#, so you give `cc` the argument `-lm`. A common \"gotcha"
-"\" with the math library is that it has to be the last library on the "
-"command line."
+"[.filename]#libm.a#, so you give `cc` the argument `-lm`. A common "
+"\"gotcha\" with the math library is that it has to be the last library on "
+"the command line."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:324
#, no-wrap
msgid "% cc -o foobar foobar.c -lm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:327
msgid "This will link the math library functions into [.filename]#foobar#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:330
msgid ""
"If you are compiling C++ code, use {c-plus-plus-command}. {c-plus-plus-"
"command} can also be invoked as {clang-plus-plus-command} on FreeBSD."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:334
#, no-wrap
msgid "% c++ -o foobar foobar.cc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:337
msgid ""
"This will both produce an executable [.filename]#foobar# from the C++ source "
"file [.filename]#foobar.cc#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:338
#, no-wrap
msgid "Common `cc` Queries and Problems"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:340
#, no-wrap
msgid "I compiled a file called foobar.c and I cannot find an executable called foobar. Where has it gone?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:344
msgid ""
"Remember, `cc` will call the executable [.filename]#a.out# unless you tell "
"it differently. Use the `-o _filename_` option:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:348
#, no-wrap
msgid "% cc -o foobar foobar.c\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:350
#, no-wrap
msgid "OK, I have an executable called foobar, I can see it when I run ls, but when I type in foobar at the command prompt it tells me there is no such file. Why can it not find it?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:354
msgid ""
"Unlike MS-DOS(R), UNIX(R) does not look in the current directory when it is "
"trying to find out which executable you want it to run, unless you tell it "
"to. Type `./foobar`, which means \"run the file called [.filename]#foobar# "
"in the current directory.\""
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:355
#, no-wrap
msgid "I called my executable test, but nothing happens when I run it. What is going on?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:359
msgid ""
"Most UNIX(R) systems have a program called `test` in [.filename]#/usr/bin# "
"and the shell is picking that one up before it gets to checking the current "
"directory. Either type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:363
#, no-wrap
msgid "% ./test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:366
msgid "or choose a better name for your program!"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:367
#, no-wrap
msgid "I compiled my program and it seemed to run all right at first, then there was an error and it said something about core dumped. What does that mean?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:371
msgid ""
"The name _core dump_ dates back to the very early days of UNIX(R), when the "
"machines used core memory for storing data. Basically, if the program "
"failed under certain conditions, the system would write the contents of core "
"memory to disk in a file called [.filename]#core#, which the programmer "
"could then pore over to find out what went wrong."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:372
#, no-wrap
msgid "Fascinating stuff, but what I am supposed to do now?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:375
msgid "Use a debugger to analyze the core (see <<debugging>>)."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:376
#, no-wrap
msgid "When my program dumped core, it said something about a segmentation fault. What is that?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:380
msgid ""
"This basically means that your program tried to perform some sort of illegal "
"operation on memory; UNIX(R) is designed to protect the operating system and "
"other programs from rogue programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:382
msgid "Common causes for this are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:384
msgid "Trying to write to a NULL pointer, eg"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:389
#, no-wrap
msgid ""
"char *foo = NULL;\n"
"strcpy(foo, \"bang!\");\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:392
msgid "Using a pointer that has not been initialized, eg"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:397
#, no-wrap
msgid ""
"char *foo;\n"
"strcpy(foo, \"bang!\");\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:401
msgid ""
"The pointer will have some random value that, with luck, will point into an "
"area of memory that is not available to your program and the kernel will "
"kill your program before it can do any damage. If you are unlucky, it will "
"point somewhere inside your own program and corrupt one of your data "
"structures, causing the program to fail mysteriously."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:402
msgid "Trying to access past the end of an array, eg"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:407
#, no-wrap
msgid ""
"int bar[20];\n"
"bar[27] = 6;\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:410
msgid "Trying to store something in read-only memory, eg"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:415
#, no-wrap
msgid ""
"char *foo = \"My string\";\n"
"strcpy(foo, \"bang!\");\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:418
msgid ""
"UNIX(R) compilers often put string literals like `\"My string\"` into read-"
"only areas of memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:419
msgid "Doing naughty things with `malloc()` and `free()`, eg"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:424
#, no-wrap
msgid ""
"char bar[80];\n"
"free(bar);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:427
msgid "or"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:433
#, no-wrap
msgid ""
"char *foo = malloc(27);\n"
"free(foo);\n"
"free(foo);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:438
msgid ""
"Making one of these mistakes will not always lead to an error, but they are "
"always bad practice. Some systems and compilers are more tolerant than "
"others, which is why programs that ran well on one system can crash when you "
"try them on an another."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:439
#, no-wrap
msgid "Sometimes when I get a core dump it says bus error. It says in my UNIX(R) book that this means a hardware problem, but the computer still seems to be working. Is this true?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:443
msgid ""
"No, fortunately not (unless of course you really do have a hardware "
"problem...). This is usually another way of saying that you accessed memory "
"in a way you should not have."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:444
#, no-wrap
msgid "This dumping core business sounds as though it could be quite useful, if I can make it happen when I want to. Can I do this, or do I have to wait until there is an error?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:447
msgid "Yes, just go to another console or xterm, do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:451
#, no-wrap
msgid "% ps\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:454
msgid "to find out the process ID of your program, and do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:458
#, no-wrap
msgid "% kill -ABRT pid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:461
msgid "where `_pid_` is the process ID you looked up."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:464
msgid ""
"This is useful if your program has got stuck in an infinite loop, for "
"instance. If your program happens to trap SIGABRT, there are several other "
"signals which have a similar effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:467
msgid ""
"Alternatively, you can create a core dump from inside your program, by "
"calling the `abort()` function. See the manual page of man:abort[3] to "
"learn more."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:470
msgid ""
"If you want to create a core dump from outside your program, but do not want "
"the process to terminate, you can use the `gcore` program. See the manual "
"page of man:gcore[1] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:472
#, no-wrap
msgid "Make"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:474
#, no-wrap
msgid "What is `make`?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:477
msgid ""
"When you are working on a simple program with only one or two source files, "
"typing in"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:481
#, no-wrap
msgid "% cc file1.c file2.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:484
msgid ""
"is not too bad, but it quickly becomes very tedious when there are several "
"files-and it can take a while to compile, too."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:487
msgid ""
"One way to get around this is to use object files and only recompile the "
"source file if the source code has changed. So we could have something like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:491
#, no-wrap
msgid "% cc file1.o file2.o … file37.c …\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:495
msgid ""
"if we had changed [.filename]#file37.c#, but not any of the others, since "
"the last time we compiled. This may speed up the compilation quite a bit, "
"but does not solve the typing problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:497
msgid ""
"Or we could write a shell script to solve the typing problem, but it would "
"have to re-compile everything, making it very inefficient on a large project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:499
msgid ""
"What happens if we have hundreds of source files lying about? What if we are "
"working in a team with other people who forget to tell us when they have "
"changed one of their source files that we use?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:502
msgid ""
"Perhaps we could put the two solutions together and write something like a "
"shell script that would contain some kind of magic rule saying when a source "
"file needs compiling. Now all we need now is a program that can understand "
"these rules, as it is a bit too complicated for the shell."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:507
msgid ""
"This program is called `make`. It reads in a file, called a _makefile_, "
"that tells it how different files depend on each other, and works out which "
"files need to be re-compiled and which ones do not. For example, a rule "
"could say something like \"if [.filename]#fromboz.o# is older than [."
"filename]#fromboz.c#, that means someone must have changed [."
"filename]#fromboz.c#, so it needs to be re-compiled.\" The makefile also has "
"rules telling make _how_ to re-compile the source file, making it a much "
"more powerful tool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:510
msgid ""
"Makefiles are typically kept in the same directory as the source they apply "
"to, and can be called [.filename]#makefile#, [.filename]#Makefile# or [."
"filename]#MAKEFILE#. Most programmers use the name [.filename]#Makefile#, "
"as this puts it near the top of a directory listing, where it can easily be "
"seen.footnote:[They do not use the MAKEFILE form as block capitals are often "
"used for documentation files like README.]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:511
#, no-wrap
msgid "Example of Using `make`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:514
msgid "Here is a very simple make file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:519
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:545
#, no-wrap
msgid ""
"foo: foo.c\n"
"\tcc -o foo foo.c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:522
msgid "It consists of two lines, a dependency line and a creation line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:529
msgid ""
"The dependency line here consists of the name of the program (known as the "
"_target_), followed by a colon, then whitespace, then the name of the source "
"file. When `make` reads this line, it looks to see if [.filename]#foo# "
"exists; if it exists, it compares the time [.filename]#foo# was last "
"modified to the time [.filename]#foo.c# was last modified. If [."
"filename]#foo# does not exist, or is older than [.filename]#foo.c#, it then "
"looks at the creation line to find out what to do. In other words, this is "
"the rule for working out when [.filename]#foo.c# needs to be re-compiled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:533
msgid ""
"The creation line starts with a tab (press kbd:[tab]) and then the command "
"you would type to create [.filename]#foo# if you were doing it at a command "
"prompt. If [.filename]#foo# is out of date, or does not exist, `make` then "
"executes this command to create it. In other words, this is the rule which "
"tells make how to re-compile [.filename]#foo.c#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:537
msgid ""
"So, when you type `make`, it will make sure that [.filename]#foo# is up to "
"date with respect to your latest changes to [.filename]#foo.c#. This "
"principle can be extended to [.filename]#Makefile#'s with hundreds of "
"targets-in fact, on FreeBSD, it is possible to compile the entire operating "
"system just by typing `make world` in the appropriate directory!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:540
msgid ""
"Another useful property of makefiles is that the targets do not have to be "
"programs. For instance, we could have a make file that looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:548
#, no-wrap
msgid ""
"install:\n"
"\tcp foo /home/me\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:551
msgid "We can tell make which target we want to make by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:555
#, no-wrap
msgid "% make target\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:559
msgid ""
"`make` will then only look at that target and ignore any others. For "
"example, if we type `make foo` with the makefile above, make will ignore the "
"`install` target."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:562
msgid ""
"If we just type `make` on its own, make will always look at the first target "
"and then stop without looking at any others. So if we typed `make` here, it "
"will just go to the `foo` target, re-compile [.filename]#foo# if necessary, "
"and then stop without going on to the `install` target."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:566
msgid ""
"Notice that the `install` target does not actually depend on anything! This "
"means that the command on the following line is always executed when we try "
"to make that target by typing `make install`. In this case, it will copy [."
"filename]#foo# into the user's home directory. This is often used by "
"application makefiles, so that the application can be installed in the "
"correct directory when it has been correctly compiled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:571
msgid ""
"This is a slightly confusing subject to try to explain. If you do not quite "
"understand how `make` works, the best thing to do is to write a simple "
"program like \"hello world\" and a make file like the one above and "
"experiment. Then progress to using more than one source file, or having the "
"source file include a header file. `touch` is very useful here-it changes "
"the date on a file without you having to edit it."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:572
#, no-wrap
msgid "Make and include-files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:576
msgid ""
"C code often starts with a list of files to include, for example stdio.h. "
"Some of these files are system-include files, some of them are from the "
"project you are now working on:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:581
#, no-wrap
msgid ""
"#include <stdio.h>\n"
"#include \"foo.h\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:583
#, no-wrap
msgid "int main(....\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:586
msgid ""
"To make sure that this file is recompiled the moment [.filename]#foo.h# is "
"changed, you have to add it in your [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:590
#, no-wrap
msgid "foo: foo.c foo.h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:597
msgid ""
"The moment your project is getting bigger and you have more and more own "
"include-files to maintain, it will be a pain to keep track of all include "
"files and the files which are depending on it. If you change an include-"
"file but forget to recompile all the files which are depending on it, the "
"results will be devastating. `clang` has an option to analyze your files "
"and to produce a list of include-files and their dependencies: `-MM`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:599
msgid "If you add this to your Makefile:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:604
#, no-wrap
msgid ""
"depend:\n"
"\tcc -E -MM *.c > .depend\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:607
msgid ""
"and run `make depend`, the file [.filename]#.depend# will appear with a list "
"of object-files, C-files and the include-files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:611
#, no-wrap
msgid "foo.o: foo.c foo.h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:614
msgid ""
"If you change [.filename]#foo.h#, next time you run `make` all files "
"depending on [.filename]#foo.h# will be recompiled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:616
msgid ""
"Do not forget to run `make depend` each time you add an include-file to one "
"of your files."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:617
#, no-wrap
msgid "FreeBSD Makefiles"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:623
msgid ""
"Makefiles can be rather complicated to write. Fortunately, BSD-based "
"systems like FreeBSD come with some very powerful ones as part of the "
"system. One very good example of this is the FreeBSD ports system. Here is "
"the essential part of a typical ports [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:628
#, no-wrap
msgid ""
"MASTER_SITES= ftp://freefall.cdrom.com/pub/FreeBSD/LOCAL_PORTS/\n"
"DISTFILES= scheme-microcode+dist-7.3-freebsd.tgz\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:630
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:633
msgid ""
"Now, if we go to the directory for this port and type `make`, the following "
"happens:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:636
msgid ""
"A check is made to see if the source code for this port is already on the "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:637
msgid ""
"If it is not, an FTP connection to the URL in MASTER_SITES is set up to "
"download the source."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:638
msgid ""
"The checksum for the source is calculated and compared it with one for a "
"known, good, copy of the source. This is to make sure that the source was "
"not corrupted while in transit."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:639
msgid ""
"Any changes required to make the source work on FreeBSD are applied-this is "
"known as _patching_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:640
msgid ""
"Any special configuration needed for the source is done. (Many UNIX(R) "
"program distributions try to work out which version of UNIX(R) they are "
"being compiled on and which optional UNIX(R) features are present-this is "
"where they are given the information in the FreeBSD ports scenario)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:641
msgid ""
"The source code for the program is compiled. In effect, we change to the "
"directory where the source was unpacked and do `make`-the program's own make "
"file has the necessary information to build the program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:642
msgid ""
"We now have a compiled version of the program. If we wish, we can test it "
"now; when we feel confident about the program, we can type `make install`. "
"This will cause the program and any supporting files it needs to be copied "
"into the correct location; an entry is also made into a `package database`, "
"so that the port can easily be uninstalled later if we change our mind about "
"it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:644
msgid ""
"Now I think you will agree that is rather impressive for a four line script!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:648
msgid ""
"The secret lies in the last line, which tells `make` to look in the system "
"makefile called [.filename]#bsd.port.mk#. It is easy to overlook this line, "
"but this is where all the clever stuff comes from-someone has written a "
"makefile that tells `make` to do all the things above (plus a couple of "
"other things I did not mention, including handling any errors that may "
"occur) and anyone can get access to that just by putting a single line in "
"their own make file!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:652
msgid ""
"If you want to have a look at these system makefiles, they are in [."
"filename]#/usr/share/mk#, but it is probably best to wait until you have had "
"a bit of practice with makefiles, as they are very complicated (and if you "
"do look at them, make sure you have a flask of strong coffee handy!)"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:653
#, no-wrap
msgid "More Advanced Uses of `make`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:658
msgid ""
"`Make` is a very powerful tool, and can do much more than the simple example "
"above shows. Unfortunately, there are several different versions of `make`, "
"and they all differ considerably. The best way to learn what they can do is "
"probably to read the documentation-hopefully this introduction will have "
"given you a base from which you can do this."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:661
msgid ""
"The version of make that comes with FreeBSD is the Berkeley make; there is a "
"tutorial for it in [.filename]#/usr/src/share/doc/psd/12.make#. To view it, "
"do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:665
#, no-wrap
msgid "% zmore paper.ascii.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:668
msgid "in that directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:672
msgid ""
"Many applications in the ports use GNU make, which has a very good set of "
"\"info\" pages. If you have installed any of these ports, GNU make will "
"automatically have been installed as `gmake`. It is also available as a "
"port and package in its own right."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:675
msgid ""
"To view the info pages for GNU make, you will have to edit [.filename]#dir# "
"in the [.filename]#/usr/local/info# directory to add an entry for it. This "
"involves adding a line like"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:679
#, no-wrap
msgid " * Make: (make). The GNU Make utility.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:682
msgid ""
"to the file. Once you have done this, you can type `info` and then select [."
"guimenuitem]#make# from the menu (or in Emacs, do `C-h i`)."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:684
#, no-wrap
msgid "Debugging"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:686
#, no-wrap
msgid "Introduction to Available Debuggers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:692
msgid ""
"Using a debugger allows running the program under more controlled "
"circumstances. Typically, it is possible to step through the program a line "
"at a time, inspect the value of variables, change them, tell the debugger to "
"run up to a certain point and then stop, and so on. It is also possible to "
"attach to a program that is already running, or load a core file to "
"investigate why the program crashed. It is even possible to debug the "
"kernel, though that is a little trickier than the user applications we will "
"be discussing in this section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:695
msgid ""
"This section is intended to be a quick introduction to using debuggers and "
"does not cover specialized topics such as debugging the kernel. For more "
"information about that, refer to crossref:kerneldebug[kerneldebug,Kernel "
"Debugging]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:699
msgid ""
"The standard debugger supplied with FreeBSD {rel121-current} is called "
"`lldb` (LLVM debugger). As it is part of the standard installation for that "
"release, there is no need to do anything special to use it. It has good "
"command help, accessible via the `help` command, as well as https://lldb."
"llvm.org/[a web tutorial and documentation]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:704
msgid ""
"The `lldb` command is available for FreeBSD {rel113-current} extref:"
"{handbook}[from ports or packages, ports-using] as package:devel/llvm[]. "
"This will install the default version of lldb (currently 9.0)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:711
msgid ""
"The other debugger available with FreeBSD is called `gdb` (GNU debugger). "
"Unlike lldb, it is not installed by default on FreeBSD {rel121-current}; to "
"use it, extref:{handbook}#ports-using/[install] package:devel/gdb[] from "
"ports or packages. The version installed by default on FreeBSD {rel113-"
"current} is old; instead, install package:devel/gdb[] there as well. It has "
"quite good on-line help, as well as a set of info pages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:716
msgid ""
"Which one to use is largely a matter of taste. If familiar with one only, "
"use that one. People familiar with neither or both but wanting to use one "
"from inside Emacs will need to use `gdb` as `lldb` is unsupported by Emacs. "
"Otherwise, try both and see which one you prefer."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:717
#, no-wrap
msgid "Using lldb"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:719
#, no-wrap
msgid "Starting lldb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:722
msgid "Start up lldb by typing"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:726
#, no-wrap
msgid "% lldb -- progname\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:728
#, no-wrap
msgid "Running a Program with lldb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:733
msgid ""
"Compile the program with `-g` to get the most out of using `lldb`. It will "
"work without, but will only display the name of the function currently "
"running, instead of the source code. If it displays a line like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:737
#, no-wrap
msgid "Breakpoint 1: where = temp`main, address = …\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:740
msgid ""
"(without an indication of source code filename and line number) when setting "
"a breakpoint, this means that the program was not compiled with `-g`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:745
msgid ""
"Most `lldb` commands have shorter forms that can be used instead. The "
"longer forms are used here for clarity."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:750
msgid ""
"At the `lldb` prompt, type `breakpoint set -n main`. This will tell the "
"debugger not to display the preliminary set-up code in the program being run "
"and to stop execution at the beginning of the program's code. Now type "
"`process launch` to actually start the program- it will start at the "
"beginning of the set-up code and then get stopped by the debugger when it "
"calls `main()`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:754
msgid ""
"To step through the program a line at a time, type `thread step-over`. When "
"the program gets to a function call, step into it by typing `thread step-"
"in`. Once in a function call, return from it by typing `thread step-out` or "
"use `up` and `down` to take a quick look at the caller."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:757
msgid ""
"Here is a simple example of how to spot a mistake in a program with `lldb`. "
"This is our program (with a deliberate mistake):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:761
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1035
#, no-wrap
msgid "#include <stdio.h>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:763
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1037
#, no-wrap
msgid "int bazz(int anint);\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:766
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1040
#, no-wrap
msgid ""
"main() {\n"
"\tint i;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:771
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1045
#, no-wrap
msgid ""
"\tprintf(\"This is my program\\n\");\n"
"\tbazz(i);\n"
"\treturn 0;\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:776
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1050
#, no-wrap
msgid ""
"int bazz(int anint) {\n"
"\tprintf(\"You gave me %d\\n\", anint);\n"
"\treturn anint;\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:779
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1053
msgid ""
"This program sets i to be `5` and passes it to a function `bazz()` which "
"prints out the number we gave it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:781
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1055
msgid "Compiling and running the program displays"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:788
#, no-wrap
msgid ""
"% cc -g -o temp temp.c\n"
"% ./temp\n"
"This is my program\n"
"anint = -5360\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:791
msgid "That is not what was expected! Time to see what is going on!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:802
#, no-wrap
msgid ""
"% lldb -- temp\n"
"(lldb) target create \"temp\"\n"
"Current executable set to 'temp' (x86_64).\n"
"(lldb) breakpoint set -n main\t\t\t\tSkip the set-up code\n"
"Breakpoint 1: where = temp`main + 15 at temp.c:8:2, address = 0x00000000002012ef\tlldb puts breakpoint at main()\n"
"(lldb) process launch\t\t\t\t\tRun as far as main()\n"
"Process 9992 launching\n"
"Process 9992 launched: '/home/pauamma/tmp/temp' (x86_64)\tProgram starts running\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:836
#, no-wrap
msgid ""
"Process 9992 stopped\n"
"* thread #1, name = 'temp', stop reason = breakpoint 1.1\tlldb stops at main()\n"
" frame #0: 0x00000000002012ef temp`main at temp.c:8:2\n"
" 5\tmain() {\n"
" 6\t\tint i;\n"
" 7\n"
"-> 8\t\tprintf(\"This is my program\\n\");\t\t\tIndicates the line where it stopped\n"
" 9\t\tbazz(i);\n"
" 10\t\treturn 0;\n"
" 11\t}\n"
"(lldb) thread step-over\t\t\tGo to next line\n"
"This is my program\t\t\t\t\t\tProgram prints out\n"
"Process 9992 stopped\n"
"* thread #1, name = 'temp', stop reason = step over\n"
" frame #0: 0x0000000000201300 temp`main at temp.c:9:7\n"
" 6\t\tint i;\n"
" 7\n"
" 8\t\tprintf(\"This is my program\\n\");\n"
"-> 9\t\tbazz(i);\n"
" 10\t\treturn 0;\n"
" 11\t}\n"
" 12\n"
"(lldb) thread step-in\t\t\tstep into bazz()\n"
"Process 9992 stopped\n"
"* thread #1, name = 'temp', stop reason = step in\n"
" frame #0: 0x000000000020132b temp`bazz(anint=-5360) at temp.c:14:29\tlldb displays stack frame\n"
" 11\t}\n"
" 12\n"
" 13\tint bazz(int anint) {\n"
"-> 14\t\tprintf(\"You gave me %d\\n\", anint);\n"
" 15\t\treturn anint;\n"
" 16\t}\n"
"(lldb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:839
msgid ""
"Hang on a minute! How did anint get to be `-5360`? Was it not set to `5` in "
"`main()`? Let us move up to `main()` and have a look."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:853
#, no-wrap
msgid ""
"(lldb) up\t\tMove up call stack\n"
"frame #1: 0x000000000020130b temp`main at temp.c:9:2\t\tlldb displays stack frame\n"
" 6\t\tint i;\n"
" 7\n"
" 8\t\tprintf(\"This is my program\\n\");\n"
"-> 9\t\tbazz(i);\n"
" 10\t\treturn 0;\n"
" 11\t}\n"
" 12\n"
"(lldb) frame variable i\t\t\tShow us the value of i\n"
"(int) i = -5360\t\t\t\t\t\t\tlldb displays -5360\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:857
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1098
msgid ""
"Oh dear! Looking at the code, we forgot to initialize i. We meant to put"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:863
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1104
#, no-wrap
msgid ""
"...\n"
"main() {\n"
"\tint i;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:867
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1108
#, no-wrap
msgid ""
"\ti = 5;\n"
"\tprintf(\"This is my program\\n\");\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:872
msgid ""
"but we left the `i=5;` line out. As we did not initialize i, it had "
"whatever number happened to be in that area of memory when the program ran, "
"which in this case happened to be `-5360`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:878
msgid ""
"The `lldb` command displays the stack frame every time we go into or out of "
"a function, even if we are using `up` and `down` to move around the call "
"stack. This shows the name of the function and the values of its arguments, "
"which helps us keep track of where we are and what is going on. (The stack "
"is a storage area where the program stores information about the arguments "
"passed to functions and where to go when it returns from a function call.)"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:880
#, no-wrap
msgid "Examining a Core File with lldb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:885
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1126
msgid ""
"A core file is basically a file which contains the complete state of the "
"process when it crashed. In \"the good old days\", programmers had to print "
"out hex listings of core files and sweat over machine code manuals, but now "
"life is a bit easier. Incidentally, under FreeBSD and other 4.4BSD systems, "
"a core file is called [.filename]#progname.core# instead of just [."
"filename]#core#, to make it clearer which program a core file belongs to."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:888
msgid ""
"To examine a core file, specify the name of the core file in addition to the "
"program itself. Instead of starting up `lldb` in the usual way, type `lldb -"
"c _progname_.core -- _progname_`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:890
msgid "The debugger will display something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:897
#, no-wrap
msgid ""
"% lldb -c [.filename]#progname.core# -- [.filename]#progname#\n"
"(lldb) target create \"[.filename]#progname#\" --core \"[.filename]#progname#.core\"\n"
"Core file '/home/pauamma/tmp/[.filename]#progname.core#' (x86_64) was loaded.\n"
"(lldb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:903
msgid ""
"In this case, the program was called [.filename]#progname#, so the core file "
"is called [.filename]#progname.core#. The debugger does not display why the "
"program crashed or where. For this, use `thread backtrace all`. This will "
"also show how the function where the program dumped core was called."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:912
#, no-wrap
msgid ""
"(lldb) thread backtrace all\n"
"* thread #1, name = 'progname', stop reason = signal SIGSEGV\n"
" * frame #0: 0x0000000000201347 progname`bazz(anint=5) at temp2.c:17:10\n"
" frame #1: 0x0000000000201312 progname`main at temp2.c:10:2\n"
" frame #2: 0x000000000020110f progname`_start(ap=<unavailable>, cleanup=<unavailable>) at crt1.c:76:7\n"
"(lldb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:917
msgid ""
"`SIGSEGV` indicates that the program tried to access memory (run code or "
"read/write data usually) at a location that does not belong to it, but does "
"not give any specifics. For that, look at the source code at line 10 of "
"file temp2.c, in `bazz()`. The backtrace also says that in this case, "
"`bazz()` was called from `main()`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:918
#, no-wrap
msgid "Attaching to a Running Program with lldb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:923
msgid ""
"One of the neatest features about `lldb` is that it can attach to a program "
"that is already running. Of course, that requires sufficient permissions to "
"do so. A common problem is stepping through a program that forks and "
"wanting to trace the child, but the debugger will only trace the parent."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:925
msgid ""
"To do that, start up another `lldb`, use `ps` to find the process ID for the "
"child, and do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:929
#, no-wrap
msgid "(lldb) process attach -p pid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:932
msgid "in `lldb`, and then debug as usual."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:934
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1189
msgid ""
"For that to work well, the code that calls `fork` to create the child needs "
"to do something like the following (courtesy of the `gdb` info pages):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:942
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1197
#, no-wrap
msgid ""
"...\n"
"if ((pid = fork()) < 0)\t\t/* _Always_ check this */\n"
"\terror();\n"
"else if (pid == 0) {\t\t/* child */\n"
"\tint PauseMode = 1;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:948
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1203
#, no-wrap
msgid ""
"\twhile (PauseMode)\n"
"\t\tsleep(10);\t/* Wait until someone attaches to us */\n"
"\t...\n"
"} else {\t\t\t/* parent */\n"
"\t...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:951
msgid ""
"Now all that is needed is to attach to the child, set PauseMode to `0` with "
"`expr PauseMode = 0` and wait for the `sleep()` call to return."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:952
#, no-wrap
msgid "Remote Debugging Using LLDB"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:958
msgid ""
"The described functionality is available starting with LLDB version 12.0.0. "
"Users of FreeBSD releases containing an earlier LLDB version may wish to use "
"the snapshot available in extref:{handbook}[ports or packages, ports-using], "
"as package:devel/llvm-devel[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:962
msgid ""
"Starting with LLDB 12.0.0, remote debugging is supported on FreeBSD. This "
"means that `lldb-server` can be started to debug a program on one host, "
"while the interactive `lldb` client connects to it from another one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:964
msgid ""
"To launch a new process to be debugged remotely, run `lldb-server` on the "
"remote server by typing"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:968
#, no-wrap
msgid "% lldb-server g host:port -- progname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:971
msgid ""
"The process will be stopped immediately after launching, and `lldb-server` "
"will wait for the client to connect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:973
msgid ""
"Start `lldb` locally and type the following command to connect to the remote "
"server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:977
#, no-wrap
msgid "(lldb) gdb-remote host:port\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:981
msgid ""
"`lldb-server` can also attach to a running process. To do that, type the "
"following on the remote server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:985
#, no-wrap
msgid "% lldb-server g host:port --attach pid-or-name\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:987
#, no-wrap
msgid "Using gdb"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:989
#, no-wrap
msgid "Starting gdb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:992
msgid "Start up gdb by typing"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:996
#, no-wrap
msgid "% gdb progname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1000
msgid "although many people prefer to run it inside Emacs. To do this, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1004
#, no-wrap
msgid " M-x gdb RET progname RET\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1007
msgid ""
"Finally, for those finding its text-based command-prompt style off-putting, "
"there is a graphical front-end for it (package:devel/xxgdb[]) in the Ports "
"Collection."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1008
#, no-wrap
msgid "Running a Program with gdb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1013
msgid ""
"Compile the program with `-g` to get the most out of using `gdb`. It will "
"work without, but will only display the name of the function currently "
"running, instead of the source code. A line like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1017
#, no-wrap
msgid "... (no debugging symbols found) ...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1020
msgid "when `gdb` starts up means that the program was not compiled with `-g`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1024
msgid ""
"At the `gdb` prompt, type `break main`. This will tell the debugger to skip "
"the preliminary set-up code in the program being run and to stop execution "
"at the beginning of the program's code. Now type `run` to start the "
"program- it will start at the beginning of the set-up code and then get "
"stopped by the debugger when it calls `main()`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1028
msgid ""
"To step through the program a line at a time, press `n`. When at a function "
"call, step into it by pressing `s`. Once in a function call, return from it "
"by pressing `f`, or use `up` and `down` to take a quick look at the caller."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1031
msgid ""
"Here is a simple example of how to spot a mistake in a program with `gdb`. "
"This is our program (with a deliberate mistake):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1062
#, no-wrap
msgid ""
"% cc -g -o temp temp.c\n"
"% ./temp\n"
"This is my program\n"
"anint = 4231\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1065
msgid "That was not what we expected! Time to see what is going on!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1077
#, no-wrap
msgid ""
"% gdb temp\n"
"GDB is free software and you are welcome to distribute copies of it\n"
" under certain conditions; type \"show copying\" to see the conditions.\n"
"There is absolutely no warranty for GDB; type \"show warranty\" for details.\n"
"GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.\n"
"(gdb) break main\t\t\t\tSkip the set-up code\n"
"Breakpoint 1 at 0x160f: file temp.c, line 9.\tgdb puts breakpoint at main()\n"
"(gdb) run\t\t\t\t\tRun as far as main()\n"
"Starting program: /home/james/tmp/temp\t\tProgram starts running\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1084
#, no-wrap
msgid ""
"Breakpoint 1, main () at temp.c:9\t\tgdb stops at main()\n"
"(gdb) n\t\t\t\t\t\tGo to next line\n"
"This is my program\t\t\t\tProgram prints out\n"
"(gdb) s\t\t\t\t\t\tstep into bazz()\n"
"bazz (anint=4231) at temp.c:17\t\t\tgdb displays stack frame\n"
"(gdb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1087
msgid ""
"Hang on a minute! How did anint get to be `4231`? Was it not set to `5` in "
"`main()`? Let us move up to `main()` and have a look."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1094
#, no-wrap
msgid ""
"(gdb) up\t\t\t\t\tMove up call stack\n"
"#1 0x1625 in main () at temp.c:11\t\tgdb displays stack frame\n"
"(gdb) p i\t\t\t\t\tShow us the value of i\n"
"$1 = 4231\t\t\t\t\tgdb displays 4231\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1113
msgid ""
"but we left the `i=5;` line out. As we did not initialize i, it had "
"whatever number happened to be in that area of memory when the program ran, "
"which in this case happened to be `4231`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1119
msgid ""
"The `gdb` command displays the stack frame every time we go into or out of a "
"function, even if we are using `up` and `down` to move around the call "
"stack. This shows the name of the function and the values of its arguments, "
"which helps us keep track of where we are and what is going on. (The stack "
"is a storage area where the program stores information about the arguments "
"passed to functions and where to go when it returns from a function call.)"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1121
#, no-wrap
msgid "Examining a Core File with gdb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1129
msgid ""
"To examine a core file, start up `gdb` in the usual way. Instead of typing "
"`break` or `run`, type"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1133
#, no-wrap
msgid "(gdb) core progname.core\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1136
msgid ""
"If the core file is not in the current directory, type `dir /path/to/core/"
"file` first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1138
msgid "The debugger should display something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1152
#, no-wrap
msgid ""
"% gdb [.filename]#progname#\n"
"GDB is free software and you are welcome to distribute copies of it\n"
" under certain conditions; type \"show copying\" to see the conditions.\n"
"There is absolutely no warranty for GDB; type \"show warranty\" for details.\n"
"GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.\n"
"(gdb) core [.filename]#progname.core#\n"
"Core was generated by `[.filename]#progname#'.\n"
"Program terminated with signal 11, Segmentation fault.\n"
"Cannot access memory at address 0x7020796d.\n"
"#0 0x164a in bazz (anint=0x5) at temp.c:17\n"
"(gdb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1156
msgid ""
"In this case, the program was called [.filename]#progname#, so the core file "
"is called [.filename]#progname.core#. We can see that the program crashed "
"due to trying to access an area in memory that was not available to it in a "
"function called `bazz`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1160
msgid ""
"Sometimes it is useful to be able to see how a function was called, as the "
"problem could have occurred a long way up the call stack in a complex "
"program. `bt` causes `gdb` to print out a back-trace of the call stack:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1168
#, no-wrap
msgid ""
"(gdb) bt\n"
"#0 0x164a in bazz (anint=0x5) at temp.c:17\n"
"#1 0xefbfd888 in end ()\n"
"#2 0x162c in main () at temp.c:11\n"
"(gdb)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1172
msgid ""
"The `end()` function is called when a program crashes; in this case, the "
"`bazz()` function was called from `main()`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1173
#, no-wrap
msgid "Attaching to a Running Program with gdb"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1178
msgid ""
"One of the neatest features about `gdb` is that it can attach to a program "
"that is already running. Of course, that requires sufficient permissions to "
"do so. A common problem is stepping through a program that forks and "
"wanting to trace the child, but the debugger will only trace the parent."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1180
msgid ""
"To do that, start up another `gdb`, use `ps` to find the process ID for the "
"child, and do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1184
#, no-wrap
msgid "(gdb) attach pid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1187
msgid "in `gdb`, and then debug as usual."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1206
msgid ""
"Now all that is needed is to attach to the child, set PauseMode to `0`, and "
"wait for the `sleep()` call to return!"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1208
#, no-wrap
msgid "Using Emacs as a Development Environment"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1210
#, no-wrap
msgid "Emacs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1214
msgid ""
"Emacs is a highly customizable editor-indeed, it has been customized to the "
"point where it is more like an operating system than an editor! Many "
"developers and sysadmins do in fact spend practically all their time working "
"inside Emacs, leaving it only to log out."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1216
msgid ""
"It is impossible even to summarize everything Emacs can do here, but here "
"are some of the features of interest to developers:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1218
msgid ""
"Very powerful editor, allowing search-and-replace on both strings and "
"regular expressions (patterns), jumping to start/end of block expression, "
"etc, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1219
msgid "Pull-down menus and online help."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1220
msgid "Language-dependent syntax highlighting and indentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1221
msgid "Completely customizable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1222
msgid "You can compile and debug programs within Emacs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1223
msgid ""
"On a compilation error, you can jump to the offending line of source code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1224
msgid ""
"Friendly-ish front-end to the `info` program used for reading GNU hypertext "
"documentation, including the documentation on Emacs itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1225
msgid ""
"Friendly front-end to `gdb`, allowing you to look at the source code as you "
"step through your program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1227
msgid "And doubtless many more that have been overlooked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1229
msgid ""
"Emacs can be installed on FreeBSD using the package:editors/emacs[] port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1232
msgid ""
"Once it is installed, start it up and do `C-h t` to read an Emacs tutorial-"
"that means hold down kbd:[control], press kbd:[h], let go of kbd:[control], "
"and then press kbd:[t]. (Alternatively, you can use the mouse to select [."
"guimenuitem]#Emacs Tutorial# from the menu:Help[] menu.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1237
msgid ""
"Although Emacs does have menus, it is well worth learning the key bindings, "
"as it is much quicker when you are editing something to press a couple of "
"keys than to try to find the mouse and then click on the right place. And, "
"when you are talking to seasoned Emacs users, you will find they often "
-"casually throw around expressions like \"`M-x replace-s RET foo RET bar RET`"
-"\" so it is useful to know what they mean. And in any case, Emacs has far "
-"too many useful functions for them to all fit on the menu bars."
+"casually throw around expressions like \"`M-x replace-s RET foo RET bar "
+"RET`\" so it is useful to know what they mean. And in any case, Emacs has "
+"far too many useful functions for them to all fit on the menu bars."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1241
msgid ""
"Fortunately, it is quite easy to pick up the key-bindings, as they are "
"displayed next to the menu item. My advice is to use the menu item for, "
"say, opening a file until you understand how it works and feel confident "
"with it, then try doing C-x C-f. When you are happy with that, move on to "
"another menu command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1244
msgid ""
"If you cannot remember what a particular combination of keys does, select [."
"guimenuitem]#Describe Key# from the menu:Help[] menu and type it in-Emacs "
"will tell you what it does. You can also use the [.guimenuitem]#Command "
"Apropos# menu item to find out all the commands which contain a particular "
"word in them, with the key binding next to it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1247
msgid ""
"By the way, the expression above means hold down the kbd:[Meta] key, press "
"kbd:[x], release the kbd:[Meta] key, type `replace-s` (short for `replace-"
"string`-another feature of Emacs is that you can abbreviate commands), press "
"the kbd:[return] key, type `foo` (the string you want replaced), press the "
"kbd:[return] key, type bar (the string you want to replace `foo` with) and "
"press kbd:[return] again. Emacs will then do the search-and-replace "
"operation you have just requested."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1250
msgid ""
"If you are wondering what on earth kbd:[Meta] is, it is a special key that "
"many UNIX(R) workstations have. Unfortunately, PC's do not have one, so it "
"is usually kbd:[alt] (or if you are unlucky, the kbd:[escape] key)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1254
msgid ""
"Oh, and to get out of Emacs, do `C-x C-c` (that means hold down the kbd:"
"[control] key, press kbd:[x], press kbd:[c] and release the kbd:[control] "
"key). If you have any unsaved files open, Emacs will ask you if you want to "
"save them. (Ignore the bit in the documentation where it says `C-z` is the "
"usual way to leave Emacs-that leaves Emacs hanging around in the background, "
"and is only really useful if you are on a system which does not have virtual "
"terminals)."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1255
#, no-wrap
msgid "Configuring Emacs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1258
msgid ""
"Emacs does many wonderful things; some of them are built in, some of them "
"need to be configured."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1262
msgid ""
"Instead of using a proprietary macro language for configuration, Emacs uses "
"a version of Lisp specially adapted for editors, known as Emacs Lisp. "
"Working with Emacs Lisp can be quite helpful if you want to go on and learn "
"something like Common Lisp. Emacs Lisp has many features of Common Lisp, "
"although it is considerably smaller (and thus easier to master)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1264
msgid ""
"The best way to learn Emacs Lisp is to download the link:ftp://ftp.gnu.org/"
"old-gnu/emacs/elisp-manual-19-2.4.tar.gz[Emacs Tutorial]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1269
msgid ""
"However, there is no need to actually know any Lisp to get started with "
"configuring Emacs, as I have included a sample [.filename]#.emacs#, which "
"should be enough to get you started. Just copy it into your home directory "
"and restart Emacs if it is already running; it will read the commands from "
"the file and (hopefully) give you a useful basic setup."
msgstr ""
#. type: Block title
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1270
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1288
#, no-wrap
msgid "A Sample [.filename]#.emacs#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1273
msgid ""
"Unfortunately, there is far too much here to explain it in detail; however "
"there are one or two points worth mentioning."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1275
msgid "Everything beginning with a `;` is a comment and is ignored by Emacs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1276
msgid ""
"In the first line, the `-*- Emacs-Lisp -*-` is so that we can edit [."
"filename]#.emacs# itself within Emacs and get all the fancy features for "
"editing Emacs Lisp. Emacs usually tries to guess this based on the filename, "
"and may not get it right for [.filename]#.emacs#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1277
msgid ""
"The kbd:[tab] key is bound to an indentation function in some modes, so when "
"you press the tab key, it will indent the current line of code. If you want "
"to put a tab character in whatever you are writing, hold the kbd:[control] "
"key down while you are pressing the kbd:[tab] key."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1278
msgid ""
"This file supports syntax highlighting for C, C++, Perl, Lisp and Scheme, by "
"guessing the language from the filename."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1279
msgid ""
"Emacs already has a pre-defined function called `next-error`. In a "
"compilation output window, this allows you to move from one compilation "
"error to the next by doing `M-n`; we define a complementary function, "
"`previous-error`, that allows you to go to a previous error by doing `M-p`. "
"The nicest feature of all is that `C-c C-c` will open up the source file in "
"which the error occurred and jump to the appropriate line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1280
msgid ""
"We enable Emacs's ability to act as a server, so that if you are doing "
"something outside Emacs and you want to edit a file, you can just type in"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1284
#, no-wrap
msgid "% emacsclient filename\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1287
msgid ""
"and then you can edit the file in your Emacs!footnote:[Many Emacs users set "
"their EDITOR environment to emacsclient so this happens every time they need "
"to edit a file.]"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1293
#, no-wrap
msgid ";; -*-Emacs-Lisp-*-\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1298
#, no-wrap
msgid ""
";; This file is designed to be re-evaled; use the variable first-time\n"
";; to avoid any problems with this.\n"
"(defvar first-time t\n"
" \"Flag signifying this is the first time that .emacs has been evaled\")\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1306
#, no-wrap
msgid ""
";; Meta\n"
"(global-set-key \"\\M- \" 'set-mark-command)\n"
"(global-set-key \"\\M-\\C-h\" 'backward-kill-word)\n"
"(global-set-key \"\\M-\\C-r\" 'query-replace)\n"
"(global-set-key \"\\M-r\" 'replace-string)\n"
"(global-set-key \"\\M-g\" 'goto-line)\n"
"(global-set-key \"\\M-h\" 'help-command)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1327
#, no-wrap
msgid ""
";; Function keys\n"
"(global-set-key [f1] 'manual-entry)\n"
"(global-set-key [f2] 'info)\n"
"(global-set-key [f3] 'repeat-complex-command)\n"
"(global-set-key [f4] 'advertised-undo)\n"
"(global-set-key [f5] 'eval-current-buffer)\n"
"(global-set-key [f6] 'buffer-menu)\n"
"(global-set-key [f7] 'other-window)\n"
"(global-set-key [f8] 'find-file)\n"
"(global-set-key [f9] 'save-buffer)\n"
"(global-set-key [f10] 'next-error)\n"
"(global-set-key [f11] 'compile)\n"
"(global-set-key [f12] 'grep)\n"
"(global-set-key [C-f1] 'compile)\n"
"(global-set-key [C-f2] 'grep)\n"
"(global-set-key [C-f3] 'next-error)\n"
"(global-set-key [C-f4] 'previous-error)\n"
"(global-set-key [C-f5] 'display-faces)\n"
"(global-set-key [C-f8] 'dired)\n"
"(global-set-key [C-f10] 'kill-compilation)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1345
#, no-wrap
msgid ""
";; Keypad bindings\n"
"(global-set-key [up] \"\\C-p\")\n"
"(global-set-key [down] \"\\C-n\")\n"
"(global-set-key [left] \"\\C-b\")\n"
"(global-set-key [right] \"\\C-f\")\n"
"(global-set-key [home] \"\\C-a\")\n"
"(global-set-key [end] \"\\C-e\")\n"
"(global-set-key [prior] \"\\M-v\")\n"
"(global-set-key [next] \"\\C-v\")\n"
"(global-set-key [C-up] \"\\M-\\C-b\")\n"
"(global-set-key [C-down] \"\\M-\\C-f\")\n"
"(global-set-key [C-left] \"\\M-b\")\n"
"(global-set-key [C-right] \"\\M-f\")\n"
"(global-set-key [C-home] \"\\M-<\")\n"
"(global-set-key [C-end] \"\\M->\")\n"
"(global-set-key [C-prior] \"\\M-<\")\n"
"(global-set-key [C-next] \"\\M->\")\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1348
#, no-wrap
msgid ""
";; Mouse\n"
"(global-set-key [mouse-3] 'imenu)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1352
#, no-wrap
msgid ""
";; Misc\n"
"(global-set-key [C-tab] \"\\C-q\\t\")\t; Control tab quotes a tab.\n"
"(setq backup-by-copying-when-mismatch t)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1357
#, no-wrap
msgid ""
";; Treat 'y' or <CR> as yes, 'n' as no.\n"
"(fset 'yes-or-no-p 'y-or-n-p)\n"
"(define-key query-replace-map [return] 'act)\n"
"(define-key query-replace-map [?\\C-m] 'act)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1361
#, no-wrap
msgid ""
";; Load packages\n"
"(require 'desktop)\n"
"(require 'tar-mode)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1367
#, no-wrap
msgid ""
";; Pretty diff mode\n"
"(autoload 'ediff-buffers \"ediff\" \"Intelligent Emacs interface to diff\" t)\n"
"(autoload 'ediff-files \"ediff\" \"Intelligent Emacs interface to diff\" t)\n"
"(autoload 'ediff-files-remote \"ediff\"\n"
" \"Intelligent Emacs interface to diff\")\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1376
#, no-wrap
msgid ""
"(if first-time\n"
" (setq auto-mode-alist\n"
"\t (append '((\"\\\\.cpp$\" . c++-mode)\n"
"\t\t (\"\\\\.hpp$\" . c++-mode)\n"
"\t\t (\"\\\\.lsp$\" . lisp-mode)\n"
"\t\t (\"\\\\.scm$\" . scheme-mode)\n"
"\t\t (\"\\\\.pl$\" . perl-mode)\n"
"\t\t ) auto-mode-alist)))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1381
#, no-wrap
msgid ""
";; Auto font lock mode\n"
"(defvar font-lock-auto-mode-list\n"
" (list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode 'perl-mode 'scheme-mode)\n"
" \"List of modes to always start in font-lock-mode\")\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1386
#, no-wrap
msgid ""
"(defvar font-lock-mode-keyword-alist\n"
" '((c++-c-mode . c-font-lock-keywords)\n"
" (perl-mode . perl-font-lock-keywords))\n"
" \"Associations between modes and keywords\")\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1394
#, no-wrap
msgid ""
"(defun font-lock-auto-mode-select ()\n"
" \"Automatically select font-lock-mode if the current major mode is in font-lock-auto-mode-list\"\n"
" (if (memq major-mode font-lock-auto-mode-list)\n"
" (progn\n"
"\t(font-lock-mode t))\n"
" )\n"
" )\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1396
#, no-wrap
msgid "(global-set-key [M-f1] 'font-lock-fontify-buffer)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1413
#, no-wrap
msgid ""
";; New dabbrev stuff\n"
";(require 'new-dabbrev)\n"
"(setq dabbrev-always-check-other-buffers t)\n"
"(setq dabbrev-abbrev-char-regexp \"\\\\sw\\\\|\\\\s_\")\n"
"(add-hook 'emacs-lisp-mode-hook\n"
"\t '(lambda ()\n"
"\t (set (make-local-variable 'dabbrev-case-fold-search) nil)\n"
"\t (set (make-local-variable 'dabbrev-case-replace) nil)))\n"
"(add-hook 'c-mode-hook\n"
"\t '(lambda ()\n"
"\t (set (make-local-variable 'dabbrev-case-fold-search) nil)\n"
"\t (set (make-local-variable 'dabbrev-case-replace) nil)))\n"
"(add-hook 'text-mode-hook\n"
"\t '(lambda ()\n"
"\t (set (make-local-variable 'dabbrev-case-fold-search) t)\n"
"\t (set (make-local-variable 'dabbrev-case-replace) t)))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1425
#, no-wrap
msgid ""
";; C++ and C mode...\n"
"(defun my-c++-mode-hook ()\n"
" (setq tab-width 4)\n"
" (define-key c++-mode-map \"\\C-m\" 'reindent-then-newline-and-indent)\n"
" (define-key c++-mode-map \"\\C-ce\" 'c-comment-edit)\n"
" (setq c++-auto-hungry-initial-state 'none)\n"
" (setq c++-delete-function 'backward-delete-char)\n"
" (setq c++-tab-always-indent t)\n"
" (setq c-indent-level 4)\n"
" (setq c-continued-statement-offset 4)\n"
" (setq c++-empty-arglist-indent 4))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1439
#, no-wrap
msgid ""
"(defun my-c-mode-hook ()\n"
" (setq tab-width 4)\n"
" (define-key c-mode-map \"\\C-m\" 'reindent-then-newline-and-indent)\n"
" (define-key c-mode-map \"\\C-ce\" 'c-comment-edit)\n"
" (setq c-auto-hungry-initial-state 'none)\n"
" (setq c-delete-function 'backward-delete-char)\n"
" (setq c-tab-always-indent t)\n"
";; BSD-ish indentation style\n"
" (setq c-indent-level 4)\n"
" (setq c-continued-statement-offset 4)\n"
" (setq c-brace-offset -4)\n"
" (setq c-argdecl-indent 0)\n"
" (setq c-label-offset -4))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1446
#, no-wrap
msgid ""
";; Perl mode\n"
"(defun my-perl-mode-hook ()\n"
" (setq tab-width 4)\n"
" (define-key c++-mode-map \"\\C-m\" 'reindent-then-newline-and-indent)\n"
" (setq perl-indent-level 4)\n"
" (setq perl-continued-statement-offset 4))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1450
#, no-wrap
msgid ""
";; Scheme mode...\n"
"(defun my-scheme-mode-hook ()\n"
" (define-key scheme-mode-map \"\\C-m\" 'reindent-then-newline-and-indent))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1456
#, no-wrap
msgid ""
";; Emacs-Lisp mode...\n"
"(defun my-lisp-mode-hook ()\n"
" (define-key lisp-mode-map \"\\C-m\" 'reindent-then-newline-and-indent)\n"
" (define-key lisp-mode-map \"\\C-i\" 'lisp-indent-line)\n"
" (define-key lisp-mode-map \"\\C-j\" 'eval-print-last-sexp))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1464
#, no-wrap
msgid ""
";; Add all of the hooks...\n"
"(add-hook 'c++-mode-hook 'my-c++-mode-hook)\n"
"(add-hook 'c-mode-hook 'my-c-mode-hook)\n"
"(add-hook 'scheme-mode-hook 'my-scheme-mode-hook)\n"
"(add-hook 'emacs-lisp-mode-hook 'my-lisp-mode-hook)\n"
"(add-hook 'lisp-mode-hook 'my-lisp-mode-hook)\n"
"(add-hook 'perl-mode-hook 'my-perl-mode-hook)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1470
#, no-wrap
msgid ""
";; Complement to next-error\n"
"(defun previous-error (n)\n"
" \"Visit previous compilation error message and corresponding source code.\"\n"
" (interactive \"p\")\n"
" (next-error (- n)))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1483
#, no-wrap
msgid ""
";; Misc...\n"
"(transient-mark-mode 1)\n"
"(setq mark-even-if-inactive t)\n"
"(setq visible-bell nil)\n"
"(setq next-line-add-newlines nil)\n"
"(setq compile-command \"make\")\n"
"(setq suggest-key-bindings nil)\n"
"(put 'eval-expression 'disabled nil)\n"
"(put 'narrow-to-region 'disabled nil)\n"
"(put 'set-goal-column 'disabled nil)\n"
"(if (>= emacs-major-version 21)\n"
"\t(setq show-trailing-whitespace t))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1489
#, no-wrap
msgid ""
";; Elisp archive searching\n"
"(autoload 'format-lisp-code-directory \"lispdir\" nil t)\n"
"(autoload 'lisp-dir-apropos \"lispdir\" nil t)\n"
"(autoload 'lisp-dir-retrieve \"lispdir\" nil t)\n"
"(autoload 'lisp-dir-verify \"lispdir\" nil t)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1498
#, no-wrap
msgid ""
";; Font lock mode\n"
"(defun my-make-face (face color &optional bold)\n"
" \"Create a face from a color and optionally make it bold\"\n"
" (make-face face)\n"
" (copy-face 'default face)\n"
" (set-face-foreground face color)\n"
" (if bold (make-face-bold face))\n"
" )\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1511
#, no-wrap
msgid ""
"(if (eq window-system 'x)\n"
" (progn\n"
" (my-make-face 'blue \"blue\")\n"
" (my-make-face 'red \"red\")\n"
" (my-make-face 'green \"dark green\")\n"
" (setq font-lock-comment-face 'blue)\n"
" (setq font-lock-string-face 'bold)\n"
" (setq font-lock-type-face 'bold)\n"
" (setq font-lock-keyword-face 'bold)\n"
" (setq font-lock-function-name-face 'red)\n"
" (setq font-lock-doc-string-face 'green)\n"
" (add-hook 'find-file-hooks 'font-lock-auto-mode-select)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1519
#, no-wrap
msgid ""
" (setq baud-rate 1000000)\n"
" (global-set-key \"\\C-cmm\" 'menu-bar-mode)\n"
" (global-set-key \"\\C-cms\" 'scroll-bar-mode)\n"
" (global-set-key [backspace] 'backward-delete-char)\n"
"\t\t\t\t\t; (global-set-key [delete] 'delete-char)\n"
" (standard-display-european t)\n"
" (load-library \"iso-transl\")))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1536
#, no-wrap
msgid ""
";; X11 or PC using direct screen writes\n"
"(if window-system\n"
" (progn\n"
" ;; (global-set-key [M-f1] 'hilit-repaint-command)\n"
" ;; (global-set-key [M-f2] [?\\C-u M-f1])\n"
" (setq hilit-mode-enable-list\n"
"\t '(not text-mode c-mode c++-mode emacs-lisp-mode lisp-mode\n"
"\t\t scheme-mode)\n"
"\t hilit-auto-highlight nil\n"
"\t hilit-auto-rehighlight 'visible\n"
"\t hilit-inhibit-hooks nil\n"
"\t hilit-inhibit-rebinding t)\n"
" (require 'hilit19)\n"
" (require 'paren))\n"
" (setq baud-rate 2400)\t\t\t; For slow serial connections\n"
" )\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1545
#, no-wrap
msgid ""
";; TTY type terminal\n"
"(if (and (not window-system)\n"
"\t (not (equal system-type 'ms-dos)))\n"
" (progn\n"
" (if first-time\n"
"\t (progn\n"
"\t (keyboard-translate ?\\C-h ?\\C-?)\n"
"\t (keyboard-translate ?\\C-? ?\\C-h)))))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1551
#, no-wrap
msgid ""
";; Under UNIX\n"
"(if (not (equal system-type 'ms-dos))\n"
" (progn\n"
" (if first-time\n"
"\t (server-start))))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1559
#, no-wrap
msgid ""
";; Add any face changes here\n"
"(add-hook 'term-setup-hook 'my-term-setup-hook)\n"
"(defun my-term-setup-hook ()\n"
" (if (eq window-system 'pc)\n"
" (progn\n"
";;\t(set-face-background 'default \"red\")\n"
"\t)))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1565
#, no-wrap
msgid ""
";; Restore the \"desktop\" - do this as late as possible\n"
"(if first-time\n"
" (progn\n"
" (desktop-load-default)\n"
" (desktop-read)))\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1568
#, no-wrap
msgid ""
";; Indicate that this file has been read at least once\n"
"(setq first-time nil)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1570
#, no-wrap
msgid ";; No need to debug anything now\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1572
#, no-wrap
msgid "(setq debug-on-error nil)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1575
#, no-wrap
msgid ""
";; All done\n"
"(message \"All done, %s%s\" (user-login-name) \".\")\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1578
#, no-wrap
msgid "Extending the Range of Languages Emacs Understands"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1581
msgid ""
"Now, this is all very well if you only want to program in the languages "
"already catered for in [.filename]#.emacs# (C, C++, Perl, Lisp and Scheme), "
"but what happens if a new language called \"whizbang\" comes out, full of "
"exciting features?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1585
msgid ""
"The first thing to do is find out if whizbang comes with any files that tell "
"Emacs about the language. These usually end in [.filename]#.el#, short for "
"\"Emacs Lisp\". For example, if whizbang is a FreeBSD port, we can locate "
"these files by doing"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1589
#, no-wrap
msgid "% find /usr/ports/lang/whizbang -name \"*.el\" -print\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1593
msgid ""
"and install them by copying them into the Emacs site Lisp directory. On "
"FreeBSD, this is [.filename]#/usr/local/share/emacs/site-lisp#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1595
msgid "So for example, if the output from the find command was"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1599
#, no-wrap
msgid "/usr/ports/lang/whizbang/work/misc/whizbang.el\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1602
msgid "we would do"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1606
#, no-wrap
msgid "# cp /usr/ports/lang/whizbang/work/misc/whizbang.el /usr/local/share/emacs/site-lisp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1611
msgid ""
"Next, we need to decide what extension whizbang source files have. Let us "
"say for the sake of argument that they all end in [.filename]#.wiz#. We "
"need to add an entry to our [.filename]#.emacs# to make sure Emacs will be "
"able to use the information in [.filename]#whizbang.el#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1613
msgid ""
"Find the auto-mode-alist entry in [.filename]#.emacs# and add a line for "
"whizbang, such as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1621
#, no-wrap
msgid ""
"...\n"
"(\"\\\\.lsp$\" . lisp-mode)\n"
"(\"\\\\.wiz$\" . whizbang-mode)\n"
"(\"\\\\.scm$\" . scheme-mode)\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1624
msgid ""
"This means that Emacs will automatically go into `whizbang-mode` when you "
"edit a file ending in [.filename]#.wiz#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1627
msgid ""
"Just below this, you will find the font-lock-auto-mode-list entry. Add "
"`whizbang-mode` to it like so:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1634
#, no-wrap
msgid ""
";; Auto font lock mode\n"
"(defvar font-lock-auto-mode-list\n"
" (list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'whizbang-mode 'lisp-mode 'perl-mode 'scheme-mode)\n"
" \"List of modes to always start in font-lock-mode\")\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1637
msgid ""
"This means that Emacs will always enable `font-lock-mode` (ie syntax "
"highlighting) when editing a [.filename]#.wiz# file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1640
msgid ""
"And that is all that is needed. If there is anything else you want done "
"automatically when you open up [.filename]#.wiz#, you can add a `whizbang-"
"mode hook` (see `my-scheme-mode-hook` for a simple example that adds `auto-"
"indent`)."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1642
#, no-wrap
msgid "Further Reading"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1645
msgid ""
"For information about setting up a development environment for contributing "
"fixes to FreeBSD itself, please see man:development[7]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1647
msgid ""
"Brian Harvey and Matthew Wright _Simply Scheme_ MIT 1994. ISBN 0-262-08226-8"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1648
msgid "Randall Schwartz _Learning Perl_ O'Reilly 1993 ISBN 1-56592-042-2"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1649
msgid ""
"Patrick Henry Winston and Berthold Klaus Paul Horn _Lisp (3rd Edition)_ "
"Addison-Wesley 1989 ISBN 0-201-08319-1"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1650
msgid ""
"Brian W. Kernighan and Rob Pike _The Unix Programming Environment_ Prentice-"
"Hall 1984 ISBN 0-13-937681-X"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1651
msgid ""
"Brian W. Kernighan and Dennis M. Ritchie _The C Programming Language (2nd "
"Edition)_ Prentice-Hall 1988 ISBN 0-13-110362-8"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1652
msgid ""
"Bjarne Stroustrup _The C++ Programming Language_ Addison-Wesley 1991 ISBN "
"0-201-53992-6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1653
msgid ""
"W. Richard Stevens _Advanced Programming in the Unix Environment_ Addison-"
"Wesley 1992 ISBN 0-201-56317-7"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1653
msgid ""
"W. Richard Stevens _Unix Network Programming_ Prentice-Hall 1990 ISBN "
"0-13-949876-1"
msgstr ""
diff --git a/documentation/content/en/books/developers-handbook/x86/_index.po b/documentation/content/en/books/developers-handbook/x86/_index.po
index 357587bc7b..798922f069 100644
--- a/documentation/content/en/books/developers-handbook/x86/_index.po
+++ b/documentation/content/en/books/developers-handbook/x86/_index.po
@@ -1,8103 +1,8103 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:20-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Title =
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:14
#, no-wrap
msgid "x86 Assembly Language Programming"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1
#, no-wrap
msgid "Chapter 11. x86 Assembly Language Programming"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:52
msgid "_This chapter was written by {stanislav}._"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:54
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:58
msgid ""
"Assembly language programming under UNIX(R) is highly undocumented. It is "
"generally assumed that no one would ever want to use it because various "
"UNIX(R) systems run on different microprocessors, so everything should be "
"written in C for portability."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:62
msgid ""
"In reality, C portability is quite a myth. Even C programs need to be "
"modified when ported from one UNIX(R) to another, regardless of what "
"processor each runs on. Typically, such a program is full of conditional "
"statements depending on the system it is compiled for."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:64
msgid ""
"Even if we believe that all of UNIX(R) software should be written in C, or "
"some other high-level language, we still need assembly language programmers: "
"Who else would write the section of C library that accesses the kernel?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:66
msgid ""
"In this chapter I will attempt to show you how you can use assembly language "
"writing UNIX(R) programs, specifically under FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:71
msgid ""
"This chapter does not explain the basics of assembly language. There are "
"enough resources about that (for a complete online course in assembly "
"language, see Randall Hyde's http://webster.cs.ucr.edu/[Art of Assembly "
"Language]; or if you prefer a printed book, take a look at Jeff Duntemann's "
"Assembly Language Step-by-Step (ISBN: 0471375233). However, once the "
"chapter is finished, any assembly language programmer will be able to write "
"programs for FreeBSD quickly and efficiently."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:73
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4313
msgid "Copyright (R) 2000-2001 G. Adam Stanislav. All rights reserved."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:75
#, no-wrap
msgid "The Tools"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:78
#, no-wrap
msgid "The Assembler"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:81
msgid ""
"The most important tool for assembly language programming is the assembler, "
"the software that converts assembly language code into machine language."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:85
msgid ""
"Two very different assemblers are available for FreeBSD. One is man:as[1], "
"which uses the traditional UNIX(R) assembly language syntax. It comes with "
"the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:90
msgid ""
"The other is /usr/ports/devel/nasm. It uses the Intel syntax. Its main "
"advantage is that it can assemble code for many operating systems. It needs "
"to be installed separately, but is completely free."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:93
msgid ""
"This chapter uses nasm syntax because most assembly language programmers "
"coming to FreeBSD from other operating systems will find it easier to "
"understand. And, because, quite frankly, that is what I am used to."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:95
#, no-wrap
msgid "The Linker"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:98
msgid ""
"The output of the assembler, like that of any compiler, needs to be linked "
"to form an executable file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:101
msgid ""
"The standard man:ld[1] linker comes with FreeBSD. It works with the code "
"assembled with either assembler."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:103
#, no-wrap
msgid "System Calls"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:106
#, no-wrap
msgid "Default Calling Convention"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:110
msgid ""
"By default, the FreeBSD kernel uses the C calling convention. Further, "
"although the kernel is accessed using `int 80h`, it is assumed the program "
"will call a function that issues `int 80h`, rather than issuing `int 80h` "
"directly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:113
msgid ""
"This convention is very convenient, and quite superior to the Microsoft(R) "
"convention used by MS-DOS(R). Why? Because the UNIX(R) convention allows "
"any program written in any language to access the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:116
msgid ""
"An assembly language program can do that as well. For example, we could "
"open a file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:122
#, no-wrap
msgid ""
"kernel:\n"
"\tint\t80h\t; Call kernel\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:131
#, no-wrap
msgid ""
"open:\n"
"\tpush\tdword mode\n"
"\tpush\tdword flags\n"
"\tpush\tdword path\n"
"\tmov\teax, 5\n"
"\tcall\tkernel\n"
"\tadd\tesp, byte 12\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:135
msgid ""
"This is a very clean and portable way of coding. If you need to port the "
"code to a UNIX(R) system which uses a different interrupt, or a different "
"way of passing parameters, all you need to change is the kernel procedure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:139
msgid ""
"But assembly language programmers like to shave off cycles. The above "
"example requires a `call/ret` combination. We can eliminate it by "
"``push``ing an extra dword:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:150
#, no-wrap
msgid ""
"open:\n"
"\tpush\tdword mode\n"
"\tpush\tdword flags\n"
"\tpush\tdword path\n"
"\tmov\teax, 5\n"
"\tpush\teax\t\t; Or any other dword\n"
"\tint\t80h\n"
"\tadd\tesp, byte 16\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:153
msgid ""
"The `5` that we have placed in `EAX` identifies the kernel function, in this "
"case `open`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:155
#, no-wrap
msgid "Alternate Calling Convention"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:160
msgid ""
"FreeBSD is an extremely flexible system. It offers other ways of calling "
"the kernel. For it to work, however, the system must have Linux emulation "
"installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:165
msgid ""
"Linux is a UNIX(R) like system. However, its kernel uses the same system-"
"call convention of passing parameters in registers MS-DOS(R) does. As with "
"the UNIX(R) convention, the function number is placed in `EAX`. The "
"parameters, however, are not passed on the stack but in `EBX, ECX, EDX, ESI, "
"EDI, EBP`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:174
#, no-wrap
msgid ""
"open:\n"
"\tmov\teax, 5\n"
"\tmov\tebx, path\n"
"\tmov\tecx, flags\n"
"\tmov\tedx, mode\n"
"\tint\t80h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:180
msgid ""
"This convention has a great disadvantage over the UNIX(R) way, at least as "
"far as assembly language programming is concerned: Every time you make a "
"kernel call you must `push` the registers, then `pop` them later. This "
"makes your code bulkier and slower. Nevertheless, FreeBSD gives you a "
"choice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:183
msgid ""
"If you do choose the Linux convention, you must let the system know about "
"it. After your program is assembled and linked, you need to brand the "
"executable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:187
#, no-wrap
msgid "% brandelf -t Linux filename\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:190
#, no-wrap
msgid "Which Convention Should You Use?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:195
msgid ""
"If you are coding specifically for FreeBSD, you should always use the "
"UNIX(R) convention: It is faster, you can store global variables in "
"registers, you do not have to brand the executable, and you do not impose "
"the installation of the Linux emulation package on the target system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:198
msgid ""
"If you want to create portable code that can also run on Linux, you will "
"probably still want to give the FreeBSD users as efficient a code as "
"possible. I will show you how you can accomplish that after I have "
"explained the basics."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:200
#, no-wrap
msgid "Call Numbers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:204
msgid ""
"To tell the kernel which system service you are calling, place its number in "
"`EAX`. Of course, you need to know what the number is."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:206
#, no-wrap
msgid "The [.filename]#syscalls# File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:210
msgid ""
"The numbers are listed in [.filename]#syscalls#. `locate syscalls` finds "
"this file in several different formats, all produced automatically from [."
"filename]#syscalls.master#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:213
msgid ""
"You can find the master file for the default UNIX(R) calling convention in [."
"filename]#/usr/src/sys/kern/syscalls.master#. If you need to use the other "
"convention implemented in the Linux emulation mode, read [.filename]#/usr/"
"src/sys/i386/linux/syscalls.master#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:217
msgid ""
"Not only do FreeBSD and Linux use different calling conventions, they "
"sometimes use different numbers for the same functions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:220
msgid "[.filename]#syscalls.master# describes how the call is to be made:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:231
#, no-wrap
msgid ""
"0\tSTD\tNOHIDE\t{ int nosys(void); } syscall nosys_args int\n"
"1\tSTD\tNOHIDE\t{ void exit(int rval); } exit rexit_args void\n"
"2\tSTD\tPOSIX\t{ int fork(void); }\n"
"3\tSTD\tPOSIX\t{ ssize_t read(int fd, void *buf, size_t nbyte); }\n"
"4\tSTD\tPOSIX\t{ ssize_t write(int fd, const void *buf, size_t nbyte); }\n"
"5\tSTD\tPOSIX\t{ int open(char *path, int flags, int mode); }\n"
"6\tSTD\tPOSIX\t{ int close(int fd); }\n"
"etc...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:234
msgid "It is the leftmost column that tells us the number to place in `EAX`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:237
msgid ""
"The rightmost column tells us what parameters to `push`. They are "
"``push``ed _from right to left_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:239
msgid ""
"For example, to `open` a file, we need to `push` the `mode` first, then "
"`flags`, then the address at which the `path` is stored."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:241
#, no-wrap
msgid "Return Values"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:245
msgid ""
"A system call would not be useful most of the time if it did not return some "
"kind of a value: The file descriptor of an open file, the number of bytes "
"read to a buffer, the system time, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:248
msgid ""
"Additionally, the system needs to inform us if an error occurs: A file does "
"not exist, system resources are exhausted, we passed an invalid parameter, "
"etc."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:250
#, no-wrap
msgid "Man Pages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:254
msgid ""
"The traditional place to look for information about various system calls "
"under UNIX(R) systems are the manual pages. FreeBSD describes its system "
"calls in section 2, sometimes in section 3."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:256
msgid "For example, man:open[2] says:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:260
msgid ""
"If successful, `open()` returns a non-negative integer, termed a file "
"descriptor. It returns `-1` on failure, and sets `errno` to indicate the "
"error."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:262
msgid ""
"The assembly language programmer new to UNIX(R) and FreeBSD will immediately "
"ask the puzzling question: Where is `errno` and how do I get to it?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:267
msgid ""
"The information presented in the manual pages applies to C programs. The "
"assembly language programmer needs additional information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:270
#, no-wrap
msgid "Where Are the Return Values?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:275
msgid ""
"Unfortunately, it depends... For most system calls it is in `EAX`, but not "
"for all. A good rule of thumb, when working with a system call for the "
"first time, is to look for the return value in `EAX`. If it is not there, "
"you need further research."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:281
msgid ""
"I am aware of one system call that returns the value in `EDX`: `SYS_fork`. "
"All others I have worked with use `EAX`. But I have not worked with them "
"all yet."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:286
msgid ""
"If you cannot find the answer here or anywhere else, study libc source code "
"and see how it interfaces with the kernel."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:289
#, no-wrap
msgid "Where Is `errno`?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:292
msgid "Actually, nowhere..."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:295
msgid ""
"`errno` is part of the C language, not the UNIX(R) kernel. When accessing "
"kernel services directly, the error code is returned in `EAX`, the same "
"register the proper return value generally ends up in."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:299
msgid ""
"This makes perfect sense. If there is no error, there is no error code. If "
"there is an error, there is no return value. One register can contain "
"either."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:301
#, no-wrap
msgid "Determining an Error Occurred"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:304
msgid ""
"When using the standard FreeBSD calling convention, the `carry flag` is "
"cleared upon success, set upon failure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:307
msgid ""
"When using the Linux emulation mode, the signed value in `EAX` is non-"
"negative upon success, and contains the return value. In case of an error, "
"the value is negative, i.e., `-errno`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:309
#, no-wrap
msgid "Creating Portable Code"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:314
msgid ""
"Portability is generally not one of the strengths of assembly language. "
"Yet, writing assembly language programs for different platforms is possible, "
"especially with nasm. I have written assembly language libraries that can "
"be assembled for such different operating systems as Windows(R) and FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:316
msgid ""
"It is all the more possible when you want your code to run on two platforms "
"which, while different, are based on similar architectures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:320
msgid ""
"For example, FreeBSD is UNIX(R), Linux is UNIX(R) like. I only mentioned "
"three differences between them (from an assembly language programmer's "
"perspective): The calling convention, the function numbers, and the way of "
"returning values."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:322
#, no-wrap
msgid "Dealing with Function Numbers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:327
msgid ""
"In many cases the function numbers are the same. However, even when they "
"are not, the problem is easy to deal with: Instead of using numbers in your "
"code, use constants which you have declared differently depending on the "
"target architecture:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:335
#, no-wrap
msgid ""
"%ifdef\tLINUX\n"
"%define\tSYS_execve\t11\n"
"%else\n"
"%define\tSYS_execve\t59\n"
"%endif\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:338
#, no-wrap
msgid "Dealing with Conventions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:341
msgid ""
"Both, the calling convention, and the return value (the `errno` problem) can "
"be resolved with macros:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:345
#, no-wrap
msgid "%ifdef\tLINUX\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:349
#, no-wrap
msgid ""
"%macro\tsystem\t0\n"
"\tcall\tkernel\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:358
#, no-wrap
msgid ""
"align 4\n"
"kernel:\n"
"\tpush\tebx\n"
"\tpush\tecx\n"
"\tpush\tedx\n"
"\tpush\tesi\n"
"\tpush\tedi\n"
"\tpush\tebp\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:365
#, no-wrap
msgid ""
"\tmov\tebx, [esp+32]\n"
"\tmov\tecx, [esp+36]\n"
"\tmov\tedx, [esp+40]\n"
"\tmov\tesi, [esp+44]\n"
"\tmov\tebp, [esp+48]\n"
"\tint\t80h\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:372
#, no-wrap
msgid ""
"\tpop\tebp\n"
"\tpop\tedi\n"
"\tpop\tesi\n"
"\tpop\tedx\n"
"\tpop\tecx\n"
"\tpop\tebx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:377
#, no-wrap
msgid ""
"\tor\teax, eax\n"
"\tjs\t.errno\n"
"\tclc\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:382
#, no-wrap
msgid ""
".errno:\n"
"\tneg\teax\n"
"\tstc\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:384
#, no-wrap
msgid "%else\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:388
#, no-wrap
msgid ""
"%macro\tsystem\t0\n"
"\tint\t80h\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:390
#, no-wrap
msgid "%endif\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:393
#, no-wrap
msgid "Dealing with Other Portability Issues"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:397
msgid ""
"The above solutions can handle most cases of writing code portable between "
"FreeBSD and Linux. Nevertheless, with some kernel services the differences "
"are deeper."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:400
msgid ""
"In that case, you need to write two different handlers for those particular "
"system calls, and use conditional assembly. Luckily, most of your code does "
"something other than calling the kernel, so usually you will only need a few "
"such conditional sections in your code."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:402
#, no-wrap
msgid "Using a Library"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:406
msgid ""
"You can avoid portability issues in your main code altogether by writing a "
"library of system calls. Create a separate library for FreeBSD, a different "
"one for Linux, and yet other libraries for more operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:411
msgid ""
"In your library, write a separate function (or procedure, if you prefer the "
"traditional assembly language terminology) for each system call. Use the C "
"calling convention of passing parameters. But still use `EAX` to pass the "
"call number in. In that case, your FreeBSD library can be very simple, as "
"many seemingly different functions can be just labels to the same code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:419
#, no-wrap
msgid ""
"sys.open:\n"
"sys.close:\n"
"[etc...]\n"
"\tint\t80h\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:423
msgid ""
"Your Linux library will require more different functions. But even here you "
"can group system calls using the same number of parameters:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:434
#, no-wrap
msgid ""
"sys.exit:\n"
"sys.close:\n"
"[etc... one-parameter functions]\n"
"\tpush\tebx\n"
"\tmov\tebx, [esp+12]\n"
"\tint\t80h\n"
"\tpop\tebx\n"
"\tjmp\tsys.return\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:436
#, no-wrap
msgid "...\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:442
#, no-wrap
msgid ""
"sys.return:\n"
"\tor\teax, eax\n"
"\tjs\tsys.err\n"
"\tclc\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:447
#, no-wrap
msgid ""
"sys.err:\n"
"\tneg\teax\n"
"\tstc\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:454
msgid ""
"The library approach may seem inconvenient at first because it requires you "
"to produce a separate file your code depends on. But it has many "
"advantages: For one, you only need to write it once and can use it for all "
"your programs. You can even let other assembly language programmers use it, "
"or perhaps use one written by someone else. But perhaps the greatest "
"advantage of the library is that your code can be ported to other systems, "
"even by other programmers, by simply writing a new library without any "
"changes to your code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:456
msgid ""
"If you do not like the idea of having a library, you can at least place all "
"your system calls in a separate assembly language file and link it with your "
"main program. Here, again, all porters have to do is create a new object "
"file to link with your main program."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:458
#, no-wrap
msgid "Using an Include File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:461
msgid ""
"If you are releasing your software as (or with) source code, you can use "
"macros and place them in a separate file, which you include in your code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:464
msgid ""
"Porters of your software will simply write a new include file. No library "
"or external object file is necessary, yet your code is portable without any "
"need to edit the code."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:469
msgid ""
"This is the approach we will use throughout this chapter. We will name our "
"include file [.filename]#system.inc#, and add to it whenever we deal with a "
"new system call."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:472
msgid ""
"We can start our [.filename]#system.inc# by declaring the standard file "
"descriptors:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:478
#, no-wrap
msgid ""
"%define\tstdin\t0\n"
"%define\tstdout\t1\n"
"%define\tstderr\t2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:481
msgid "Next, we create a symbolic name for each system call:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:490
#, no-wrap
msgid ""
"%define\tSYS_nosys\t0\n"
"%define\tSYS_exit\t1\n"
"%define\tSYS_fork\t2\n"
"%define\tSYS_read\t3\n"
"%define\tSYS_write\t4\n"
"; [etc...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:493
msgid ""
"We add a short, non-global procedure with a long name, so we do not "
"accidentally reuse the name in our code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:501
#, no-wrap
msgid ""
"section\t.text\n"
"align 4\n"
"access.the.bsd.kernel:\n"
"\tint\t80h\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:504
msgid "We create a macro which takes one argument, the syscall number:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:511
#, no-wrap
msgid ""
"%macro\tsystem\t1\n"
"\tmov\teax, %1\n"
"\tcall\taccess.the.bsd.kernel\n"
"%endmacro\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:515
msgid ""
"Finally, we create macros for each syscall. These macros take no arguments."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:521
#, no-wrap
msgid ""
"%macro\tsys.exit\t0\n"
"\tsystem\tSYS_exit\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:525
#, no-wrap
msgid ""
"%macro\tsys.fork\t0\n"
"\tsystem\tSYS_fork\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:529
#, no-wrap
msgid ""
"%macro\tsys.read\t0\n"
"\tsystem\tSYS_read\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:533
#, no-wrap
msgid ""
"%macro\tsys.write\t0\n"
"\tsystem\tSYS_write\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:535
#, no-wrap
msgid "; [etc...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:539
msgid ""
"Go ahead, enter it into your editor and save it as [.filename]#system.inc#. "
"We will add more to it as we discuss more syscalls."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:541
#, no-wrap
msgid "Our First Program"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:544
msgid "We are now ready for our first program, the mandatory Hello, World!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:563
#, no-wrap
msgid ""
"1:\t%include\t'system.inc'\n"
" 2:\n"
" 3:\tsection\t.data\n"
" 4:\thello\tdb\t'Hello, World!', 0Ah\n"
" 5:\thbytes\tequ\t$-hello\n"
" 6:\n"
" 7:\tsection\t.text\n"
" 8:\tglobal\t_start\n"
" 9:\t_start:\n"
"10:\tpush\tdword hbytes\n"
"11:\tpush\tdword hello\n"
"12:\tpush\tdword stdout\n"
"13:\tsys.write\n"
"14:\n"
"15:\tpush\tdword 0\n"
"16:\tsys.exit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:566
msgid ""
"Here is what it does: Line 1 includes the defines, the macros, and the code "
"from [.filename]#system.inc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:570
msgid ""
"Lines 3-5 are the data: Line 3 starts the data section/segment. Line 4 "
"contains the string \"Hello, World!\" followed by a new line (`0Ah`). Line "
"5 creates a constant that contains the length of the string from line 4 in "
"bytes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:574
msgid ""
"Lines 7-16 contain the code. Note that FreeBSD uses the _elf_ file format "
"for its executables, which requires every program to start at the point "
"labeled `_start` (or, more precisely, the linker expects that). This label "
"has to be global."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:576
msgid ""
"Lines 10-13 ask the system to write `hbytes` bytes of the `hello` string to "
"`stdout`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:579
msgid ""
"Lines 15-16 ask the system to end the program with the return value of `0`. "
"The `SYS_exit` syscall never returns, so the code ends there."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:587
msgid ""
"If you have come to UNIX(R) from MS-DOS(R) assembly language background, you "
"may be used to writing directly to the video hardware. You will never have "
"to worry about this in FreeBSD, or any other flavor of UNIX(R). As far as "
"you are concerned, you are writing to a file known as [.filename]#stdout#. "
"This can be the video screen, or a telnet terminal, or an actual file, or "
"even the input of another program. Which one it is, is for the system to "
"figure out."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:590
#, no-wrap
msgid "Assembling the Code"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:594
msgid ""
"Type the code (except the line numbers) in an editor, and save it in a file "
"named [.filename]#hello.asm#. You need nasm to assemble it."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:596
#, no-wrap
msgid "Installing nasm"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:599
msgid "If you do not have nasm, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:608
#, no-wrap
msgid ""
"% su\n"
"Password:your root password\n"
"# cd /usr/ports/devel/nasm\n"
"# make install\n"
"# exit\n"
"%\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:611
msgid ""
"You may type `make install clean` instead of just `make install` if you do "
"not want to keep nasm source code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:613
msgid ""
"Either way, FreeBSD will automatically download nasm from the Internet, "
"compile it, and install it on your system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:618
msgid ""
"If your system is not FreeBSD, you need to get nasm from its https://"
"sourceforge.net/projects/nasm[home page]. You can still use it to assemble "
"FreeBSD code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:621
msgid "Now you can assemble, link, and run the code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:629
#, no-wrap
msgid ""
"% nasm -f elf hello.asm\n"
"% ld -s -o hello hello.o\n"
"% ./hello\n"
"Hello, World!\n"
"%\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:632
#, no-wrap
msgid "Writing UNIX(R) Filters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:635
msgid ""
"A common type of UNIX(R) application is a filter-a program that reads data "
"from the [.filename]#stdin#, processes it somehow, then writes the result to "
"[.filename]#stdout#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:638
msgid ""
"In this chapter, we shall develop a simple filter, and learn how to read "
"from [.filename]#stdin# and write to [.filename]#stdout#. This filter will "
"convert each byte of its input into a hexadecimal number followed by a blank "
"space."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:642
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:736
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:826
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:954
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1221
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2339
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3337
#, no-wrap
msgid "%include\t'system.inc'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:646
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:740
#, no-wrap
msgid ""
"section\t.data\n"
"hex\tdb\t'0123456789ABCDEF'\n"
"buffer\tdb\t0, 0, ' '\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:658
#, no-wrap
msgid ""
"section\t.text\n"
"global\t_start\n"
"_start:\n"
"\t; read a byte from stdin\n"
"\tpush\tdword 1\n"
"\tpush\tdword buffer\n"
"\tpush\tdword stdin\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tor\teax, eax\n"
"\tje\t.done\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:668
#, no-wrap
msgid ""
"\t; convert it to hex\n"
"\tmovzx\teax, byte [buffer]\n"
"\tmov\tedx, eax\n"
"\tshr\tdl, 4\n"
"\tmov\tdl, [hex+edx]\n"
"\tmov\t[buffer], dl\n"
"\tand\tal, 0Fh\n"
"\tmov\tal, [hex+eax]\n"
"\tmov\t[buffer+1], al\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:676
#, no-wrap
msgid ""
"\t; print it\n"
"\tpush\tdword 3\n"
"\tpush\tdword buffer\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tjmp\tshort _start\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:680
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:783
#, no-wrap
msgid ""
".done:\n"
"\tpush\tdword 0\n"
"\tsys.exit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:688
msgid ""
"In the data section we create an array called `hex`. It contains the 16 "
"hexadecimal digits in ascending order. The array is followed by a buffer "
"which we will use for both input and output. The first two bytes of the "
"buffer are initially set to `0`. This is where we will write the two "
"hexadecimal digits (the first byte also is where we will read the input). "
"The third byte is a space."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:690
msgid ""
"The code section consists of four parts: Reading the byte, converting it to "
"a hexadecimal number, writing the result, and eventually exiting the program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:696
msgid ""
"To read the byte, we ask the system to read one byte from [."
"filename]#stdin#, and store it in the first byte of the `buffer`. The "
"system returns the number of bytes read in `EAX`. This will be `1` while "
"data is coming, or `0`, when no more input data is available. Therefore, we "
"check the value of `EAX`. If it is `0`, we jump to `.done`, otherwise we "
"continue."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:700
msgid ""
"For simplicity sake, we are ignoring the possibility of an error condition "
"at this time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:705
msgid ""
"The hexadecimal conversion reads the byte from the `buffer` into `EAX`, or "
"actually just `AL`, while clearing the remaining bits of `EAX` to zeros. We "
"also copy the byte to `EDX` because we need to convert the upper four bits "
"(nibble) separately from the lower four bits. We store the result in the "
"first two bytes of the buffer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:708
msgid ""
"Next, we ask the system to write the three bytes of the buffer, i.e., the "
"two hexadecimal digits and the blank space, to [.filename]#stdout#. We then "
"jump back to the beginning of the program and process the next byte."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:710
msgid ""
"Once there is no more input left, we ask the system to exit our program, "
"returning a zero, which is the traditional value meaning the program was "
"successful."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:712
msgid ""
"Go ahead, and save the code in a file named [.filename]#hex.asm#, then type "
"the following (the `^D` means press the control key and type `D` while "
"holding the control key down):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:721
#, no-wrap
msgid ""
"% nasm -f elf hex.asm\n"
"% ld -s -o hex hex.o\n"
"% ./hex\n"
"Hello, World!\n"
"48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 0A Here I come!\n"
"48 65 72 65 20 49 20 63 6F 6D 65 21 0A ^D %\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:727
msgid ""
"If you are migrating to UNIX(R) from MS-DOS(R), you may be wondering why "
"each line ends with `0A` instead of `0D 0A`. This is because UNIX(R) does "
"not use the cr/lf convention, but a \"new line\" convention, which is `0A` "
"in hexadecimal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:732
msgid ""
"Can we improve this? Well, for one, it is a bit confusing because once we "
"have converted a line of text, our input no longer starts at the beginning "
"of the line. We can modify it to print a new line instead of a space after "
"each `0A`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:745
#, no-wrap
msgid ""
"section\t.text\n"
"global\t_start\n"
"_start:\n"
"\tmov\tcl, ' '\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:755
#, no-wrap
msgid ""
".loop:\n"
"\t; read a byte from stdin\n"
"\tpush\tdword 1\n"
"\tpush\tdword buffer\n"
"\tpush\tdword stdin\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tor\teax, eax\n"
"\tje\t.done\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:762
#, no-wrap
msgid ""
"\t; convert it to hex\n"
"\tmovzx\teax, byte [buffer]\n"
"\tmov\t[buffer+2], cl\n"
"\tcmp\tal, 0Ah\n"
"\tjne\t.hex\n"
"\tmov\t[buffer+2], al\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:771
#, no-wrap
msgid ""
".hex:\n"
"\tmov\tedx, eax\n"
"\tshr\tdl, 4\n"
"\tmov\tdl, [hex+edx]\n"
"\tmov\t[buffer], dl\n"
"\tand\tal, 0Fh\n"
"\tmov\tal, [hex+eax]\n"
"\tmov\t[buffer+1], al\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:779
#, no-wrap
msgid ""
"\t; print it\n"
"\tpush\tdword 3\n"
"\tpush\tdword buffer\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tjmp\tshort .loop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:787
msgid ""
"We have stored the space in the `CL` register. We can do this safely "
"because, unlike Microsoft(R) Windows(R), UNIX(R) system calls do not modify "
"the value of any register they do not use to return a value in."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:791
msgid ""
"That means we only need to set `CL` once. We have, therefore, added a new "
"label `.loop` and jump to it for the next byte instead of jumping at "
"`_start`. We have also added the `.hex` label so we can either have a blank "
"space or a new line as the third byte of the `buffer`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:793
msgid ""
"Once you have changed [.filename]#hex.asm# to reflect these changes, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:804
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1063
#, no-wrap
msgid ""
"% nasm -f elf hex.asm\n"
"% ld -s -o hex hex.o\n"
"% ./hex\n"
"Hello, World!\n"
"48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 0A\n"
"Here I come!\n"
"48 65 72 65 20 49 20 63 6F 6D 65 21 0A\n"
"^D %\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:808
msgid ""
"That looks better. But this code is quite inefficient! We are making a "
"system call for every single byte twice (once to read it, another time to "
"write the output)."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:810
#, no-wrap
msgid "Buffered Input and Output"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:815
msgid ""
"We can improve the efficiency of our code by buffering our input and "
"output. We create an input buffer and read a whole sequence of bytes at one "
"time. Then we fetch them one by one from the buffer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:818
msgid ""
"We also create an output buffer. We store our output in it until it is "
"full. At that time we ask the kernel to write the contents of the buffer to "
"[.filename]#stdout#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:822
msgid ""
"The program ends when there is no more input. But we still need to ask the "
"kernel to write the contents of our output buffer to [.filename]#stdout# one "
"last time, otherwise some of our output would make it to the output buffer, "
"but never be sent out. Do not forget that, or you will be wondering why "
"some of your output is missing."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:828
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:956
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1223
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2341
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3339
#, no-wrap
msgid "%define\tBUFSIZE\t2048\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:831
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:959
#, no-wrap
msgid ""
"section\t.data\n"
"hex\tdb\t'0123456789ABCDEF'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:835
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:963
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1232
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2355
#, no-wrap
msgid ""
"section .bss\n"
"ibuffer\tresb\tBUFSIZE\n"
"obuffer\tresb\tBUFSIZE\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:843
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:971
#, no-wrap
msgid ""
"section\t.text\n"
"global\t_start\n"
"_start:\n"
"\tsub\teax, eax\n"
"\tsub\tebx, ebx\n"
"\tsub\tecx, ecx\n"
"\tmov\tedi, obuffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:847
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:975
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2503
#, no-wrap
msgid ""
".loop:\n"
"\t; read a byte from stdin\n"
"\tcall\tgetchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:853
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:981
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1285
#, no-wrap
msgid ""
"\t; convert it to hex\n"
"\tmov\tdl, al\n"
"\tshr\tal, 4\n"
"\tmov\tal, [hex+eax]\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:858
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:986
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1290
#, no-wrap
msgid ""
"\tmov\tal, dl\n"
"\tand\tal, 0Fh\n"
"\tmov\tal, [hex+eax]\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:863
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:991
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1295
#, no-wrap
msgid ""
"\tmov\tal, ' '\n"
"\tcmp\tdl, 0Ah\n"
"\tjne\t.put\n"
"\tmov\tal, dl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:867
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2514
#, no-wrap
msgid ""
".put:\n"
"\tcall\tputchar\n"
"\tjmp\tshort .loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:872
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1003
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1307
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2536
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3850
#, no-wrap
msgid ""
"align 4\n"
"getchar:\n"
"\tor\tebx, ebx\n"
"\tjne\t.fetch\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:874
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1005
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1309
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2538
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3852
#, no-wrap
msgid "\tcall\tread\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:879
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1010
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1314
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2543
#, no-wrap
msgid ""
".fetch:\n"
"\tlodsb\n"
"\tdec\tebx\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:892
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1023
#, no-wrap
msgid ""
"read:\n"
"\tpush\tdword BUFSIZE\n"
"\tmov\tesi, ibuffer\n"
"\tpush\tesi\n"
"\tpush\tdword stdin\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tmov\tebx, eax\n"
"\tor\teax, eax\n"
"\tje\t.done\n"
"\tsub\teax, eax\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:898
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1029
#, no-wrap
msgid ""
"align 4\n"
".done:\n"
"\tcall\twrite\t\t; flush output buffer\n"
"\tpush\tdword 0\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:906
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1037
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1350
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2583
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3889
#, no-wrap
msgid ""
"align 4\n"
"putchar:\n"
"\tstosb\n"
"\tinc\tecx\n"
"\tcmp\tecx, BUFSIZE\n"
"\tje\twrite\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:918
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1049
#, no-wrap
msgid ""
"align 4\n"
"write:\n"
"\tsub\tedi, ecx\t; start of buffer\n"
"\tpush\tecx\n"
"\tpush\tedi\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tsub\teax, eax\n"
"\tsub\tecx, ecx\t; buffer is empty now\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:924
msgid ""
"We now have a third section in the source code, named `.bss`. This section "
"is not included in our executable file, and, therefore, cannot be "
"initialized. We use `resb` instead of `db`. It simply reserves the "
"requested size of uninitialized memory for our use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:928
msgid ""
"We take advantage of the fact that the system does not modify the registers: "
"We use registers for what, otherwise, would have to be global variables "
"stored in the `.data` section. This is also why the UNIX(R) convention of "
"passing parameters to system calls on the stack is superior to the Microsoft "
"convention of passing them in the registers: We can keep the registers for "
"our own use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:932
msgid ""
"We use `EDI` and `ESI` as pointers to the next byte to be read from or "
"written to. We use `EBX` and `ECX` to keep count of the number of bytes in "
"the two buffers, so we know when to dump the output to, or read more input "
"from, the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:934
msgid "Let us see how it works now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:945
#, no-wrap
msgid ""
"% nasm -f elf hex.asm\n"
"% ld -s -o hex hex.o\n"
"% ./hex\n"
"Hello, World!\n"
"Here I come!\n"
"48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 0A\n"
"48 65 72 65 20 49 20 63 6F 6D 65 21 0A\n"
"^D %\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:950
msgid ""
"Not what you expected? The program did not print the output until we pressed "
"`^D`. That is easy to fix by inserting three lines of code to write the "
"output every time we have converted a new line to `0A`. I have marked the "
"three lines with > (do not copy the > in your [.filename]#hex.asm#)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:998
#, no-wrap
msgid ""
".put:\n"
"\tcall\tputchar\n"
">\tcmp\tal, 0Ah\n"
">\tjne\t.loop\n"
">\tcall\twrite\n"
"\tjmp\tshort .loop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1052
msgid "Now, let us see how it works:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1066
msgid "Not bad for a 644-byte executable, is it!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1071
msgid ""
"This approach to buffered input/output still contains a hidden danger. I "
"will discuss-and fix-it later, when I talk about the <<x86-buffered-dark-"
"side,dark side of buffering>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1074
#, no-wrap
msgid "How to Unread a Character"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1080
msgid ""
"This may be a somewhat advanced topic, mostly of interest to programmers "
"familiar with the theory of compilers. If you wish, you may <<x86-command-"
"line,skip to the next section>>, and perhaps read this later."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1086
msgid ""
"While our sample program does not require it, more sophisticated filters "
"often need to look ahead. In other words, they may need to see what the "
"next character is (or even several characters). If the next character is of "
"a certain value, it is part of the token currently being processed. "
"Otherwise, it is not."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1090
msgid ""
"For example, you may be parsing the input stream for a textual string (e.g., "
"when implementing a language compiler): If a character is followed by "
"another character, or perhaps a digit, it is part of the token you are "
"processing. If it is followed by white space, or some other value, then it "
"is not part of the current token."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1092
msgid ""
"This presents an interesting problem: How to return the next character back "
"to the input stream, so it can be read again later?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1096
msgid ""
"One possible solution is to store it in a character variable, then set a "
"flag. We can modify `getchar` to check the flag, and if it is set, fetch "
"the byte from that variable instead of the input buffer, and reset the "
"flag. But, of course, that slows us down."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1101
msgid ""
"The C language has an `ungetc()` function, just for that purpose. Is there "
"a quick way to implement it in our code? I would like you to scroll back up "
"and take a look at the `getchar` procedure and see if you can find a nice "
"and fast solution before reading the next paragraph. Then come back here "
"and see my own solution."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1103
msgid ""
"The key to returning a character back to the stream is in how we are getting "
"the characters to start with:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1106
msgid ""
"First we check if the buffer is empty by testing the value of `EBX`. If it "
"is zero, we call the `read` procedure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1109
msgid ""
"If we do have a character available, we use `lodsb`, then decrease the value "
"of `EBX`. The `lodsb` instruction is effectively identical to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1114
#, no-wrap
msgid ""
"mov\tal, [esi]\n"
"\tinc\tesi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1119
msgid ""
"The byte we have fetched remains in the buffer until the next time `read` is "
"called. We do not know when that happens, but we do know it will not happen "
"until the next call to `getchar`. Hence, to \"return\" the last-read byte "
"back to the stream, all we have to do is decrease the value of `ESI` and "
"increase the value of `EBX`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1126
#, no-wrap
msgid ""
"ungetc:\n"
"\tdec\tesi\n"
"\tinc\tebx\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1130
msgid ""
"But, be careful! We are perfectly safe doing this if our look-ahead is at "
"most one character at a time. If we are examining more than one upcoming "
"character and call `ungetc` several times in a row, it will work most of the "
"time, but not all the time (and will be tough to debug). Why?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1133
msgid ""
"Because as long as `getchar` does not have to call `read`, all of the pre-"
"read bytes are still in the buffer, and our `ungetc` works without a "
"glitch. But the moment `getchar` calls `read`, the contents of the buffer "
"change."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1135
msgid ""
"We can always rely on `ungetc` working properly on the last character we "
"have read with `getchar`, but not on anything we have read before that."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1137
msgid ""
"If your program reads more than one byte ahead, you have at least two "
"choices:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1140
msgid ""
"If possible, modify the program so it only reads one byte ahead. This is "
"the simplest solution."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1144
msgid ""
"If that option is not available, first of all determine the maximum number "
"of characters your program needs to return to the input stream at one time. "
"Increase that number slightly, just to be sure, preferably to a multiple of "
"16-so it aligns nicely. Then modify the `.bss` section of your code, and "
"create a small \"spare\" buffer right before your input buffer, something "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1151
#, no-wrap
msgid ""
"section\t.bss\n"
"\tresb\t16\t; or whatever the value you came up with\n"
"ibuffer\tresb\tBUFSIZE\n"
"obuffer\tresb\tBUFSIZE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1154
msgid ""
"You also need to modify your `ungetc` to pass the value of the byte to unget "
"in `AL`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1162
#, no-wrap
msgid ""
"ungetc:\n"
"\tdec\tesi\n"
"\tinc\tebx\n"
"\tmov\t[esi], al\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1165
msgid ""
"With this modification, you can call `ungetc` up to 17 times in a row safely "
"(the first call will still be within the buffer, the remaining 16 may be "
"either within the buffer or within the \"spare\")."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1167
#, no-wrap
msgid "Command Line Arguments"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1171
msgid ""
"Our hex program will be more useful if it can read the names of an input and "
"output file from its command line, i.e., if it can process the command line "
"arguments. But... Where are they?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1175
msgid ""
"Before a UNIX(R) system starts a program, it ``push``es some data on the "
"stack, then jumps at the `_start` label of the program. Yes, I said jumps, "
"not calls. That means the data can be accessed by reading `[esp+offset]`, "
"or by simply ``pop``ping it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1178
msgid ""
"The value at the top of the stack contains the number of command line "
"arguments. It is traditionally called `argc`, for \"argument count.\""
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1183
msgid ""
"Command line arguments follow next, all `argc` of them. These are typically "
"referred to as `argv`, for \"argument value(s).\" That is, we get `argv[0]`, "
"`argv[1]`, `...`, `argv[argc-1]`. These are not the actual arguments, but "
"pointers to arguments, i.e., memory addresses of the actual arguments. The "
"arguments themselves are NUL-terminated character strings."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1185
msgid ""
"The `argv` list is followed by a NULL pointer, which is simply a `0`. There "
"is more, but this is enough for our purposes right now."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1190
msgid ""
"If you have come from the MS-DOS(R) programming environment, the main "
"difference is that each argument is in a separate string. The second "
"difference is that there is no practical limit on how many arguments there "
"can be."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1194
msgid ""
"Armed with this knowledge, we are almost ready for the next version of [."
"filename]#hex.asm#. First, however, we need to add a few lines to [."
"filename]#system.inc#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1196
msgid ""
"First, we need to add two new entries to our list of system call numbers:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1201
#, no-wrap
msgid ""
"%define\tSYS_open\t5\n"
"%define\tSYS_close\t6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1204
msgid "Then we add two new macros at the end of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1210
#, no-wrap
msgid ""
"%macro\tsys.open\t0\n"
"\tsystem\tSYS_open\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1214
#, no-wrap
msgid ""
"%macro\tsys.close\t0\n"
"\tsystem\tSYS_close\n"
"%endmacro\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1217
msgid "Here, then, is our modified source code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1228
#, no-wrap
msgid ""
"section\t.data\n"
"fd.in\tdd\tstdin\n"
"fd.out\tdd\tstdout\n"
"hex\tdb\t'0123456789ABCDEF'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1238
#, no-wrap
msgid ""
"section\t.text\n"
"align 4\n"
"err:\n"
"\tpush\tdword 1\t\t; return failure\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1243
#, no-wrap
msgid ""
"align 4\n"
"global\t_start\n"
"_start:\n"
"\tadd\tesp, byte 8\t; discard argc and argv[0]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1246
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1258
#, no-wrap
msgid ""
"\tpop\tecx\n"
"\tjecxz\t.init\t\t; no more arguments\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1252
#, no-wrap
msgid ""
"\t; ECX contains the path to input file\n"
"\tpush\tdword 0\t\t; O_RDONLY\n"
"\tpush\tecx\n"
"\tsys.open\n"
"\tjc\terr\t\t; open failed\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1255
#, no-wrap
msgid ""
"\tadd\tesp, byte 8\n"
"\tmov\t[fd.in], eax\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1266
#, no-wrap
msgid ""
"\t; ECX contains the path to output file\n"
"\tpush\tdword 420\t; file mode (644 octal)\n"
"\tpush\tdword 0200h | 0400h | 01h\n"
"\t; O_CREAT | O_TRUNC | O_WRONLY\n"
"\tpush\tecx\n"
"\tsys.open\n"
"\tjc\terr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1269
#, no-wrap
msgid ""
"\tadd\tesp, byte 12\n"
"\tmov\t[fd.out], eax\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1275
#, no-wrap
msgid ""
".init:\n"
"\tsub\teax, eax\n"
"\tsub\tebx, ebx\n"
"\tsub\tecx, ecx\n"
"\tmov\tedi, obuffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1279
#, no-wrap
msgid ""
".loop:\n"
"\t; read a byte from input file or stdin\n"
"\tcall\tgetchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1302
#, no-wrap
msgid ""
".put:\n"
"\tcall\tputchar\n"
"\tcmp\tal, dl\n"
"\tjne\t.loop\n"
"\tcall\twrite\n"
"\tjmp\tshort .loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1327
#, no-wrap
msgid ""
"read:\n"
"\tpush\tdword BUFSIZE\n"
"\tmov\tesi, ibuffer\n"
"\tpush\tesi\n"
"\tpush\tdword [fd.in]\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tmov\tebx, eax\n"
"\tor\teax, eax\n"
"\tje\t.done\n"
"\tsub\teax, eax\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1331
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2564
#, no-wrap
msgid ""
"align 4\n"
".done:\n"
"\tcall\twrite\t\t; flush output buffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1335
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2568
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3822
#, no-wrap
msgid ""
"\t; close files\n"
"\tpush\tdword [fd.in]\n"
"\tsys.close\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1338
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2571
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3825
#, no-wrap
msgid ""
"\tpush\tdword [fd.out]\n"
"\tsys.close\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1342
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2575
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3831
#, no-wrap
msgid ""
"\t; return success\n"
"\tpush\tdword 0\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1362
#, no-wrap
msgid ""
"align 4\n"
"write:\n"
"\tsub\tedi, ecx\t; start of buffer\n"
"\tpush\tecx\n"
"\tpush\tedi\n"
"\tpush\tdword [fd.out]\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tsub\teax, eax\n"
"\tsub\tecx, ecx\t; buffer is empty now\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1366
msgid ""
"In our `.data` section we now have two new variables, `fd.in` and `fd.out`. "
"We store the input and output file descriptors here."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1368
msgid ""
"In the `.text` section we have replaced the references to `stdin` and "
"`stdout` with `[fd.in]` and `[fd.out]`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1371
msgid ""
"The `.text` section now starts with a simple error handler, which does "
"nothing but exit the program with a return value of `1`. The error handler "
"is before `_start` so we are within a short distance from where the errors "
"occur."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1374
msgid ""
"Naturally, the program execution still begins at `_start`. First, we remove "
"`argc` and `argv[0]` from the stack: They are of no interest to us (in this "
"program, that is)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1380
msgid ""
"We pop `argv[1]` to `ECX`. This register is particularly suited for "
"pointers, as we can handle NULL pointers with `jecxz`. If `argv[1]` is not "
"NULL, we try to open the file named in the first argument. Otherwise, we "
"continue the program as before: Reading from `stdin`, writing to `stdout`. "
"If we fail to open the input file (e.g., it does not exist), we jump to the "
"error handler and quit."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1385
msgid ""
"If all went well, we now check for the second argument. If it is there, we "
"open the output file. Otherwise, we send the output to `stdout`. If we "
"fail to open the output file (e.g., it exists and we do not have the write "
"permission), we, again, jump to the error handler."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1387
msgid ""
"The rest of the code is the same as before, except we close the input and "
"output files before exiting, and, as mentioned, we use `[fd.in]` and `[fd."
"out]`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1389
msgid "Our executable is now a whopping 768 bytes long."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1392
msgid ""
"Can we still improve it? Of course! Every program can be improved. Here are "
"a few ideas of what we could do:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1394
msgid "Have our error handler print a message to `stderr`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1395
msgid "Add error handlers to the `read` and `write` functions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1396
msgid ""
"Close `stdin` when we open an input file, `stdout` when we open an output "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1397
msgid ""
"Add command line switches, such as `-i` and `-o`, so we can list the input "
"and output files in any order, or perhaps read from `stdin` and write to a "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1398
msgid "Print a usage message if command line arguments are incorrect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1400
msgid ""
"I shall leave these enhancements as an exercise to the reader: You already "
"know everything you need to know to implement them."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1402
#, no-wrap
msgid "UNIX(R) Environment"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1406
msgid ""
"An important UNIX(R) concept is the environment, which is defined by "
"_environment variables_. Some are set by the system, others by you, yet "
"others by the shell, or any program that loads another program."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1408
#, no-wrap
msgid "How to Find Environment Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1413
msgid ""
"I said earlier that when a program starts executing, the stack contains "
"`argc` followed by the NULL-terminated `argv` array, followed by something "
"else. The \"something else\" is the _environment_, or, to be more precise, "
"a NULL-terminated array of pointers to _environment variables_. This is "
"often referred to as `env`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1416
msgid ""
"The structure of `env` is the same as that of `argv`, a list of memory "
"addresses followed by a NULL (`0`). In this case, there is no `\"envc\"`-we "
"figure out where the array ends by searching for the final NULL."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1419
msgid ""
"The variables usually come in the `name=value` format, but sometimes the "
"`=value` part may be missing. We need to account for that possibility."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1421
#, no-wrap
msgid "webvars"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1425
msgid ""
"I could just show you some code that prints the environment the same way the "
"UNIX(R) env command does. But I thought it would be more interesting to "
"write a simple assembly language CGI utility."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1427
#, no-wrap
msgid "CGI: a Quick Overview"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1430
msgid ""
"I have a http://www.whizkidtech.redprince.net/cgi-bin/tutorial[detailed CGI "
"tutorial] on my web site, but here is a very quick overview of CGI:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1432
msgid ""
"The web server communicates with the CGI program by setting _environment "
"variables_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1433
msgid ""
"The CGI program sends its output to [.filename]#stdout#. The web server "
"reads it from there."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1434
msgid "It must start with an HTTP header followed by two blank lines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1435
msgid ""
"It then prints the HTML code, or whatever other type of data it is producing."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1440
msgid ""
"While certain _environment variables_ use standard names, others vary, "
"depending on the web server. That makes webvars quite a useful diagnostic "
"tool."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1443
#, no-wrap
msgid "The Code"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1447
msgid ""
"Our webvars program, then, must send out the HTTP header followed by some "
"HTML mark-up. It then must read the _environment variables_ one by one and "
"send them out as part of the HTML page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1450
msgid ""
"The code follows. I placed comments and explanations right inside the code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1487
#, no-wrap
msgid ""
";;;;;;; webvars.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
";\n"
"; Copyright (c) 2000 G. Adam Stanislav\n"
"; All rights reserved.\n"
";\n"
"; Redistribution and use in source and binary forms, with or without\n"
"; modification, are permitted provided that the following conditions\n"
"; are met:\n"
"; 1. Redistributions of source code must retain the above copyright\n"
"; notice, this list of conditions and the following disclaimer.\n"
"; 2. Redistributions in binary form must reproduce the above copyright\n"
"; notice, this list of conditions and the following disclaimer in the\n"
"; documentation and/or other materials provided with the distribution.\n"
";\n"
"; THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n"
"; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"
"; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"
"; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n"
"; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n"
"; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n"
"; OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"
"; HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n"
"; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n"
"; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n"
"; SUCH DAMAGE.\n"
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
";\n"
"; Version 1.0\n"
";\n"
"; Started:\t 8-Dec-2000\n"
"; Updated:\t 8-Dec-2000\n"
";\n"
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
"%include\t'system.inc'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1524
#, no-wrap
msgid ""
"section\t.data\n"
"http\tdb\t'Content-type: text/html', 0Ah, 0Ah\n"
"\tdb\t'<?xml version=\"1.0\" encoding=\"utf-8\"?>', 0Ah\n"
"\tdb\t'<!DOCTYPE html PUBLIC \"-//W3C/DTD XHTML Strict//EN\" '\n"
"\tdb\t'\"DTD/xhtml1-strict.dtd\">', 0Ah\n"
"\tdb\t'<html xmlns=\"http://www.w3.org/1999/xhtml\" '\n"
"\tdb\t'xml.lang=\"en\" lang=\"en\">', 0Ah\n"
"\tdb\t'<head>', 0Ah\n"
"\tdb\t'<title>Web Environment</title>', 0Ah\n"
"\tdb\t'<meta name=\"author\" content=\"G. Adam Stanislav\" />', 0Ah\n"
"\tdb\t'</head>', 0Ah, 0Ah\n"
"\tdb\t'<body bgcolor=\"#ffffff\" text=\"#000000\" link=\"#0000ff\" '\n"
"\tdb\t'vlink=\"#840084\" alink=\"#0000ff\">', 0Ah\n"
"\tdb\t'<div class=\"webvars\">', 0Ah\n"
"\tdb\t'<h1>Web Environment</h1>', 0Ah\n"
"\tdb\t'<p>The following <b>environment variables</b> are defined '\n"
"\tdb\t'on this web server:</p>', 0Ah, 0Ah\n"
"\tdb\t'<table align=\"center\" width=\"80\" border=\"0\" cellpadding=\"10\" '\n"
"\tdb\t'cellspacing=\"0\" class=\"webvars\">', 0Ah\n"
"httplen\tequ\t$-http\n"
"left\tdb\t'<tr>', 0Ah\n"
"\tdb\t'<td class=\"name\"><tt>'\n"
"leftlen\tequ\t$-left\n"
"middle\tdb\t'</tt></td>', 0Ah\n"
"\tdb\t'<td class=\"value\"><tt><b>'\n"
"midlen\tequ\t$-middle\n"
"undef\tdb\t'<i>(undefined)</i>'\n"
"undeflen\tequ\t$-undef\n"
"right\tdb\t'</b></tt></td>', 0Ah\n"
"\tdb\t'</tr>', 0Ah\n"
"rightlen\tequ\t$-right\n"
"wrap\tdb\t'</table>', 0Ah\n"
"\tdb\t'</div>', 0Ah\n"
"\tdb\t'</body>', 0Ah\n"
"\tdb\t'</html>', 0Ah, 0Ah\n"
"wraplen\tequ\t$-wrap\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1534
#, no-wrap
msgid ""
"section\t.text\n"
"global\t_start\n"
"_start:\n"
"\t; First, send out all the http and xhtml stuff that is\n"
"\t; needed before we start showing the environment\n"
"\tpush\tdword httplen\n"
"\tpush\tdword http\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1538
#, no-wrap
msgid ""
"\t; Now find how far on the stack the environment pointers\n"
"\t; are. We have 12 bytes we have pushed before \"argc\"\n"
"\tmov\teax, [esp+12]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1553
#, no-wrap
msgid ""
"\t; We need to remove the following from the stack:\n"
"\t;\n"
"\t;\tThe 12 bytes we pushed for sys.write\n"
"\t;\tThe 4 bytes of argc\n"
"\t;\tThe EAX*4 bytes of argv\n"
"\t;\tThe 4 bytes of the NULL after argv\n"
"\t;\n"
"\t; Total:\n"
"\t;\t20 + eax * 4\n"
"\t;\n"
"\t; Because stack grows down, we need to ADD that many bytes\n"
"\t; to ESP.\n"
"\tlea\tesp, [esp+20+eax*4]\n"
"\tcld\t\t; This should already be the case, but let's be sure.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1559
#, no-wrap
msgid ""
"\t; Loop through the environment, printing it out\n"
".loop:\n"
"\tpop\tedi\n"
"\tor\tedi, edi\t; Done yet?\n"
"\tje\tnear .wrap\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1565
#, no-wrap
msgid ""
"\t; Print the left part of HTML\n"
"\tpush\tdword leftlen\n"
"\tpush\tdword left\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1576
#, no-wrap
msgid ""
"\t; It may be tempting to search for the '=' in the env string next.\n"
"\t; But it is possible there is no '=', so we search for the\n"
"\t; terminating NUL first.\n"
"\tmov\tesi, edi\t; Save start of string\n"
"\tsub\tecx, ecx\n"
"\tnot\tecx\t\t; ECX = FFFFFFFF\n"
"\tsub\teax, eax\n"
"repne\tscasb\n"
"\tnot\tecx\t\t; ECX = string length + 1\n"
"\tmov\tebx, ecx\t; Save it in EBX\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1583
#, no-wrap
msgid ""
"\t; Now is the time to find '='\n"
"\tmov\tedi, esi\t; Start of string\n"
"\tmov\tal, '='\n"
"repne\tscasb\n"
"\tnot\tecx\n"
"\tadd\tecx, ebx\t; Length of name\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1588
#, no-wrap
msgid ""
"\tpush\tecx\n"
"\tpush\tesi\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1594
#, no-wrap
msgid ""
"\t; Print the middle part of HTML table code\n"
"\tpush\tdword midlen\n"
"\tpush\tdword middle\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1598
#, no-wrap
msgid ""
"\t; Find the length of the value\n"
"\tnot\tecx\n"
"\tlea\tebx, [ebx+ecx-1]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1602
#, no-wrap
msgid ""
"\t; Print \"undefined\" if 0\n"
"\tor\tebx, ebx\n"
"\tjne\t.value\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1605
#, no-wrap
msgid ""
"\tmov\tebx, undeflen\n"
"\tmov\tedi, undef\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1611
#, no-wrap
msgid ""
".value:\n"
"\tpush\tebx\n"
"\tpush\tedi\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1617
#, no-wrap
msgid ""
"\t; Print the right part of the table row\n"
"\tpush\tdword rightlen\n"
"\tpush\tdword right\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1620
#, no-wrap
msgid ""
"\t; Get rid of the 60 bytes we have pushed\n"
"\tadd\tesp, byte 60\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1623
#, no-wrap
msgid ""
"\t; Get the next variable\n"
"\tjmp\t.loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1630
#, no-wrap
msgid ""
".wrap:\n"
"\t; Print the rest of HTML\n"
"\tpush\tdword wraplen\n"
"\tpush\tdword wrap\n"
"\tpush\tdword stdout\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1634
#, no-wrap
msgid ""
"\t; Return success\n"
"\tpush\tdword 0\n"
"\tsys.exit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1638
msgid ""
"This code produces a 1,396-byte executable. Most of it is data, i.e., the "
"HTML mark-up we need to send out."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1640
msgid "Assemble and link it as usual:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1645
#, no-wrap
msgid ""
"% nasm -f elf webvars.asm\n"
"% ld -s -o webvars webvars.o\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1649
msgid ""
"To use it, you need to upload [.filename]#webvars# to your web server. "
"Depending on how your web server is set up, you may have to store it in a "
"special [.filename]#cgi-bin# directory, or perhaps rename it with a [."
"filename]#.cgi# extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1653
msgid ""
"Then you need to use your browser to view its output. To see its output on "
"my web server, please go to http://www.int80h.org/webvars/[http://www.int80h."
"org/webvars/]. If curious about the additional environment variables "
"present in a password protected web directory, go to http://www.int80h.org/"
"private/[http://www.int80h.org/private/], using the name `asm` and password "
"`programmer`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1655
#, no-wrap
msgid "Working with Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1660
msgid ""
"We have already done some basic file work: We know how to open and close "
"them, how to read and write them using buffers. But UNIX(R) offers much "
"more functionality when it comes to files. We will examine some of it in "
"this section, and end up with a nice file conversion utility."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1663
msgid ""
"Indeed, let us start at the end, that is, with the file conversion utility. "
"It always makes programming easier when we know from the start what the end "
"product is supposed to do."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1669
msgid ""
"One of the first programs I wrote for UNIX(R) was link:ftp://ftp.int80h.org/"
"unix/tuc/[tuc], a text-to-UNIX(R) file converter. It converts a text file "
"from other operating systems to a UNIX(R) text file. In other words, it "
"changes from different kind of line endings to the newline convention of "
"UNIX(R). It saves the output in a different file. Optionally, it converts "
"a UNIX(R) text file to a DOS text file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1673
msgid ""
"I have used tuc extensively, but always only to convert from some other OS "
"to UNIX(R), never the other way. I have always wished it would just "
"overwrite the file instead of me having to send the output to a different "
"file. Most of the time, I end up using it like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1678
#, no-wrap
msgid ""
"% tuc myfile tempfile\n"
"% mv tempfile myfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1681
msgid ""
"It would be nice to have a ftuc, i.e., _fast tuc_, and use it like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1685
#, no-wrap
msgid "% ftuc myfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1688
msgid ""
"In this chapter, then, we will write ftuc in assembly language (the original "
"tuc is in C), and study various file-oriented kernel services in the process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1690
msgid ""
"At first sight, such a file conversion is very simple: All you have to do is "
"strip the carriage returns, right?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1692
msgid ""
"If you answered yes, think again: That approach will work most of the time "
"(at least with MS DOS text files), but will fail occasionally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1697
msgid ""
"The problem is that not all non UNIX(R) text files end their line with the "
"carriage return / line feed sequence. Some use carriage returns without "
"line feeds. Others combine several blank lines into a single carriage "
"return followed by several line feeds. And so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1699
msgid ""
"A text file converter, then, must be able to handle any possible line "
"endings:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1701
msgid "carriage return / line feed"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1702
msgid "carriage return"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1703
msgid "line feed / carriage return"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1704
msgid "line feed"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1706
msgid ""
"It should also handle files that use some kind of a combination of the above "
"(e.g., carriage return followed by several line feeds)."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1708
#, no-wrap
msgid "Finite State Machine"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1715
msgid ""
"The problem is easily solved by the use of a technique called _finite state "
"machine_, originally developed by the designers of digital electronic "
"circuits. A _finite state machine_ is a digital circuit whose output is "
"dependent not only on its input but on its previous input, i.e., on its "
"state. The microprocessor is an example of a _finite state machine_: Our "
"assembly language code is assembled to machine language in which some "
"assembly language code produces a single byte of machine language, while "
"others produce several bytes. As the microprocessor fetches the bytes from "
"the memory one by one, some of them simply change its state rather than "
"produce some output. When all the bytes of the op code are fetched, the "
"microprocessor produces some output, or changes the value of a register, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1718
msgid ""
"Because of that, all software is essentially a sequence of state "
"instructions for the microprocessor. Nevertheless, the concept of _finite "
"state machine_ is useful in software design as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1721
msgid ""
"Our text file converter can be designer as a _finite state machine_ with "
"three possible states. We could call them states 0-2, but it will make our "
"life easier if we give them symbolic names:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1723
msgid "ordinary"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1724
msgid "cr"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1725
msgid "lf"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1727
msgid ""
"Our program will start in the ordinary state. During this state, the program "
"action depends on its input as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1730
msgid ""
"If the input is anything other than a carriage return or line feed, the "
"input is simply passed on to the output. The state remains unchanged."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1732
msgid ""
"If the input is a carriage return, the state is changed to cr. The input is "
"then discarded, i.e., no output is made."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1734
msgid ""
"If the input is a line feed, the state is changed to lf. The input is then "
"discarded."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1737
msgid ""
"Whenever we are in the cr state, it is because the last input was a carriage "
"return, which was unprocessed. What our software does in this state again "
"depends on the current input:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1739
msgid ""
"If the input is anything other than a carriage return or line feed, output a "
"line feed, then output the input, then change the state to ordinary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1740
msgid ""
"If the input is a carriage return, we have received two (or more) carriage "
"returns in a row. We discard the input, we output a line feed, and leave the "
"state unchanged."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1741
msgid ""
"If the input is a line feed, we output the line feed and change the state to "
"ordinary. Note that this is not the same as the first case above - if we "
"tried to combine them, we would be outputting two line feeds instead of one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1745
msgid ""
"Finally, we are in the lf state after we have received a line feed that was "
"not preceded by a carriage return. This will happen when our file already "
"is in UNIX(R) format, or whenever several lines in a row are expressed by a "
"single carriage return followed by several line feeds, or when line ends "
"with a line feed / carriage return sequence. Here is how we need to handle "
"our input in this state:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1747
msgid ""
"If the input is anything other than a carriage return or line feed, we "
"output a line feed, then output the input, then change the state to "
"ordinary. This is exactly the same action as in the cr state upon receiving "
"the same kind of input."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1748
msgid ""
"If the input is a carriage return, we discard the input, we output a line "
"feed, then change the state to ordinary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1749
msgid ""
"If the input is a line feed, we output the line feed, and leave the state "
"unchanged."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1751
#, no-wrap
msgid "The Final State"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1756
msgid ""
"The above _finite state machine_ works for the entire file, but leaves the "
"possibility that the final line end will be ignored. That will happen "
"whenever the file ends with a single carriage return or a single line feed. "
"I did not think of it when I wrote tuc, just to discover that occasionally "
"it strips the last line ending."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1759
msgid ""
"This problem is easily fixed by checking the state after the entire file was "
"processed. If the state is not ordinary, we simply need to output one last "
"line feed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1765
msgid ""
"Now that we have expressed our algorithm as a _finite state machine_, we "
"could easily design a dedicated digital electronic circuit (a \"chip\") to "
"do the conversion for us. Of course, doing so would be considerably more "
"expensive than writing an assembly language program."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1768
#, no-wrap
msgid "The Output Counter"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1773
msgid ""
"Because our file conversion program may be combining two characters into "
"one, we need to use an output counter. We initialize it to `0`, and "
"increase it every time we send a character to the output. At the end of the "
"program, the counter will tell us what size we need to set the file to."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1775
#, no-wrap
msgid "Implementing FSM in Software"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1779
msgid ""
"The hardest part of working with a _finite state machine_ is analyzing the "
"problem and expressing it as a _finite state machine_. That accomplished, "
"the software almost writes itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1782
msgid ""
"In a high-level language, such as C, there are several main approaches. One "
"is to use a `switch` statement which chooses what function should be run. "
"For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1797
#, no-wrap
msgid ""
"switch (state) {\n"
"\tdefault:\n"
"\tcase REGULAR:\n"
"\t\tregular(inputchar);\n"
"\t\tbreak;\n"
"\tcase CR:\n"
"\t\tcr(inputchar);\n"
"\t\tbreak;\n"
"\tcase LF:\n"
"\t\tlf(inputchar);\n"
"\t\tbreak;\n"
"\t}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1800
msgid ""
"Another approach is by using an array of function pointers, something like "
"this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1804
#, no-wrap
msgid "(output[state])(inputchar);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1807
msgid ""
"Yet another is to have `state` be a function pointer, set to point at the "
"appropriate function:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1811
#, no-wrap
msgid "(*state)(inputchar);\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1815
msgid ""
"This is the approach we will use in our program because it is very easy to "
"do in assembly language, and very fast, too. We will simply keep the "
"address of the right procedure in `EBX`, and then just issue:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1819
#, no-wrap
msgid "call\tebx\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1823
msgid ""
"This is possibly faster than hardcoding the address in the code because the "
"microprocessor does not have to fetch the address from the memory-it is "
"already stored in one of its registers. I said _possibly_ because with the "
"caching modern microprocessors do, either way may be equally fast."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1825
#, no-wrap
msgid "Memory Mapped Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1829
msgid ""
"Because our program works on a single file, we cannot use the approach that "
"worked for us before, i.e., to read from an input file and to write to an "
"output file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1837
msgid ""
"UNIX(R) allows us to map a file, or a section of a file, into memory. To do "
"that, we first need to open the file with the appropriate read/write flags. "
"Then we use the `mmap` system call to map it into the memory. One nice "
"thing about `mmap` is that it automatically works with virtual memory: We "
"can map more of the file into the memory than we have physical memory "
"available, yet still access it through regular memory op codes, such as "
"`mov`, `lods`, and `stos`. Whatever changes we make to the memory image of "
"the file will be written to the file by the system. We do not even have to "
"keep the file open: As long as it stays mapped, we can read from it and "
"write to it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1840
msgid ""
"The 32-bit Intel microprocessors can access up to four gigabytes of memory - "
"physical or virtual. The FreeBSD system allows us to use up to a half of it "
"for file mapping."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1844
msgid ""
"For simplicity sake, in this tutorial we will only convert files that can be "
"mapped into the memory in their entirety. There are probably not too many "
"text files that exceed two gigabytes in size. If our program encounters "
"one, it will simply display a message suggesting we use the original tuc "
"instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1850
msgid ""
"If you examine your copy of [.filename]#syscalls.master#, you will find two "
"separate syscalls named `mmap`. This is because of evolution of UNIX(R): "
"There was the traditional BSD `mmap`, syscall 71. That one was superseded "
"by the POSIX(R) `mmap`, syscall 197. The FreeBSD system supports both "
"because older programs were written by using the original BSD version. But "
"new software uses the POSIX(R) version, which is what we will use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1852
msgid "The [.filename]#syscalls.master# lists the POSIX(R) version like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1857
#, no-wrap
msgid ""
"197\tSTD\tBSD\t{ caddr_t mmap(caddr_t addr, size_t len, int prot, \\\n"
"\t\t\t int flags, int fd, long pad, off_t pos); }\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1861
msgid ""
"This differs slightly from what man:mmap[2] says. That is because man:"
"mmap[2] describes the C version."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1865
msgid ""
"The difference is in the `long pad` argument, which is not present in the C "
"version. However, the FreeBSD syscalls add a 32-bit pad after ``push``ing a "
"64-bit argument. In this case, `off_t` is a 64-bit value."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1867
msgid ""
"When we are finished working with a memory-mapped file, we unmap it with the "
"`munmap` syscall:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1871
msgid ""
"For an in-depth treatment of `mmap`, see W. Richard Stevens' http://www."
"int80h.org/cgi-bin/isbn?isbn=0130810819[Unix Network Programming, Volume 2, "
"Chapter 12]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1874
#, no-wrap
msgid "Determining File Size"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1877
msgid ""
"Because we need to tell `mmap` how many bytes of the file to map into the "
"memory, and because we want to map the entire file, we need to determine the "
"size of the file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1880
msgid ""
"We can use the `fstat` syscall to get all the information about an open file "
"that the system can give us. That includes the file size."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1883
msgid ""
"Again, [.filename]#syscalls.master# lists two versions of `fstat`, a "
"traditional one (syscall 62), and a POSIX(R) one (syscall 189). Naturally, "
"we will use the POSIX(R) version:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1887
#, no-wrap
msgid "189\tSTD\tPOSIX\t{ int fstat(int fd, struct stat *sb); }\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1891
msgid ""
"This is a very straightforward call: We pass to it the address of a `stat` "
"structure and the descriptor of an open file. It will fill out the contents "
"of the `stat` structure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1894
msgid ""
"I do, however, have to say that I tried to declare the `stat` structure in "
"the `.bss` section, and `fstat` did not like it: It set the carry flag "
"indicating an error. After I changed the code to allocate the structure on "
"the stack, everything was working fine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1896
#, no-wrap
msgid "Changing the File Size"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1900
msgid ""
"Because our program may combine carriage return / line feed sequences into "
"straight line feeds, our output may be smaller than our input. However, "
"since we are placing our output into the same file we read the input from, "
"we may have to change the size of the file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1903
msgid ""
"The `ftruncate` system call allows us to do just that. Despite its somewhat "
"misleading name, the `ftruncate` system call can be used to both truncate "
"the file (make it smaller) and to grow it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1906
msgid ""
"And yes, we will find two versions of `ftruncate` in [.filename]#syscalls."
"master#, an older one (130), and a newer one (201). We will use the newer "
"one:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1910
#, no-wrap
msgid "201\tSTD\tBSD\t{ int ftruncate(int fd, int pad, off_t length); }\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1913
msgid "Please note that this one contains a `int pad` again."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1915
#, no-wrap
msgid "ftuc"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1920
msgid ""
"We now know everything we need to write ftuc. We start by adding some new "
"lines in [.filename]#system.inc#. First, we define some constants and "
"structures, somewhere at or near the beginning of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1927
#, no-wrap
msgid ""
";;;;;;; open flags\n"
"%define\tO_RDONLY\t0\n"
"%define\tO_WRONLY\t1\n"
"%define\tO_RDWR\t2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1936
#, no-wrap
msgid ""
";;;;;;; mmap flags\n"
"%define\tPROT_NONE\t0\n"
"%define\tPROT_READ\t1\n"
"%define\tPROT_WRITE\t2\n"
"%define\tPROT_EXEC\t4\n"
";;\n"
"%define\tMAP_SHARED\t0001h\n"
"%define\tMAP_PRIVATE\t0002h\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1960
#, no-wrap
msgid ""
";;;;;;; stat structure\n"
"struc\tstat\n"
"st_dev\t\tresd\t1\t; = 0\n"
"st_ino\t\tresd\t1\t; = 4\n"
"st_mode\t\tresw\t1\t; = 8, size is 16 bits\n"
"st_nlink\tresw\t1\t; = 10, ditto\n"
"st_uid\t\tresd\t1\t; = 12\n"
"st_gid\t\tresd\t1\t; = 16\n"
"st_rdev\t\tresd\t1\t; = 20\n"
"st_atime\tresd\t1\t; = 24\n"
"st_atimensec\tresd\t1\t; = 28\n"
"st_mtime\tresd\t1\t; = 32\n"
"st_mtimensec\tresd\t1\t; = 36\n"
"st_ctime\tresd\t1\t; = 40\n"
"st_ctimensec\tresd\t1\t; = 44\n"
"st_size\t\tresd\t2\t; = 48, size is 64 bits\n"
"st_blocks\tresd\t2\t; = 56, ditto\n"
"st_blksize\tresd\t1\t; = 64\n"
"st_flags\tresd\t1\t; = 68\n"
"st_gen\t\tresd\t1\t; = 72\n"
"st_lspare\tresd\t1\t; = 76\n"
"st_qspare\tresd\t4\t; = 80\n"
"endstruc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1963
msgid "We define the new syscalls:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1970
#, no-wrap
msgid ""
"%define\tSYS_mmap\t197\n"
"%define\tSYS_munmap\t73\n"
"%define\tSYS_fstat\t189\n"
"%define\tSYS_ftruncate\t201\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1973
msgid "We add the macros for their use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1979
#, no-wrap
msgid ""
"%macro\tsys.mmap\t0\n"
"\tsystem\tSYS_mmap\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1983
#, no-wrap
msgid ""
"%macro\tsys.munmap\t0\n"
"\tsystem\tSYS_munmap\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1987
#, no-wrap
msgid ""
"%macro\tsys.ftruncate\t0\n"
"\tsystem\tSYS_ftruncate\n"
"%endmacro\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1991
#, no-wrap
msgid ""
"%macro\tsys.fstat\t0\n"
"\tsystem\tSYS_fstat\n"
"%endmacro\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:1994
msgid "And here is our code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2007
#, no-wrap
msgid ""
";;;;;;; Fast Text-to-Unix Conversion (ftuc.asm) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
";;\n"
";; Started:\t21-Dec-2000\n"
";; Updated:\t22-Dec-2000\n"
";;\n"
";; Copyright 2000 G. Adam Stanislav.\n"
";; All rights reserved.\n"
";;\n"
";;;;;;; v.1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
"%include\t'system.inc'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2021
#, no-wrap
msgid ""
"section\t.data\n"
"\tdb\t'Copyright 2000 G. Adam Stanislav.', 0Ah\n"
"\tdb\t'All rights reserved.', 0Ah\n"
"usg\tdb\t'Usage: ftuc filename', 0Ah\n"
"usglen\tequ\t$-usg\n"
"co\tdb\t\"ftuc: Can't open file.\", 0Ah\n"
"colen\tequ\t$-co\n"
"fae\tdb\t'ftuc: File access error.', 0Ah\n"
"faelen\tequ\t$-fae\n"
"ftl\tdb\t'ftuc: File too long, use regular tuc instead.', 0Ah\n"
"ftllen\tequ\t$-ftl\n"
"mae\tdb\t'ftuc: Memory allocation error.', 0Ah\n"
"maelen\tequ\t$-mae\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2023
#, no-wrap
msgid "section\t.text\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2029
#, no-wrap
msgid ""
"align 4\n"
"memerr:\n"
"\tpush\tdword maelen\n"
"\tpush\tdword mae\n"
"\tjmp\tshort error\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2035
#, no-wrap
msgid ""
"align 4\n"
"toolong:\n"
"\tpush\tdword ftllen\n"
"\tpush\tdword ftl\n"
"\tjmp\tshort error\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2041
#, no-wrap
msgid ""
"align 4\n"
"facerr:\n"
"\tpush\tdword faelen\n"
"\tpush\tdword fae\n"
"\tjmp\tshort error\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2047
#, no-wrap
msgid ""
"align 4\n"
"cantopen:\n"
"\tpush\tdword colen\n"
"\tpush\tdword co\n"
"\tjmp\tshort error\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2052
#, no-wrap
msgid ""
"align 4\n"
"usage:\n"
"\tpush\tdword usglen\n"
"\tpush\tdword usg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2056
#, no-wrap
msgid ""
"error:\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2059
#, no-wrap
msgid ""
"\tpush\tdword 1\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2067
#, no-wrap
msgid ""
"align 4\n"
"global\t_start\n"
"_start:\n"
"\tpop\teax\t\t; argc\n"
"\tpop\teax\t\t; program name\n"
"\tpop\tecx\t\t; file to convert\n"
"\tjecxz\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2071
#, no-wrap
msgid ""
"\tpop\teax\n"
"\tor\teax, eax\t; Too many arguments?\n"
"\tjne\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2077
#, no-wrap
msgid ""
"\t; Open the file\n"
"\tpush\tdword O_RDWR\n"
"\tpush\tecx\n"
"\tsys.open\n"
"\tjc\tcantopen\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2079
#, no-wrap
msgid "\tmov\tebp, eax\t; Save fd\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2082
#, no-wrap
msgid ""
"\tsub\tesp, byte stat_size\n"
"\tmov\tebx, esp\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2088
#, no-wrap
msgid ""
"\t; Find file size\n"
"\tpush\tebx\n"
"\tpush\tebp\t\t; fd\n"
"\tsys.fstat\n"
"\tjc\tfacerr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2090
#, no-wrap
msgid "\tmov\tedx, [ebx + st_size + 4]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2098
#, no-wrap
msgid ""
"\t; File is too long if EDX != 0 ...\n"
"\tor\tedx, edx\n"
"\tjne\tnear toolong\n"
"\tmov\tecx, [ebx + st_size]\n"
"\t; ... or if it is above 2 GB\n"
"\tor\tecx, ecx\n"
"\tjs\tnear toolong\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2101
#, no-wrap
msgid ""
"\t; Do nothing if the file is 0 bytes in size\n"
"\tjecxz\t.quit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2113
#, no-wrap
msgid ""
"\t; Map the entire file in memory\n"
"\tpush\tedx\n"
"\tpush\tedx\t\t; starting at offset 0\n"
"\tpush\tedx\t\t; pad\n"
"\tpush\tebp\t\t; fd\n"
"\tpush\tdword MAP_SHARED\n"
"\tpush\tdword PROT_READ | PROT_WRITE\n"
"\tpush\tecx\t\t; entire file size\n"
"\tpush\tedx\t\t; let system decide on the address\n"
"\tsys.mmap\n"
"\tjc\tnear memerr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2118
#, no-wrap
msgid ""
"\tmov\tedi, eax\n"
"\tmov\tesi, eax\n"
"\tpush\tecx\t\t; for SYS_munmap\n"
"\tpush\tedi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2123
#, no-wrap
msgid ""
"\t; Use EBX for state machine\n"
"\tmov\tebx, ordinary\n"
"\tmov\tah, 0Ah\n"
"\tcld\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2128
#, no-wrap
msgid ""
".loop:\n"
"\tlodsb\n"
"\tcall\tebx\n"
"\tloop\t.loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2131
#, no-wrap
msgid ""
"\tcmp\tebx, ordinary\n"
"\tje\t.filesize\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2136
#, no-wrap
msgid ""
"\t; Output final lf\n"
"\tmov\tal, ah\n"
"\tstosb\n"
"\tinc\tedx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2144
#, no-wrap
msgid ""
".filesize:\n"
"\t; truncate file to new size\n"
"\tpush\tdword 0\t\t; high dword\n"
"\tpush\tedx\t\t; low dword\n"
"\tpush\teax\t\t; pad\n"
"\tpush\tebp\n"
"\tsys.ftruncate\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2147
#, no-wrap
msgid ""
"\t; close it (ebp still pushed)\n"
"\tsys.close\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2150
#, no-wrap
msgid ""
"\tadd\tesp, byte 16\n"
"\tsys.munmap\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2154
#, no-wrap
msgid ""
".quit:\n"
"\tpush\tdword 0\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2159
#, no-wrap
msgid ""
"align 4\n"
"ordinary:\n"
"\tcmp\tal, 0Dh\n"
"\tje\t.cr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2162
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2184
#, no-wrap
msgid ""
"\tcmp\tal, ah\n"
"\tje\t.lf\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2166
#, no-wrap
msgid ""
"\tstosb\n"
"\tinc\tedx\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2171
#, no-wrap
msgid ""
"align 4\n"
".cr:\n"
"\tmov\tebx, cr\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2176
#, no-wrap
msgid ""
"align 4\n"
".lf:\n"
"\tmov\tebx, lf\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2181
#, no-wrap
msgid ""
"align 4\n"
"cr:\n"
"\tcmp\tal, 0Dh\n"
"\tje\t.cr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2188
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2216
#, no-wrap
msgid ""
"\txchg\tal, ah\n"
"\tstosb\n"
"\tinc\tedx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2191
#, no-wrap
msgid ""
"\txchg\tal, ah\n"
"\t; fall through\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2197
#, no-wrap
msgid ""
".lf:\n"
"\tstosb\n"
"\tinc\tedx\n"
"\tmov\tebx, ordinary\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2204
#, no-wrap
msgid ""
"align 4\n"
".cr:\n"
"\tmov\tal, ah\n"
"\tstosb\n"
"\tinc\tedx\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2209
#, no-wrap
msgid ""
"align 4\n"
"lf:\n"
"\tcmp\tal, ah\n"
"\tje\t.lf\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2212
#, no-wrap
msgid ""
"\tcmp\tal, 0Dh\n"
"\tje\t.cr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2222
#, no-wrap
msgid ""
"\txchg\tal, ah\n"
"\tstosb\n"
"\tinc\tedx\n"
"\tmov\tebx, ordinary\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2228
#, no-wrap
msgid ""
"align 4\n"
".cr:\n"
"\tmov\tebx, ordinary\n"
"\tmov\tal, ah\n"
"\t; fall through\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2233
#, no-wrap
msgid ""
".lf:\n"
"\tstosb\n"
"\tinc\tedx\n"
"\tret\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2240
msgid ""
"Do not use this program on files stored on a disk formatted by MS-DOS(R) or "
"Windows(R). There seems to be a subtle bug in the FreeBSD code when using "
"`mmap` on these drives mounted under FreeBSD: If the file is over a certain "
"size, `mmap` will just fill the memory with zeros, and then copy them to the "
"file overwriting its contents."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2243
#, no-wrap
msgid "One-Pointed Mind"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2246
msgid ""
"As a student of Zen, I like the idea of a one-pointed mind: Do one thing at "
"a time, and do it well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2249
msgid ""
"This, indeed, is very much how UNIX(R) works as well. While a typical "
"Windows(R) application is attempting to do everything imaginable (and is, "
"therefore, riddled with bugs), a typical UNIX(R) program does only one "
"thing, and it does it well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2251
msgid ""
"The typical UNIX(R) user then essentially assembles his own applications by "
"writing a shell script which combines the various existing programs by "
"piping the output of one program to the input of another."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2253
msgid ""
"When writing your own UNIX(R) software, it is generally a good idea to see "
"what parts of the problem you need to solve can be handled by existing "
"programs, and only write your own programs for that part of the problem that "
"you do not have an existing solution for."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2255
#, no-wrap
msgid "CSV"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2258
msgid ""
"I will illustrate this principle with a specific real-life example I was "
"faced with recently:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2262
msgid ""
"I needed to extract the 11th field of each record from a database I "
"downloaded from a web site. The database was a CSV file, i.e., a list of "
"_comma-separated values_. That is quite a standard format for sharing data "
"among people who may be using different database software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2265
msgid ""
"The first line of the file contains the list of various fields separated by "
"commas. The rest of the file contains the data listed line by line, with "
"values separated by commas."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2267
msgid ""
"I tried awk, using the comma as a separator. But because several lines "
"contained a quoted comma, awk was extracting the wrong field from those "
"lines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2270
msgid ""
"Therefore, I needed to write my own software to extract the 11th field from "
"the CSV file. However, going with the UNIX(R) spirit, I only needed to "
"write a simple filter that would do the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2272
msgid "Remove the first line from the file;"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2273
msgid "Change all unquoted commas to a different character;"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2274
msgid "Remove all quotation marks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2276
msgid ""
"Strictly speaking, I could use sed to remove the first line from the file, "
"but doing so in my own program was very easy, so I decided to do it and "
"reduce the size of the pipeline."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2280
msgid ""
"At any rate, writing a program like this took me about 20 minutes. Writing "
"a program that extracts the 11th field from the CSV file would take a lot "
"longer, and I could not reuse it to extract some other field from some other "
"database."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2282
msgid ""
"This time I decided to let it do a little more work than a typical tutorial "
"program would:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2284
msgid "It parses its command line for options;"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2285
msgid "It displays proper usage if it finds wrong arguments;"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2286
msgid "It produces meaningful error messages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2288
msgid "Here is its usage message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2292
#, no-wrap
msgid "Usage: csv [-t<delim>] [-c<comma>] [-p] [-o <outfile>] [-i <infile>]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2295
msgid "All parameters are optional, and can appear in any order."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2299
msgid ""
"The `-t` parameter declares what to replace the commas with. The `tab` is "
"the default here. For example, `-t;` will replace all unquoted commas with "
"semicolons."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2303
msgid ""
"I did not need the `-c` option, but it may come in handy in the future. It "
"lets me declare that I want a character other than a comma replaced with "
"something else. For example, `-c@` will replace all at signs (useful if you "
"want to split a list of email addresses to their user names and domains)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2306
msgid ""
"The `-p` option preserves the first line, i.e., it does not delete it. By "
"default, we delete the first line because in a CSV file it contains the "
"field names rather than data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2309
msgid ""
"The `-i` and `-o` options let me specify the input and the output files. "
"Defaults are [.filename]#stdin# and [.filename]#stdout#, so this is a "
"regular UNIX(R) filter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2312
msgid ""
"I made sure that both `-i filename` and `-ifilename` are accepted. I also "
"made sure that only one input and one output files may be specified."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2314
msgid "To get the 11th field of each record, I can now do:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2318
#, no-wrap
msgid "% csv '-t;' data.csv | awk '-F;' '{print $11}'\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2321
msgid ""
"The code stores the options (except for the file descriptors) in `EDX`: The "
"comma in `DH`, the new separator in `DL`, and the flag for the `-p` option "
"in the highest bit of `EDX`, so a check for its sign will give us a quick "
"decision what to do."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2323
msgid "Here is the code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2337
#, no-wrap
msgid ""
";;;;;;; csv.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
";\n"
"; Convert a comma-separated file to a something-else separated file.\n"
";\n"
"; Started:\t31-May-2001\n"
"; Updated:\t 1-Jun-2001\n"
";\n"
"; Copyright (c) 2001 G. Adam Stanislav\n"
"; All rights reserved.\n"
";\n"
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2351
#, no-wrap
msgid ""
"section\t.data\n"
"fd.in\tdd\tstdin\n"
"fd.out\tdd\tstdout\n"
"usg\tdb\t'Usage: csv [-t<delim>] [-c<comma>] [-p] [-o <outfile>] [-i <infile>]', 0Ah\n"
"usglen\tequ\t$-usg\n"
"iemsg\tdb\t\"csv: Can't open input file\", 0Ah\n"
"iemlen\tequ\t$-iemsg\n"
"oemsg\tdb\t\"csv: Can't create output file\", 0Ah\n"
"oemlen\tequ\t$-oemsg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2365
#, no-wrap
msgid ""
"section\t.text\n"
"align 4\n"
"ierr:\n"
"\tpush\tdword iemlen\n"
"\tpush\tdword iemsg\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 1\t\t; return failure\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2374
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3423
#, no-wrap
msgid ""
"align 4\n"
"oerr:\n"
"\tpush\tdword oemlen\n"
"\tpush\tdword oemsg\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 2\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2383
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3432
#, no-wrap
msgid ""
"align 4\n"
"usage:\n"
"\tpush\tdword usglen\n"
"\tpush\tdword usg\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 3\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2389
#, no-wrap
msgid ""
"align 4\n"
"global\t_start\n"
"_start:\n"
"\tadd\tesp, byte 8\t; discard argc and argv[0]\n"
"\tmov\tedx, (',' << 8) | 9\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2394
#, no-wrap
msgid ""
".arg:\n"
"\tpop\tecx\n"
"\tor\tecx, ecx\n"
"\tje\tnear .init\t\t; no more arguments\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2398
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3447
#, no-wrap
msgid ""
"\t; ECX contains the pointer to an argument\n"
"\tcmp\tbyte [ecx], '-'\n"
"\tjne\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2401
#, no-wrap
msgid ""
"\tinc\tecx\n"
"\tmov\tax, [ecx]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2405
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3455
#, no-wrap
msgid ""
".o:\n"
"\tcmp\tal, 'o'\n"
"\tjne\t.i\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2409
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3459
#, no-wrap
msgid ""
"\t; Make sure we are not asked for the output file twice\n"
"\tcmp\tdword [fd.out], stdout\n"
"\tjne\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2414
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3464
#, no-wrap
msgid ""
"\t; Find the path to output file - it is either at [ECX+1],\n"
"\t; i.e., -ofile --\n"
"\t; or in the next argument,\n"
"\t; i.e., -o file\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2420
#, no-wrap
msgid ""
"\tinc\tecx\n"
"\tor\tah, ah\n"
"\tjne\t.openoutput\n"
"\tpop\tecx\n"
"\tjecxz\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2428
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3477
#, no-wrap
msgid ""
".openoutput:\n"
"\tpush\tdword 420\t; file mode (644 octal)\n"
"\tpush\tdword 0200h | 0400h | 01h\n"
"\t; O_CREAT | O_TRUNC | O_WRONLY\n"
"\tpush\tecx\n"
"\tsys.open\n"
"\tjc\tnear oerr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2432
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3481
#, no-wrap
msgid ""
"\tadd\tesp, byte 12\n"
"\tmov\t[fd.out], eax\n"
"\tjmp\tshort .arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2436
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3485
#, no-wrap
msgid ""
".i:\n"
"\tcmp\tal, 'i'\n"
"\tjne\t.p\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2440
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3489
#, no-wrap
msgid ""
"\t; Make sure we are not asked twice\n"
"\tcmp\tdword [fd.in], stdin\n"
"\tjne\tnear usage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2448
#, no-wrap
msgid ""
"\t; Find the path to the input file\n"
"\tinc\tecx\n"
"\tor\tah, ah\n"
"\tjne\t.openinput\n"
"\tpop\tecx\n"
"\tor\tecx, ecx\n"
"\tje near usage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2454
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3502
#, no-wrap
msgid ""
".openinput:\n"
"\tpush\tdword 0\t\t; O_RDONLY\n"
"\tpush\tecx\n"
"\tsys.open\n"
"\tjc\tnear ierr\t\t; open failed\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2458
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3506
#, no-wrap
msgid ""
"\tadd\tesp, byte 8\n"
"\tmov\t[fd.in], eax\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2466
#, no-wrap
msgid ""
".p:\n"
"\tcmp\tal, 'p'\n"
"\tjne\t.t\n"
"\tor\tah, ah\n"
"\tjne\tnear usage\n"
"\tor\tedx, 1 << 31\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2474
#, no-wrap
msgid ""
".t:\n"
"\tcmp\tal, 't'\t\t; redefine output delimiter\n"
"\tjne\t.c\n"
"\tor\tah, ah\n"
"\tje\tnear usage\n"
"\tmov\tdl, ah\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2482
#, no-wrap
msgid ""
".c:\n"
"\tcmp\tal, 'c'\n"
"\tjne\tnear usage\n"
"\tor\tah, ah\n"
"\tje\tnear usage\n"
"\tmov\tdh, ah\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2489
#, no-wrap
msgid ""
"align 4\n"
".init:\n"
"\tsub\teax, eax\n"
"\tsub\tebx, ebx\n"
"\tsub\tecx, ecx\n"
"\tmov\tedi, obuffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2493
#, no-wrap
msgid ""
"\t; See if we are to preserve the first line\n"
"\tor\tedx, edx\n"
"\tjs\t.loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2499
#, no-wrap
msgid ""
".firstline:\n"
"\t; get rid of the first line\n"
"\tcall\tgetchar\n"
"\tcmp\tal, 0Ah\n"
"\tjne\t.firstline\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2507
#, no-wrap
msgid ""
"\t; is it a comma (or whatever the user asked for)?\n"
"\tcmp\tal, dh\n"
"\tjne\t.quote\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2510
#, no-wrap
msgid ""
"\t; Replace the comma with a tab (or whatever the user wants)\n"
"\tmov\tal, dl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2518
#, no-wrap
msgid ""
".quote:\n"
"\tcmp\tal, '\"'\n"
"\tjne\t.put\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2525
#, no-wrap
msgid ""
"\t; Print everything until you get another quote or EOL. If it\n"
"\t; is a quote, skip it. If it is EOL, print it.\n"
".qloop:\n"
"\tcall\tgetchar\n"
"\tcmp\tal, '\"'\n"
"\tje\t.loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2528
#, no-wrap
msgid ""
"\tcmp\tal, 0Ah\n"
"\tje\t.put\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2531
#, no-wrap
msgid ""
"\tcall\tputchar\n"
"\tjmp\tshort .qloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2547
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3862
#, no-wrap
msgid ""
"read:\n"
"\tjecxz\t.read\n"
"\tcall\twrite\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2560
#, no-wrap
msgid ""
".read:\n"
"\tpush\tdword BUFSIZE\n"
"\tmov\tesi, ibuffer\n"
"\tpush\tesi\n"
"\tpush\tdword [fd.in]\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tmov\tebx, eax\n"
"\tor\teax, eax\n"
"\tje\t.done\n"
"\tsub\teax, eax\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2597
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3903
#, no-wrap
msgid ""
"align 4\n"
"write:\n"
"\tjecxz\t.ret\t; nothing to write\n"
"\tsub\tedi, ecx\t; start of buffer\n"
"\tpush\tecx\n"
"\tpush\tedi\n"
"\tpush\tdword [fd.out]\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tsub\teax, eax\n"
"\tsub\tecx, ecx\t; buffer is empty now\n"
".ret:\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2602
msgid ""
"Much of it is taken from [.filename]#hex.asm# above. But there is one "
"important difference: I no longer call `write` whenever I am outputting a "
"line feed. Yet, the code can be used interactively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2606
msgid ""
"I have found a better solution for the interactive problem since I first "
"started writing this chapter. I wanted to make sure each line is printed "
"out separately only when needed. After all, there is no need to flush out "
"every line when used non-interactively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2610
msgid ""
"The new solution I use now is to call `write` every time I find the input "
"buffer empty. That way, when running in the interactive mode, the program "
"reads one line from the user's keyboard, processes it, and sees its input "
"buffer is empty. It flushes its output and reads the next line."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2612
#, no-wrap
msgid "The Dark Side of Buffering"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2616
msgid ""
"This change prevents a mysterious lockup in a very specific case. I refer "
"to it as the _dark side of buffering_, mostly because it presents a danger "
"that is not quite obvious."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2620
msgid ""
"It is unlikely to happen with a program like the csv above, so let us "
"consider yet another filter: In this case we expect our input to be raw data "
"representing color values, such as the _red_, _green_, and _blue_ "
"intensities of a pixel. Our output will be the negative of our input."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2623
msgid ""
"Such a filter would be very simple to write. Most of it would look just "
"like all the other filters we have written so far, so I am only going to "
"show you its inner loop:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2631
#, no-wrap
msgid ""
".loop:\n"
"\tcall\tgetchar\n"
"\tnot\tal\t\t; Create a negative\n"
"\tcall\tputchar\n"
"\tjmp\tshort .loop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2634
msgid ""
"Because this filter works with raw data, it is unlikely to be used "
"interactively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2637
msgid ""
"But it could be called by image manipulation software. And, unless it calls "
"`write` before each call to `read`, chances are it will lock up."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2639
msgid "Here is what might happen:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2642
msgid "The image editor will load our filter using the C function `popen()`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2643
msgid "It will read the first row of pixels from a bitmap or pixmap."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2644
msgid ""
"It will write the first row of pixels to the _pipe_ leading to the `fd.in` "
"of our filter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2645
msgid ""
"Our filter will read each pixel from its input, turn it to a negative, and "
"write it to its output buffer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2646
msgid "Our filter will call `getchar` to fetch the next pixel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2647
msgid "`getchar` will find an empty input buffer, so it will call `read`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2648
msgid "`read` will call the `SYS_read` system call."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2649
msgid ""
"The _kernel_ will suspend our filter until the image editor sends more data "
"to the pipe."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2650
msgid ""
"The image editor will read from the other pipe, connected to the `fd.out` of "
"our filter so it can set the first row of the output image _before_ it sends "
"us the second row of the input."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2651
msgid ""
"The _kernel_ suspends the image editor until it receives some output from "
"our filter, so it can pass it on to the image editor."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2655
msgid ""
"At this point our filter waits for the image editor to send it more data to "
"process, while the image editor is waiting for our filter to send it the "
"result of the processing of the first row. But the result sits in our "
"output buffer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2658
msgid ""
"The filter and the image editor will continue waiting for each other forever "
"(or, at least, until they are killed). Our software has just entered a "
"crossref:secure[secure-race-conditions,race condition]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2660
msgid ""
"This problem does not exist if our filter flushes its output buffer _before_ "
"asking the _kernel_ for more input data."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2662
#, no-wrap
msgid "Using the FPU"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2665
msgid ""
"Strangely enough, most of assembly language literature does not even mention "
"the existence of the FPU, or _floating point unit_, let alone discuss "
"programming it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2667
msgid ""
"Yet, never does assembly language shine more than when we create highly "
"optimized FPU code by doing things that can be done _only_ in assembly "
"language."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2669
#, no-wrap
msgid "Organization of the FPU"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2673
msgid ""
"The FPU consists of 8 80-bit floating-point registers. These are organized "
"in a stack fashion-you can `push` a value on TOS (_top of stack_) and you "
"can `pop` it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2675
msgid ""
"That said, the assembly language op codes are not `push` and `pop` because "
"those are already taken."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2678
msgid ""
"You can `push` a value on TOS by using `fld`, `fild`, and `fbld`. Several "
"other op codes let you `push` many common _constants_-such as _pi_-on the "
"TOS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2681
msgid ""
"Similarly, you can `pop` a value by using `fst`, `fstp`, `fist`, `fistp`, "
"and `fbstp`. Actually, only the op codes that end with a _p_ will literally "
"`pop` the value, the rest will `store` it somewhere else without removing it "
"from the TOS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2683
msgid ""
"We can transfer the data between the TOS and the computer memory either as a "
"32-bit, 64-bit, or 80-bit _real_, a 16-bit, 32-bit, or 64-bit _integer_, or "
"an 80-bit _packed decimal_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2686
msgid ""
"The 80-bit _packed decimal_ is a special case of _binary coded decimal_ "
"which is very convenient when converting between the ASCII representation of "
"data and the internal data of the FPU. It allows us to use 18 significant "
"digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2688
msgid ""
"No matter how we represent data in the memory, the FPU always stores it in "
"the 80-bit _real_ format in its registers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2690
msgid ""
"Its internal precision is at least 19 decimal digits, so even if we choose "
"to display results as ASCII in the full 18-digit precision, we are still "
"showing correct results."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2692
msgid ""
"We can perform mathematical operations on the TOS: We can calculate its "
"_sine_, we can _scale_ it (i.e., we can multiply or divide it by a power of "
"2), we can calculate its base-2 _logarithm_, and many other things."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2694
msgid ""
"We can also _multiply_ or _divide_ it by, _add_ it to, or _subtract_ it "
"from, any of the FPU registers (including itself)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2697
msgid ""
"The official Intel op code for the TOS is `st`, and for the _registers_ "
"`st(0)`-`st(7)`. `st` and `st(0)`, then, refer to the same register."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2700
msgid ""
"For whatever reasons, the original author of nasm has decided to use "
"different op codes, namely `st0`-`st7`. In other words, there are no "
"parentheses, and the TOS is always `st0`, never just `st`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2702
#, no-wrap
msgid "The Packed Decimal Format"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2706
msgid ""
"The _packed decimal_ format uses 10 bytes (80 bits) of memory to represent "
"18 digits. The number represented there is always an _integer_."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2710
msgid ""
"You can use it to get decimal places by multiplying the TOS by a power of 10 "
"first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2714
msgid ""
"The highest bit of the highest byte (byte 9) is the _sign bit_: If it is "
"set, the number is _negative_, otherwise, it is _positive_. The rest of the "
"bits of this byte are unused/ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2716
msgid ""
"The remaining 9 bytes store the 18 digits of the number: 2 digits per byte."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2718
msgid ""
"The _more significant digit_ is stored in the high _nibble_ (4 bits), the "
"_less significant digit_ in the low _nibble_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2720
msgid ""
"That said, you might think that `-1234567` would be stored in the memory "
"like this (using hexadecimal notation):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2724
#, no-wrap
msgid "80 00 00 00 00 00 01 23 45 67\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2727
msgid ""
"Alas it is not! As with everything else of Intel make, even the _packed "
"decimal_ is _little-endian_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2729
msgid "That means our `-1234567` is stored like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2733
#, no-wrap
msgid "67 45 23 01 00 00 00 00 00 80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2736
msgid "Remember that, or you will be pulling your hair out in desperation!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2742
msgid ""
"The book to read-if you can find it-is Richard Startz' http://www.amazon.com/"
"exec/obidos/ASIN/013246604X/whizkidtechnomag[8087/80287/80387 for the IBM PC "
"& Compatibles]. Though it does seem to take the fact about the little-"
"endian storage of the _packed decimal_ for granted. I kid you not about the "
"desperation of trying to figure out what was wrong with the filter I show "
"below _before_ it occurred to me I should try the little-endian order even "
"for this type of data."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2745
#, no-wrap
msgid "Excursion to Pinhole Photography"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2748
msgid ""
"To write meaningful software, we must not only understand our programming "
"tools, but also the field we are creating software for."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2750
msgid ""
"Our next filter will help us whenever we want to build a _pinhole camera_, "
"so, we need some background in _pinhole photography_ before we can continue."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2752
#, no-wrap
msgid "The Camera"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2755
msgid ""
"The easiest way to describe any camera ever built is as some empty space "
"enclosed in some lightproof material, with a small hole in the enclosure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2760
msgid ""
"The enclosure is usually sturdy (e.g., a box), though sometimes it is "
"flexible (the bellows). It is quite dark inside the camera. However, the "
"hole lets light rays in through a single point (though in some cases there "
"may be several). These light rays form an image, a representation of "
"whatever is outside the camera, in front of the hole."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2762
msgid ""
"If some light sensitive material (such as film) is placed inside the camera, "
"it can capture the image."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2764
msgid ""
"The hole often contains a _lens_, or a lens assembly, often called the "
"_objective_."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2766
#, no-wrap
msgid "The Pinhole"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2770
msgid ""
"But, strictly speaking, the lens is not necessary: The original cameras did "
"not use a lens but a _pinhole_. Even today, _pinholes_ are used, both as a "
"tool to study how cameras work, and to achieve a special kind of image."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2774
msgid ""
"The image produced by the _pinhole_ is all equally sharp. Or _blurred_. "
"There is an ideal size for a pinhole: If it is either larger or smaller, the "
"image loses its sharpness."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2776
#, no-wrap
msgid "Focal Length"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2779
msgid ""
"This ideal pinhole diameter is a function of the square root of _focal "
"length_, which is the distance of the pinhole from the film."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2783
#, no-wrap
msgid "D = PC * sqrt(FL)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2789
msgid ""
"In here, `D` is the ideal diameter of the pinhole, `FL` is the focal length, "
"and `PC` is a pinhole constant. According to Jay Bender, its value is "
"`0.04`, while Kenneth Connors has determined it to be `0.037`. Others have "
"proposed other values. Plus, this value is for the daylight only: Other "
"types of light will require a different constant, whose value can only be "
"determined by experimentation."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2791
#, no-wrap
msgid "The F-Number"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2795
msgid ""
"The f-number is a very useful measure of how much light reaches the film. A "
"light meter can determine that, for example, to expose a film of specific "
"sensitivity with f5.6 mkay require the exposure to last 1/1000 sec."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2798
msgid ""
"It does not matter whether it is a 35-mm camera, or a 6x9cm camera, etc. As "
"long as we know the f-number, we can determine the proper exposure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2800
msgid "The f-number is easy to calculate:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2804
#, no-wrap
msgid "F = FL / D\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2809
msgid ""
"In other words, the f-number equals the focal length divided by the diameter "
"of the pinhole. It also means a higher f-number either implies a smaller "
"pinhole or a larger focal distance, or both. That, in turn, implies, the "
"higher the f-number, the longer the exposure has to be."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2812
msgid ""
"Furthermore, while pinhole diameter and focal distance are one-dimensional "
"measurements, both, the film and the pinhole, are two-dimensional. That "
"means that if you have measured the exposure at f-number `A` as `t`, then "
"the exposure at f-number `B` is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2816
#, no-wrap
msgid "t * (B / A)²\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2819
#, no-wrap
msgid "Normalized F-Number"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2822
msgid ""
"While many modern cameras can change the diameter of their pinhole, and thus "
"their f-number, quite smoothly and gradually, such was not always the case."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2824
msgid ""
"To allow for different f-numbers, cameras typically contained a metal plate "
"with several holes of different sizes drilled to them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2827
msgid ""
"Their sizes were chosen according to the above formula in such a way that "
"the resultant f-number was one of standard f-numbers used on all cameras "
"everywhere. For example, a very old Kodak Duaflex IV camera in my "
"possession has three such holes for f-numbers 8, 11, and 16."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2830
msgid ""
"A more recently made camera may offer f-numbers of 2.8, 4, 5.6, 8, 11, 16, "
"22, and 32 (as well as others). These numbers were not chosen arbitrarily: "
"They all are powers of the square root of 2, though they may be rounded "
"somewha."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2832
#, no-wrap
msgid "The F-Stop"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2836
msgid ""
"A typical camera is designed in such a way that setting any of the "
"normalized f-numbers changes the feel of the dial. It will naturally _stop_ "
"in that position. Because of that, these positions of the dial are called f-"
"stops."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2840
msgid ""
"Since the f-numbers at each stop are powers of the square root of 2, moving "
"the dial by 1 stop will double the amount of light required for proper "
"exposure. Moving it by 2 stops will quadruple the required exposure. "
"Moving the dial by 3 stops will require the increase in exposure 8 times, "
"etc."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2842
#, no-wrap
msgid "Designing the Pinhole Software"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2845
msgid ""
"We are now ready to decide what exactly we want our pinhole software to do."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2847
#, no-wrap
msgid "Processing Program Input"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2851
msgid ""
"Since its main purpose is to help us design a working pinhole camera, we "
"will use the _focal length_ as the input to the program. This is something "
"we can determine without software: Proper focal length is determined by the "
"size of the film and by the need to shoot \"regular\" pictures, wide angle "
"pictures, or telephoto pictures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2853
msgid ""
"Most of the programs we have written so far worked with individual "
"characters, or bytes, as their input: The hex program converted individual "
"bytes into a hexadecimal number, the csv program either let a character "
"through, or deleted it, or changed it to a different character, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2855
msgid ""
"One program, ftuc used the state machine to consider at most two input bytes "
"at a time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2857
msgid ""
"But our pinhole program cannot just work with individual characters, it has "
"to deal with larger syntactic units."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2859
msgid ""
"For example, if we want the program to calculate the pinhole diameter (and "
"other values we will discuss later) at the focal lengths of `100 mm`, `150 "
"mm`, and `210 mm`, we may want to enter something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2863
#, no-wrap
msgid " 100, 150, 210\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2868
msgid ""
"Our program needs to consider more than a single byte of input at a time. "
"When it sees the first `1`, it must understand it is seeing the first digit "
"of a decimal number. When it sees the `0` and the other `0`, it must know "
"it is seeing more digits of the same number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2873
msgid ""
"When it encounters the first comma, it must know it is no longer receiving "
"the digits of the first number. It must be able to convert the digits of "
"the first number into the value of `100`. And the digits of the second "
"number into the value of `150`. And, of course, the digits of the third "
"number into the numeric value of `210`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2875
msgid ""
"We need to decide what delimiters to accept: Do the input numbers have to be "
"separated by a comma? If so, how do we treat two numbers separated by "
"something else?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2880
msgid ""
"Personally, I like to keep it simple. Something either is a number, so I "
"process it. Or it is not a number, so I discard it. I do not like the "
"computer complaining about me typing in an extra character when it is "
"_obvious_ that it is an extra character. Duh!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2882
msgid ""
"Plus, it allows me to break up the monotony of computing and type in a query "
"instead of just a number:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2887
#, no-wrap
msgid ""
"What is the best pinhole diameter for the\n"
"\t focal length of 150?\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2890
msgid "There is no reason for the computer to spit out a number of complaints:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2897
#, no-wrap
msgid ""
"Syntax error: What\n"
"Syntax error: is\n"
"Syntax error: the\n"
"Syntax error: best\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2900
msgid "Et cetera, et cetera, et cetera."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2903
msgid ""
-"Secondly, I like the `#` character to denote the start of a comment which "
+"Secondly, I like the `+#+` character to denote the start of a comment which "
"extends to the end of the line. This does not take too much effort to code, "
"and lets me treat input files for my software as executable scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2905
msgid ""
"In our case, we also need to decide what units the input should come in: We "
"choose _millimeters_ because that is how most photographers measure the "
"focus length."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2907
msgid ""
"Finally, we need to decide whether to allow the use of the decimal point (in "
"which case we must also consider the fact that much of the world uses a "
"decimal _comma_)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2911
msgid ""
"In our case allowing for the decimal point/comma would offer a false sense "
"of precision: There is little if any noticeable difference between the focus "
"lengths of `50` and `51`, so allowing the user to input something like "
"`50.5` is not a good idea. This is my opinion, mind you, but I am the one "
"writing this program. You can make other choices in yours, of course."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2913
#, no-wrap
msgid "Offering Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2918
msgid ""
"The most important thing we need to know when building a pinhole camera is "
"the diameter of the pinhole. Since we want to shoot sharp images, we will "
"use the above formula to calculate the pinhole diameter from focal length. "
"As experts are offering several different values for the `PC` constant, we "
"will need to have the choice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2920
msgid ""
"It is traditional in UNIX(R) programming to have two main ways of choosing "
"program parameters, plus to have a default for the time the user does not "
"make a choice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2922
msgid "Why have two ways of choosing?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2924
msgid ""
"One is to allow a (relatively) _permanent_ choice that applies automatically "
"each time the software is run without us having to tell it over and over "
"what we want it to do."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2929
msgid ""
"The permanent choices may be stored in a configuration file, typically found "
"in the user's home directory. The file usually has the same name as the "
"application but is started with a dot. Often _\"rc\"_ is added to the file "
"name. So, ours could be [.filename]#~/.pinhole# or [.filename]#~/."
"pinholerc#. (The [.filename]#~/# means current user's home directory.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2934
msgid ""
"The configuration file is used mostly by programs that have many "
"configurable parameters. Those that have only one (or a few) often use a "
"different method: They expect to find the parameter in an _environment "
"variable_. In our case, we might look at an environment variable named "
"`PINHOLE`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2937
msgid ""
"Usually, a program uses one or the other of the above methods. Otherwise, "
"if a configuration file said one thing, but an environment variable another, "
"the program might get confused (or just too complicated)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2939
msgid ""
"Because we only need to choose _one_ such parameter, we will go with the "
"second method and search the environment for a variable named `PINHOLE`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2942
msgid ""
"The other way allows us to make _ad hoc_ decisions: _\"Though I usually want "
"you to use 0.039, this time I want 0.03872.\"_ In other words, it allows us "
"to _override_ the permanent choice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2944
msgid "This type of choice is usually done with command line parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2952
msgid ""
"Finally, a program _always_ needs a _default_. The user may not make any "
"choices. Perhaps he does not know what to choose. Perhaps he is \"just "
"browsing.\" Preferably, the default will be the value most users would "
"choose anyway. That way they do not need to choose. Or, rather, they can "
"choose the default without an additional effort."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2954
msgid ""
"Given this system, the program may find conflicting options, and handle them "
"this way:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2957
msgid ""
"If it finds an _ad hoc_ choice (e.g., command line parameter), it should "
"accept that choice. It must ignore any permanent choice and any default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2958
msgid ""
"_Otherwise_, if it finds a permanent option (e.g., an environment variable), "
"it should accept it, and ignore the default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2959
msgid "_Otherwise_, it should use the default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2961
msgid "We also need to decide what _format_ our `PC` option should have."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2963
msgid ""
"At first site, it seems obvious to use the `PINHOLE=0.04` format for the "
"environment variable, and `-p0.04` for the command line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2967
msgid ""
"Allowing that is actually a security risk. The `PC` constant is a very small "
"number. Naturally, we will test our software using various small values of "
"`PC`. But what will happen if someone runs the program choosing a huge "
"value?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2969
msgid ""
"It may crash the program because we have not designed it to handle huge "
"numbers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2972
msgid ""
"Or, we may spend more time on the program so it can handle huge numbers. We "
"might do that if we were writing commercial software for computer illiterate "
"audience."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2974
msgid "Or, we might say, _\"Tough! The user should know better.\"\"_"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2977
msgid ""
"Or, we just may make it impossible for the user to enter a huge number. "
"This is the approach we will take: We will use an _implied 0._ prefix."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2980
msgid ""
"In other words, if the user wants `0.04`, we will expect him to type `-p04`, "
"or set `PINHOLE=04` in his environment. So, if he says `-p9999999`, we will "
"interpret it as ``0.9999999``-still ridiculous but at least safer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2983
msgid ""
"Secondly, many users will just want to go with either Bender's constant or "
"Connors' constant. To make it easier on them, we will interpret `-b` as "
"identical to `-p04`, and `-c` as identical to `-p037`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2985
#, no-wrap
msgid "The Output"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2988
msgid ""
"We need to decide what we want our software to send to the output, and in "
"what format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2990
msgid ""
"Since our input allows for an unspecified number of focal length entries, it "
"makes sense to use a traditional database-style output of showing the result "
"of the calculation for each focal length on a separate line, while "
"separating all values on one line by a `tab` character."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2993
msgid ""
"Optionally, we should also allow the user to specify the use of the CSV "
"format we have studied earlier. In this case, we will print out a line of "
"comma-separated names describing each field of every line, then show our "
"results as before, but substituting a `comma` for the `tab`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2998
msgid ""
"We need a command line option for the CSV format. We cannot use `-c` "
"because that already means _use Connors' constant_. For some strange "
"reason, many web sites refer to CSV files as _\"Excel spreadsheet\"_ (though "
"the CSV format predates Excel). We will, therefore, use the `-e` switch to "
"inform our software we want the output in the CSV format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3002
msgid ""
"We will start each line of the output with the focal length. This may sound "
"repetitious at first, especially in the interactive mode: The user types in "
"the focal length, and we are repeating it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3006
msgid ""
"But the user can type several focal lengths on one line. The input can also "
"come in from a file or from the output of another program. In that case the "
"user does not see the input at all."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3008
msgid ""
"By the same token, the output can go to a file which we will want to examine "
"later, or it could go to the printer, or become the input of another program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3010
msgid ""
"So, it makes perfect sense to start each line with the focal length as "
"entered by the user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3013
msgid ""
"No, wait! Not as entered by the user. What if the user types in something "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3017
#, no-wrap
msgid " 00000000150\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3020
msgid "Clearly, we need to strip those leading zeros."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3022
msgid ""
"So, we might consider reading the user input as is, converting it to binary "
"inside the FPU, and printing it out from there."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3024
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3209
msgid "But..."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3026
msgid "What if the user types something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3030
#, no-wrap
msgid " 17459765723452353453534535353530530534563507309676764423\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3035
msgid ""
"Ha! The packed decimal FPU format lets us input 18-digit numbers. But the "
"user has entered more than 18 digits. How do we handle that?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3037
msgid ""
"Well, we _could_ modify our code to read the first 18 digits, enter it to "
"the FPU, then read more, multiply what we already have on the TOS by 10 "
"raised to the number of additional digits, then `add` to it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3041
msgid ""
"Yes, we could do that. But in _this_ program it would be ridiculous (in a "
"different one it may be just the thing to do): Even the circumference of the "
"Earth expressed in millimeters only takes 11 digits. Clearly, we cannot "
"build a camera that large (not yet, anyway)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3043
msgid ""
"So, if the user enters such a huge number, he is either bored, or testing "
"us, or trying to break into the system, or playing games-doing anything but "
"designing a pinhole camera."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3045
msgid "What will we do?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3047
msgid "We will slap him in the face, in a manner of speaking:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3051
#, no-wrap
msgid "17459765723452353453534535353530530534563507309676764423\t???\t???\t???\t???\t???\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3055
msgid ""
"To achieve that, we will simply ignore any leading zeros. Once we find a "
"non-zero digit, we will initialize a counter to `0` and start taking three "
"steps:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3058
msgid "Send the digit to the output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3059
msgid ""
"Append the digit to a buffer we will use later to produce the packed decimal "
"we can send to the FPU."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3060
msgid "Increase the counter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3062
msgid ""
"Now, while we are taking these three steps, we also need to watch out for "
"one of two conditions:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3064
msgid ""
"If the counter grows above 18, we stop appending to the buffer. We continue "
"reading the digits and sending them to the output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3065
msgid ""
"If, or rather _when_, the next input character is not a digit, we are done "
"inputting for now."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3068
msgid ""
-"Incidentally, we can simply discard the non-digit, unless it is a `#`, which "
-"we must return to the input stream. It starts a comment, so we must see it "
-"after we are done producing output and start looking for more input."
+"Incidentally, we can simply discard the non-digit, unless it is a `+#+`, "
+"which we must return to the input stream. It starts a comment, so we must "
+"see it after we are done producing output and start looking for more input."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3070
msgid ""
"That still leaves one possibility uncovered: If all the user enters is a "
"zero (or several zeros), we will never find a non-zero to display."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3073
msgid ""
"We can determine this has happened whenever our counter stays at `0`. In "
"that case we need to send `0` to the output, and perform another \"slap in "
"the face\":"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3077
#, no-wrap
msgid "0\t???\t???\t???\t???\t???\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3080
msgid ""
"Once we have displayed the focal length and determined it is valid (greater "
"than `0` but not exceeding 18 digits), we can calculate the pinhole diameter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3083
msgid ""
"It is not by coincidence that _pinhole_ contains the word _pin_. Indeed, "
"many a pinhole literally is a _pin hole_, a hole carefully punched with the "
"tip of a pin."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3086
msgid ""
"That is because a typical pinhole is very small. Our formula gets the result "
"in millimeters. We will multiply it by `1000`, so we can output the result "
"in _microns_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3088
msgid "At this point we have yet another trap to face: _Too much precision._"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3092
msgid ""
"Yes, the FPU was designed for high precision mathematics. But we are not "
"dealing with high precision mathematics. We are dealing with physics "
"(optics, specifically)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3096
msgid ""
"Suppose we want to convert a truck into a pinhole camera (we would not be "
"the first ones to do that!). Suppose its box is `12` meters long, so we "
"have the focal length of `12000`. Well, using Bender's constant, it gives "
"us square root of `12000` multiplied by `0.04`, which is `4.381780460` "
"millimeters, or `4381.780460` microns."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3101
msgid ""
"Put either way, the result is absurdly precise. Our truck is not _exactly_ "
"`12000` millimeters long. We did not measure its length with such a "
"precision, so stating we need a pinhole with the diameter of `4.381780460` "
"millimeters is, well, deceiving. `4.4` millimeters would do just fine."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3106
msgid ""
"I \"only\" used ten digits in the above example. Imagine the absurdity of "
"going for all 18!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3112
msgid ""
"We need to limit the number of significant digits of our result. One way of "
"doing it is by using an integer representing microns. So, our truck would "
"need a pinhole with the diameter of `4382` microns. Looking at that number, "
"we still decide that `4400` microns, or `4.4` millimeters is close enough."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3115
msgid ""
"Additionally, we can decide that no matter how big a result we get, we only "
"want to display four significant digits (or any other number of them, of "
"course). Alas, the FPU does not offer rounding to a specific number of "
"digits (after all, it does not view the numbers as decimal but as binary)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3117
msgid ""
"We, therefore, must devise an algorithm to reduce the number of significant "
"digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3119
msgid ""
"Here is mine (I think it is awkward-if you know a better one, _please_, let "
"me know):"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3122
msgid "Initialize a counter to `0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3123
msgid ""
"While the number is greater than or equal to `10000`, divide it by `10` and "
"increase the counter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3124
msgid "Output the result."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3125
msgid ""
"While the counter is greater than `0`, output `0` and decrease the counter."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3130
msgid ""
"The `10000` is only good if you want _four_ significant digits. For any "
"other number of significant digits, replace `10000` with `10` raised to the "
"number of significant digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3133
msgid ""
"We will, then, output the pinhole diameter in microns, rounded off to four "
"significant digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3136
msgid ""
"At this point, we know the _focal length_ and the _pinhole diameter_. That "
"means we have enough information to also calculate the _f-number_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3140
msgid ""
"We will display the f-number, rounded to four significant digits. Chances "
"are the f-number will tell us very little. To make it more meaningful, we "
"can find the nearest _normalized f-number_, i.e., the nearest power of the "
"square root of 2."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3146
msgid ""
"We do that by multiplying the actual f-number by itself, which, of course, "
"will give us its `square`. We will then calculate its base-2 logarithm, "
"which is much easier to do than calculating the base-square-root-of-2 "
"logarithm! We will round the result to the nearest integer. Next, we will "
"raise 2 to the result. Actually, the FPU gives us a good shortcut to do "
"that: We can use the `fscale` op code to \"scale\" 1, which is analogous to "
"``shift``ing an integer left. Finally, we calculate the square root of it "
"all, and we have the nearest normalized f-number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3149
msgid ""
"If all that sounds overwhelming-or too much work, perhaps-it may become much "
"clearer if you see the code. It takes 9 op codes altogether:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3161
#, no-wrap
msgid ""
"fmul\tst0, st0\n"
"\tfld1\n"
"\tfld\tst1\n"
"\tfyl2x\n"
"\tfrndint\n"
"\tfld1\n"
"\tfscale\n"
"\tfsqrt\n"
"\tfstp\tst1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3165
msgid ""
"The first line, `fmul st0, st0`, squares the contents of the TOS (top of the "
"stack, same as `st`, called `st0` by nasm). The `fld1` pushes `1` on the "
"TOS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3169
msgid ""
"The next line, `fld st1`, pushes the square back to the TOS. At this point "
"the square is both in `st` and `st(2)` (it will become clear why we leave a "
"second copy on the stack in a moment). `st(1)` contains `1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3172
msgid ""
"Next, `fyl2x` calculates base-2 logarithm of `st` multiplied by `st(1)`. "
"That is why we placed `1` on `st(1)` before."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3174
msgid ""
"At this point, `st` contains the logarithm we have just calculated, `st(1)` "
"contains the square of the actual f-number we saved for later."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3178
msgid ""
"`frndint` rounds the TOS to the nearest integer. `fld1` pushes a `1`. "
"`fscale` shifts the `1` we have on the TOS by the value in `st(1)`, "
"effectively raising 2 to `st(1)`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3180
msgid ""
"Finally, `fsqrt` calculates the square root of the result, i.e., the nearest "
"normalized f-number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3183
msgid ""
"We now have the nearest normalized f-number on the TOS, the base-2 logarithm "
"rounded to the nearest integer in `st(1)`, and the square of the actual f-"
"number in `st(2)`. We are saving the value in `st(2)` for later."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3189
msgid ""
"But we do not need the contents of `st(1)` anymore. The last line, `fstp "
"st1`, places the contents of `st` to `st(1)`, and pops. As a result, what "
"was `st(1)` is now `st`, what was `st(2)` is now `st(1)`, etc. The new `st` "
"contains the normalized f-number. The new `st(1)` contains the square of "
"the actual f-number we have stored there for posterity."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3192
msgid ""
"At this point, we are ready to output the normalized f-number. Because it "
"is normalized, we will not round it off to four significant digits, but will "
"send it out in its full precision."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3195
msgid ""
"The normalized f-number is useful as long as it is reasonably small and can "
"be found on our light meter. Otherwise we need a different method of "
"determining proper exposure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3197
msgid ""
"Earlier we have figured out the formula of calculating proper exposure at an "
"arbitrary f-number from that measured at a different f-number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3200
msgid ""
"Every light meter I have ever seen can determine proper exposure at f5.6. "
"We will, therefore, calculate an _\"f5.6 multiplier,\"_ i.e., by how much we "
"need to multiply the exposure measured at f5.6 to determine the proper "
"exposure for our pinhole camera."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3202
msgid ""
"From the above formula we know this factor can be calculated by dividing our "
"f-number (the actual one, not the normalized one) by `5.6`, and squaring the "
"result."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3204
msgid ""
"Mathematically, dividing the square of our f-number by the square of `5.6` "
"will give us the same result."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3207
msgid ""
"Computationally, we do not want to square two numbers when we can only "
"square one. So, the first solution seems better at first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3215
msgid ""
"`5.6` is a _constant_. We do not have to have our FPU waste precious "
"cycles. We can just tell it to divide the square of the f-number by "
"whatever `5.6²` equals to. Or we can divide the f-number by `5.6`, and then "
"square the result. The two ways now seem equal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3217
msgid "But, they are not!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3221
msgid ""
"Having studied the principles of photography above, we remember that the "
"`5.6` is actually square root of 2 raised to the fifth power. An "
"_irrational_ number. The square of this number is _exactly_ `32`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3227
msgid ""
"Not only is `32` an integer, it is a power of 2. We do not need to divide "
"the square of the f-number by `32`. We only need to use `fscale` to shift "
"it right by five positions. In the FPU lingo it means we will `fscale` it "
"with `st(1)` equal to `-5`. That is _much faster_ than a division."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3230
msgid ""
"So, now it has become clear why we have saved the square of the f-number on "
"the top of the FPU stack. The calculation of the f5.6 multiplier is the "
"easiest calculation of this entire program! We will output it rounded to "
"four significant digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3233
msgid ""
"There is one more useful number we can calculate: The number of stops our f-"
"number is from f5.6. This may help us if our f-number is just outside the "
"range of our light meter, but we have a shutter which lets us set various "
"speeds, and this shutter uses stops."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3236
msgid ""
"Say, our f-number is 5 stops from f5.6, and the light meter says we should "
"use 1/1000 sec. Then we can set our shutter speed to 1/1000 first, then "
"move the dial by 5 stops."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3241
msgid ""
"This calculation is quite easy as well. All we have to do is to calculate "
"the base-2 logarithm of the f5.6 multiplier we had just calculated (though "
"we need its value from before we rounded it off). We then output the result "
"rounded to the nearest integer. We do not need to worry about having more "
"than four significant digits in this one: The result is most likely to have "
"only one or two digits anyway."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3243
#, no-wrap
msgid "FPU Optimizations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3246
msgid ""
"In assembly language we can optimize the FPU code in ways impossible in high "
"languages, including C."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3250
msgid ""
"Whenever a C function needs to calculate a floating-point value, it loads "
"all necessary variables and constants into FPU registers. It then does "
"whatever calculation is required to get the correct result. Good C "
"compilers can optimize that part of the code really well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3254
msgid ""
"It \"returns\" the value by leaving the result on the TOS. However, before "
"it returns, it cleans up. Any variables and constants it used in its "
"calculation are now gone from the FPU."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3256
msgid ""
"It cannot do what we just did above: We calculated the square of the f-"
"number and kept it on the stack for later use by another function."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3259
msgid ""
"We _knew_ we would need that value later on. We also knew we had enough "
"room on the stack (which only has room for 8 numbers) to store it there."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3261
msgid ""
"A C compiler has no way of knowing that a value it has on the stack will be "
"required again in the very near future."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3264
msgid ""
"Of course, the C programmer may know it. But the only recourse he has is to "
"store the value in a memory variable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3266
msgid ""
"That means, for one, the value will be changed from the 80-bit precision "
"used internally by the FPU to a C _double_ (64 bits) or even _single_ (32 "
"bits)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3269
msgid ""
"That also means that the value must be moved from the TOS into the memory, "
"and then back again. Alas, of all FPU operations, the ones that access the "
"computer memory are the slowest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3271
msgid ""
"So, whenever programming the FPU in assembly language, look for the ways of "
"keeping intermediate results on the FPU stack."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3273
msgid ""
"We can take that idea even further! In our program we are using a _constant_ "
"(the one we named `PC`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3276
msgid ""
"It does not matter how many pinhole diameters we are calculating: 1, 10, 20, "
"1000, we are always using the same constant. Therefore, we can optimize our "
"program by keeping the constant on the stack all the time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3279
msgid ""
"Early on in our program, we are calculating the value of the above "
"constant. We need to divide our input by `10` for every digit in the "
"constant."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3282
msgid ""
"It is much faster to multiply than to divide. So, at the start of our "
"program, we divide `10` into `1` to obtain `0.1`, which we then keep on the "
"stack: Instead of dividing the input by `10` for every digit, we multiply it "
"by `0.1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3286
msgid ""
"By the way, we do not input `0.1` directly, even though we could. We have a "
"reason for that: While `0.1` can be expressed with just one decimal place, "
"we do not know how many _binary_ places it takes. We, therefore, let the "
"FPU calculate its binary value to its own high precision."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3291
msgid ""
"We are using other constants: We multiply the pinhole diameter by `1000` to "
"convert it from millimeters to microns. We compare numbers to `10000` when "
"we are rounding them off to four significant digits. So, we keep both, "
"`1000` and `10000`, on the stack. And, of course, we reuse the `0.1` when "
"rounding off numbers to four digits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3297
msgid ""
"Last but not least, we keep `-5` on the stack. We need it to scale the "
"square of the f-number, instead of dividing it by `32`. It is not by "
"coincidence we load this constant last. That makes it the top of the stack "
"when only the constants are on it. So, when the square of the f-number is "
"being scaled, the `-5` is at `st(1)`, precisely where `fscale` expects it to "
"be."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3300
msgid ""
"It is common to create certain constants from scratch instead of loading "
"them from the memory. That is what we are doing with `-5`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3309
#, no-wrap
msgid ""
"\tfld1\t\t\t; TOS = 1\n"
"\tfadd\tst0, st0\t; TOS = 2\n"
"\tfadd\tst0, st0\t; TOS = 4\n"
"\tfld1\t\t\t; TOS = 1\n"
"\tfaddp\tst1, st0\t; TOS = 5\n"
"\tfchs\t\t\t; TOS = -5\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3312
msgid ""
"We can generalize all these optimizations into one rule: _Keep repeat values "
"on the stack!_"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3317
msgid ""
"_PostScript(R)_ is a stack-oriented programming language. There are many "
"more books available about PostScript(R) than about the FPU assembly "
"language: Mastering PostScript(R) will help you master the FPU."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3320
#, no-wrap
msgid "pinhole-The Code"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3335
#, no-wrap
msgid ""
";;;;;;; pinhole.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
";\n"
"; Find various parameters of a pinhole camera construction and use\n"
";\n"
"; Started:\t 9-Jun-2001\n"
"; Updated:\t10-Jun-2001\n"
";\n"
"; Copyright (c) 2001 G. Adam Stanislav\n"
"; All rights reserved.\n"
";\n"
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3370
#, no-wrap
msgid ""
"section\t.data\n"
"align 4\n"
"ten\tdd\t10\n"
"thousand\tdd\t1000\n"
"tthou\tdd\t10000\n"
"fd.in\tdd\tstdin\n"
"fd.out\tdd\tstdout\n"
"envar\tdb\t'PINHOLE='\t; Exactly 8 bytes, or 2 dwords long\n"
"pinhole\tdb\t'04,', \t\t; Bender's constant (0.04)\n"
"connors\tdb\t'037', 0Ah\t; Connors' constant\n"
"usg\tdb\t'Usage: pinhole [-b] [-c] [-e] [-p <value>] [-o <outfile>] [-i <infile>]', 0Ah\n"
"usglen\tequ\t$-usg\n"
"iemsg\tdb\t\"pinhole: Can't open input file\", 0Ah\n"
"iemlen\tequ\t$-iemsg\n"
"oemsg\tdb\t\"pinhole: Can't create output file\", 0Ah\n"
"oemlen\tequ\t$-oemsg\n"
"pinmsg\tdb\t\"pinhole: The PINHOLE constant must not be 0\", 0Ah\n"
"pinlen\tequ\t$-pinmsg\n"
"toobig\tdb\t\"pinhole: The PINHOLE constant may not exceed 18 decimal places\", 0Ah\n"
"biglen\tequ\t$-toobig\n"
"huhmsg\tdb\t9, '???'\n"
"separ\tdb\t9, '???'\n"
"sep2\tdb\t9, '???'\n"
"sep3\tdb\t9, '???'\n"
"sep4\tdb\t9, '???', 0Ah\n"
"huhlen\tequ\t$-huhmsg\n"
"header\tdb\t'focal length in millimeters,pinhole diameter in microns,'\n"
"\tdb\t'F-number,normalized F-number,F-5.6 multiplier,stops '\n"
"\tdb\t'from F-5.6', 0Ah\n"
"headlen\tequ\t$-header\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3376
#, no-wrap
msgid ""
"section .bss\n"
"ibuffer\tresb\tBUFSIZE\n"
"obuffer\tresb\tBUFSIZE\n"
"dbuffer\tresb\t20\t\t; decimal input buffer\n"
"bbuffer\tresb\t10\t\t; BCD buffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3387
#, no-wrap
msgid ""
"section\t.text\n"
"align 4\n"
"huh:\n"
"\tcall\twrite\n"
"\tpush\tdword huhlen\n"
"\tpush\tdword huhmsg\n"
"\tpush\tdword [fd.out]\n"
"\tsys.write\n"
"\tadd\tesp, byte 12\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3396
#, no-wrap
msgid ""
"align 4\n"
"perr:\n"
"\tpush\tdword pinlen\n"
"\tpush\tdword pinmsg\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 4\t\t; return failure\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3405
#, no-wrap
msgid ""
"align 4\n"
"consttoobig:\n"
"\tpush\tdword biglen\n"
"\tpush\tdword toobig\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 5\t\t; return failure\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3414
#, no-wrap
msgid ""
"align 4\n"
"ierr:\n"
"\tpush\tdword iemlen\n"
"\tpush\tdword iemsg\n"
"\tpush\tdword stderr\n"
"\tsys.write\n"
"\tpush\tdword 1\t\t; return failure\n"
"\tsys.exit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3438
#, no-wrap
msgid ""
"align 4\n"
"global\t_start\n"
"_start:\n"
"\tadd\tesp, byte 8\t; discard argc and argv[0]\n"
"\tsub\tesi, esi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3443
#, no-wrap
msgid ""
".arg:\n"
"\tpop\tecx\n"
"\tor\tecx, ecx\n"
"\tje\tnear .getenv\t\t; no more arguments\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3451
#, no-wrap
msgid ""
"\tinc\tecx\n"
"\tmov\tax, [ecx]\n"
"\tinc\tecx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3469
#, no-wrap
msgid ""
"\tor\tah, ah\n"
"\tjne\t.openoutput\n"
"\tpop\tecx\n"
"\tjecxz\tusage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3496
#, no-wrap
msgid ""
"\t; Find the path to the input file\n"
"\tor\tah, ah\n"
"\tjne\t.openinput\n"
"\tpop\tecx\n"
"\tor\tecx, ecx\n"
"\tje near usage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3512
#, no-wrap
msgid ""
".p:\n"
"\tcmp\tal, 'p'\n"
"\tjne\t.c\n"
"\tor\tah, ah\n"
"\tjne\t.pcheck\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3516
#, no-wrap
msgid ""
"\tpop\tecx\n"
"\tor\tecx, ecx\n"
"\tje\tnear usage\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3518
#, no-wrap
msgid "\tmov\tah, [ecx]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3526
#, no-wrap
msgid ""
".pcheck:\n"
"\tcmp\tah, '0'\n"
"\tjl\tnear usage\n"
"\tcmp\tah, '9'\n"
"\tja\tnear usage\n"
"\tmov\tesi, ecx\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3534
#, no-wrap
msgid ""
".c:\n"
"\tcmp\tal, 'c'\n"
"\tjne\t.b\n"
"\tor\tah, ah\n"
"\tjne\tnear usage\n"
"\tmov\tesi, connors\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3542
#, no-wrap
msgid ""
".b:\n"
"\tcmp\tal, 'b'\n"
"\tjne\t.e\n"
"\tor\tah, ah\n"
"\tjne\tnear usage\n"
"\tmov\tesi, pinhole\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3555
#, no-wrap
msgid ""
".e:\n"
"\tcmp\tal, 'e'\n"
"\tjne\tnear usage\n"
"\tor\tah, ah\n"
"\tjne\tnear usage\n"
"\tmov\tal, ','\n"
"\tmov\t[huhmsg], al\n"
"\tmov\t[separ], al\n"
"\tmov\t[sep2], al\n"
"\tmov\t[sep3], al\n"
"\tmov\t[sep4], al\n"
"\tjmp\t.arg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3562
#, no-wrap
msgid ""
"align 4\n"
".getenv:\n"
"\t; If ESI = 0, we did not have a -p argument,\n"
"\t; and need to check the environment for \"PINHOLE=\"\n"
"\tor\tesi, esi\n"
"\tjne\t.init\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3564
#, no-wrap
msgid "\tsub\tecx, ecx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3569
#, no-wrap
msgid ""
".nextenv:\n"
"\tpop\tesi\n"
"\tor\tesi, esi\n"
"\tje\t.default\t; no PINHOLE envar found\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3575
#, no-wrap
msgid ""
"\t; check if this envar starts with 'PINHOLE='\n"
"\tmov\tedi, envar\n"
"\tmov\tcl, 2\t\t; 'PINHOLE=' is 2 dwords long\n"
"rep\tcmpsd\n"
"\tjne\t.nextenv\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3583
#, no-wrap
msgid ""
"\t; Check if it is followed by a digit\n"
"\tmov\tal, [esi]\n"
"\tcmp\tal, '0'\n"
"\tjl\t.default\n"
"\tcmp\tal, '9'\n"
"\tjbe\t.init\n"
"\t; fall through\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3590
#, no-wrap
msgid ""
"align 4\n"
".default:\n"
"\t; We got here because we had no -p argument,\n"
"\t; and did not find the PINHOLE envar.\n"
"\tmov\tesi, pinhole\n"
"\t; fall through\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3599
#, no-wrap
msgid ""
"align 4\n"
".init:\n"
"\tsub\teax, eax\n"
"\tsub\tebx, ebx\n"
"\tsub\tecx, ecx\n"
"\tsub\tedx, edx\n"
"\tmov\tedi, dbuffer+1\n"
"\tmov\tbyte [dbuffer], '0'\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3608
#, no-wrap
msgid ""
"\t; Convert the pinhole constant to real\n"
".constloop:\n"
"\tlodsb\n"
"\tcmp\tal, '9'\n"
"\tja\t.setconst\n"
"\tcmp\tal, '0'\n"
"\tje\t.processconst\n"
"\tjb\t.setconst\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3610
#, no-wrap
msgid "\tinc\tdl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3617
#, no-wrap
msgid ""
".processconst:\n"
"\tinc\tcl\n"
"\tcmp\tcl, 18\n"
"\tja\tnear consttoobig\n"
"\tstosb\n"
"\tjmp\tshort .constloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3622
#, no-wrap
msgid ""
"align 4\n"
".setconst:\n"
"\tor\tdl, dl\n"
"\tje\tnear perr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3625
#, no-wrap
msgid ""
"\tfinit\n"
"\tfild\tdword [tthou]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3629
#, no-wrap
msgid ""
"\tfld1\n"
"\tfild\tdword [ten]\n"
"\tfdivp\tst1, st0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3632
#, no-wrap
msgid ""
"\tfild\tdword [thousand]\n"
"\tmov\tedi, obuffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3635
#, no-wrap
msgid ""
"\tmov\tebp, ecx\n"
"\tcall\tbcdload\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3639
#, no-wrap
msgid ""
".constdiv:\n"
"\tfmul\tst0, st2\n"
"\tloop\t.constdiv\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3646
#, no-wrap
msgid ""
"\tfld1\n"
"\tfadd\tst0, st0\n"
"\tfadd\tst0, st0\n"
"\tfld1\n"
"\tfaddp\tst1, st0\n"
"\tfchs\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3651
#, no-wrap
msgid ""
"\t; If we are creating a CSV file,\n"
"\t; print header\n"
"\tcmp\tbyte [separ], ','\n"
"\tjne\t.bigloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3656
#, no-wrap
msgid ""
"\tpush\tdword headlen\n"
"\tpush\tdword header\n"
"\tpush\tdword [fd.out]\n"
"\tsys.write\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3660
#, no-wrap
msgid ""
".bigloop:\n"
"\tcall\tgetchar\n"
"\tjc\tnear done\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3666
#, no-wrap
msgid ""
"\t; Skip to the end of the line if you got '#'\n"
"\tcmp\tal, '#'\n"
"\tjne\t.num\n"
"\tcall\tskiptoeol\n"
"\tjmp\tshort .bigloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3673
#, no-wrap
msgid ""
".num:\n"
"\t; See if you got a number\n"
"\tcmp\tal, '0'\n"
"\tjl\t.bigloop\n"
"\tcmp\tal, '9'\n"
"\tja\t.bigloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3677
#, no-wrap
msgid ""
"\t; Yes, we have a number\n"
"\tsub\tebp, ebp\n"
"\tsub\tedx, edx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3682
#, no-wrap
msgid ""
".number:\n"
"\tcmp\tal, '0'\n"
"\tje\t.number0\n"
"\tmov\tdl, 1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3693
#, no-wrap
msgid ""
".number0:\n"
"\tor\tdl, dl\t\t; Skip leading 0's\n"
"\tje\t.nextnumber\n"
"\tpush\teax\n"
"\tcall\tputchar\n"
"\tpop\teax\n"
"\tinc\tebp\n"
"\tcmp\tebp, 19\n"
"\tjae\t.nextnumber\n"
"\tmov\t[dbuffer+ebp], al\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3704
#, no-wrap
msgid ""
".nextnumber:\n"
"\tcall\tgetchar\n"
"\tjc\t.work\n"
"\tcmp\tal, '#'\n"
"\tje\t.ungetc\n"
"\tcmp\tal, '0'\n"
"\tjl\t.work\n"
"\tcmp\tal, '9'\n"
"\tja\t.work\n"
"\tjmp\tshort .number\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3708
#, no-wrap
msgid ""
".ungetc:\n"
"\tdec\tesi\n"
"\tinc\tebx\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3713
#, no-wrap
msgid ""
".work:\n"
"\t; Now, do all the work\n"
"\tor\tdl, dl\n"
"\tje\tnear .work0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3716
#, no-wrap
msgid ""
"\tcmp\tebp, 19\n"
"\tjae\tnear .toobig\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3718
#, no-wrap
msgid "\tcall\tbcdload\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3720
#, no-wrap
msgid "\t; Calculate pinhole diameter\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3727
#, no-wrap
msgid ""
"\tfld\tst0\t; save it\n"
"\tfsqrt\n"
"\tfmul\tst0, st3\n"
"\tfld\tst0\n"
"\tfmul\tst5\n"
"\tsub\tebp, ebp\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3737
#, no-wrap
msgid ""
"\t; Round off to 4 significant digits\n"
".diameter:\n"
"\tfcom\tst0, st7\n"
"\tfstsw\tax\n"
"\tsahf\n"
"\tjb\t.printdiameter\n"
"\tfmul\tst0, st6\n"
"\tinc\tebp\n"
"\tjmp\tshort .diameter\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3740
#, no-wrap
msgid ""
".printdiameter:\n"
"\tcall\tprintnumber\t; pinhole diameter\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3742
#, no-wrap
msgid "\t; Calculate F-number\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3745
#, no-wrap
msgid ""
"\tfdivp\tst1, st0\n"
"\tfld\tst0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3747
#, no-wrap
msgid "\tsub\tebp, ebp\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3756
#, no-wrap
msgid ""
".fnumber:\n"
"\tfcom\tst0, st6\n"
"\tfstsw\tax\n"
"\tsahf\n"
"\tjb\t.printfnumber\n"
"\tfmul\tst0, st5\n"
"\tinc\tebp\n"
"\tjmp\tshort .fnumber\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3759
#, no-wrap
msgid ""
".printfnumber:\n"
"\tcall\tprintnumber\t; F number\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3770
#, no-wrap
msgid ""
"\t; Calculate normalized F-number\n"
"\tfmul\tst0, st0\n"
"\tfld1\n"
"\tfld\tst1\n"
"\tfyl2x\n"
"\tfrndint\n"
"\tfld1\n"
"\tfscale\n"
"\tfsqrt\n"
"\tfstp\tst1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3773
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3801
#, no-wrap
msgid ""
"\tsub\tebp, ebp\n"
"\tcall\tprintnumber\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3775
#, no-wrap
msgid "\t; Calculate time multiplier from F-5.6\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3778
#, no-wrap
msgid ""
"\tfscale\n"
"\tfld\tst0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3784
#, no-wrap
msgid ""
"\t; Round off to 4 significant digits\n"
".fmul:\n"
"\tfcom\tst0, st6\n"
"\tfstsw\tax\n"
"\tsahf\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3789
#, no-wrap
msgid ""
"\tjb\t.printfmul\n"
"\tinc\tebp\n"
"\tfmul\tst0, st5\n"
"\tjmp\tshort .fmul\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3792
#, no-wrap
msgid ""
".printfmul:\n"
"\tcall\tprintnumber\t; F multiplier\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3794
#, no-wrap
msgid "\t; Calculate F-stops from 5.6\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3798
#, no-wrap
msgid ""
"\tfld1\n"
"\tfxch\tst1\n"
"\tfyl2x\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3805
#, no-wrap
msgid ""
"\tmov\tal, 0Ah\n"
"\tcall\tputchar\n"
"\tjmp\t.bigloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3809
#, no-wrap
msgid ""
".work0:\n"
"\tmov\tal, '0'\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3814
#, no-wrap
msgid ""
"align 4\n"
".toobig:\n"
"\tcall\thuh\n"
"\tjmp\t.bigloop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3818
#, no-wrap
msgid ""
"align 4\n"
"done:\n"
"\tcall\twrite\t\t; flush output buffer\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3827
#, no-wrap
msgid "\tfinit\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3840
#, no-wrap
msgid ""
"align 4\n"
"skiptoeol:\n"
"\t; Keep reading until you come to cr, lf, or eof\n"
"\tcall\tgetchar\n"
"\tjc\tdone\n"
"\tcmp\tal, 0Ah\n"
"\tjne\t.cr\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3845
#, no-wrap
msgid ""
".cr:\n"
"\tcmp\tal, 0Dh\n"
"\tjne\tskiptoeol\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3858
#, no-wrap
msgid ""
".fetch:\n"
"\tlodsb\n"
"\tdec\tebx\n"
"\tclc\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3875
#, no-wrap
msgid ""
".read:\n"
"\tpush\tdword BUFSIZE\n"
"\tmov\tesi, ibuffer\n"
"\tpush\tesi\n"
"\tpush\tdword [fd.in]\n"
"\tsys.read\n"
"\tadd\tesp, byte 12\n"
"\tmov\tebx, eax\n"
"\tor\teax, eax\n"
"\tje\t.empty\n"
"\tsub\teax, eax\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3881
#, no-wrap
msgid ""
"align 4\n"
".empty:\n"
"\tadd\tesp, byte 4\n"
"\tstc\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3910
#, no-wrap
msgid ""
"align 4\n"
"bcdload:\n"
"\t; EBP contains the number of chars in dbuffer\n"
"\tpush\tecx\n"
"\tpush\tesi\n"
"\tpush\tedi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3914
#, no-wrap
msgid ""
"\tlea\tecx, [ebp+1]\n"
"\tlea\tesi, [dbuffer+ebp-1]\n"
"\tshr\tecx, 1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3916
#, no-wrap
msgid "\tstd\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3922
#, no-wrap
msgid ""
"\tmov\tedi, bbuffer\n"
"\tsub\teax, eax\n"
"\tmov\t[edi], eax\n"
"\tmov\t[edi+4], eax\n"
"\tmov\t[edi+2], ax\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3931
#, no-wrap
msgid ""
".loop:\n"
"\tlodsw\n"
"\tsub\tax, 3030h\n"
"\tshl\tal, 4\n"
"\tor\tal, ah\n"
"\tmov\t[edi], al\n"
"\tinc\tedi\n"
"\tloop\t.loop\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3933
#, no-wrap
msgid "\tfbld\t[bbuffer]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3940
#, no-wrap
msgid ""
"\tcld\n"
"\tpop\tedi\n"
"\tpop\tesi\n"
"\tpop\tecx\n"
"\tsub\teax, eax\n"
"\tret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3946
#, no-wrap
msgid ""
"align 4\n"
"printnumber:\n"
"\tpush\tebp\n"
"\tmov\tal, [separ]\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3950
#, no-wrap
msgid ""
"\t; Print the integer at the TOS\n"
"\tmov\tebp, bbuffer+9\n"
"\tfbstp\t[bbuffer]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3956
#, no-wrap
msgid ""
"\t; Check the sign\n"
"\tmov\tal, [ebp]\n"
"\tdec\tebp\n"
"\tor\tal, al\n"
"\tjns\t.leading\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3960
#, no-wrap
msgid ""
"\t; We got a negative number (should never happen)\n"
"\tmov\tal, '-'\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3969
#, no-wrap
msgid ""
".leading:\n"
"\t; Skip leading zeros\n"
"\tmov\tal, [ebp]\n"
"\tdec\tebp\n"
"\tor\tal, al\n"
"\tjne\t.first\n"
"\tcmp\tebp, bbuffer\n"
"\tjae\t.leading\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3974
#, no-wrap
msgid ""
"\t; We are here because the result was 0.\n"
"\t; Print '0' and return\n"
"\tmov\tal, '0'\n"
"\tjmp\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3986
#, no-wrap
msgid ""
".first:\n"
"\t; We have found the first non-zero.\n"
"\t; But it is still packed\n"
"\ttest\tal, 0F0h\n"
"\tjz\t.second\n"
"\tpush\teax\n"
"\tshr\tal, 4\n"
"\tadd\tal, '0'\n"
"\tcall\tputchar\n"
"\tpop\teax\n"
"\tand\tal, 0Fh\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3990
#, no-wrap
msgid ""
".second:\n"
"\tadd\tal, '0'\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:3994
#, no-wrap
msgid ""
".next:\n"
"\tcmp\tebp, bbuffer\n"
"\tjb\t.done\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4004
#, no-wrap
msgid ""
"\tmov\tal, [ebp]\n"
"\tpush\teax\n"
"\tshr\tal, 4\n"
"\tadd\tal, '0'\n"
"\tcall\tputchar\n"
"\tpop\teax\n"
"\tand\tal, 0Fh\n"
"\tadd\tal, '0'\n"
"\tcall\tputchar\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4007
#, no-wrap
msgid ""
"\tdec\tebp\n"
"\tjmp\tshort .next\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4012
#, no-wrap
msgid ""
".done:\n"
"\tpop\tebp\n"
"\tor\tebp, ebp\n"
"\tje\t.ret\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4018
#, no-wrap
msgid ""
".zeros:\n"
"\tmov\tal, '0'\n"
"\tcall\tputchar\n"
"\tdec\tebp\n"
"\tjne\t.zeros\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4021
#, no-wrap
msgid ""
".ret:\n"
"\tret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4024
msgid ""
"The code follows the same format as all the other filters we have seen "
"before, with one subtle exception:"
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4027
msgid ""
"We are no longer assuming that the end of input implies the end of things to "
"do, something we took for granted in the _character-oriented_ filters."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4029
msgid ""
"This filter does not process characters. It processes a _language_ (albeit a "
"very simple one, consisting only of numbers)."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4031
msgid "When we have no more input, it can mean one of two things:"
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4033
msgid "We are done and can quit. This is the same as before."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4034
msgid ""
"The last character we have read was a digit. We have stored it at the end of "
"our ASCII-to-float conversion buffer. We now need to convert the contents of "
"that buffer into a number and write the last line of our output."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4036
msgid ""
"For that reason, we have modified our `getchar` and our `read` routines to "
"return with the `carry flag` _clear_ whenever we are fetching another "
"character from the input, or the `carry flag` _set_ whenever there is no "
"more input."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4039
msgid ""
"Of course, we are still using assembly language magic to do that! Take a "
"good look at `getchar`. It _always_ returns with the `carry flag` _clear_."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4041
msgid ""
"Yet, our main code relies on the `carry flag` to tell it when to quit-and it "
"works."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4044
msgid ""
"The magic is in `read`. Whenever it receives more input from the system, it "
"just returns to `getchar`, which fetches a character from the input buffer, "
"_clears_ the `carry flag` and returns."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4047
msgid ""
"But when `read` receives no more input from the system, it does _not_ return "
"to `getchar` at all. Instead, the `add esp, byte 4` op code adds `4` to "
"`ESP`, _sets_ the `carry flag`, and returns."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4051
msgid ""
"So, where does it return to? Whenever a program uses the `call` op code, the "
"microprocessor ``push``es the return address, i.e., it stores it on the top "
"of the stack (not the FPU stack, the system stack, which is in the memory). "
"When a program uses the `ret` op code, the microprocessor ``pop``s the "
"return value from the stack, and jumps to the address that was stored there."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4053
msgid ""
"But since we added `4` to `ESP` (which is the stack pointer register), we "
"have effectively given the microprocessor a minor case of _amnesia_: It no "
"longer remembers it was `getchar` that ``call``ed `read`."
msgstr ""
#. type: delimited block _ 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4055
msgid ""
"And since `getchar` never ``push``ed anything before ``call``ing `read`, the "
"top of the stack now contains the return address to whatever or whoever "
"``call``ed `getchar`. As far as that caller is concerned, he ``call``ed "
"`getchar`, which ``ret``urned with the `carry flag` set!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4058
msgid ""
"Other than that, the `bcdload` routine is caught up in the middle of a "
"Lilliputian conflict between the Big-Endians and the Little-Endians."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4060
msgid ""
"It is converting the text representation of a number into that number: The "
"text is stored in the big-endian order, but the _packed decimal_ is little-"
"endian."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4063
msgid ""
"To solve the conflict, we use the `std` op code early on. We cancel it with "
"`cld` later on: It is quite important we do not `call` anything that may "
"depend on the default setting of the _direction flag_ while `std` is active."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4065
msgid ""
"Everything else in this code should be quit eclear, providing you have read "
"the entire chapter that precedes it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4068
msgid ""
"It is a classical example of the adage that programming requires a lot of "
"thought and only a little coding. Once we have thought through every tiny "
"detail, the code almost writes itself."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4070
#, no-wrap
msgid "Using pinhole"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4074
msgid ""
"Because we have decided to make the program _ignore_ any input except for "
"numbers (and even those inside a comment), we can actually perform _textual "
"queries_. We do not _have to_, but we _can_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4076
msgid ""
"In my humble opinion, forming a textual query, instead of having to follow a "
"very strict syntax, makes software much more user friendly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4082
msgid ""
"Suppose we want to build a pinhole camera to use the 4x5 inch film. The "
"standard focal length for that film is about 150mm. We want to _fine-tune_ "
"our focal length so the pinhole diameter is as round a number as possible. "
"Let us also suppose we are quite comfortable with cameras but somewhat "
"intimidated by computers. Rather than just have to type in a bunch of "
"numbers, we want to _ask_ a couple of questions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4084
msgid "Our session might look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4088
#, no-wrap
msgid "% pinhole\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4090
#, no-wrap
msgid "Computer,\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4103
#, no-wrap
msgid ""
"What size pinhole do I need for the focal length of 150?\n"
"150\t490\t306\t362\t2930\t12\n"
"Hmmm... How about 160?\n"
"160\t506\t316\t362\t3125\t12\n"
"Let's make it 155, please.\n"
"155\t498\t311\t362\t3027\t12\n"
"Ah, let's try 157...\n"
"157\t501\t313\t362\t3066\t12\n"
"156?\n"
"156\t500\t312\t362\t3047\t12\n"
"That's it! Perfect! Thank you very much!\n"
"^D\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4106
msgid ""
"We have found that while for the focal length of 150, our pinhole diameter "
"should be 490 microns, or 0.49 mm, if we go with the almost identical focal "
"length of 156 mm, we can get away with a pinhole diameter of exactly one "
"half of a millimeter."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4108
#, no-wrap
msgid "Scripting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4111
msgid ""
-"Because we have chosen the `#` character to denote the start of a comment, "
+"Because we have chosen the `+#+` character to denote the start of a comment, "
"we can treat our pinhole software as a _scripting language_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4113
msgid "You have probably seen shell _scripts_ that start with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4117
#, no-wrap
msgid "#! /bin/sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4120
msgid "...or..."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4124
#, no-wrap
msgid "#!/bin/sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4127
msgid "...because the blank space after the `#!` is optional."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4130
msgid ""
"Whenever UNIX(R) is asked to run an executable file which starts with the `#!"
"`, it assumes the file is a script. It adds the command to the rest of the "
"first line of the script, and tries to execute that."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4132
msgid ""
"Suppose now that we have installed pinhole in /usr/local/bin/, we can now "
"write a script to calculate various pinhole diameters suitable for various "
"focal lengths commonly used with the 120 film."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4134
msgid "The script might look something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4140
#, no-wrap
msgid ""
"#! /usr/local/bin/pinhole -b -i\n"
"# Find the best pinhole diameter\n"
"# for the 120 film\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4143
#, no-wrap
msgid ""
"### Standard\n"
"80\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4146
#, no-wrap
msgid ""
"### Wide angle\n"
"30, 40, 50, 60, 70\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4149
#, no-wrap
msgid ""
"### Telephoto\n"
"100, 120, 140\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4152
msgid "Because 120 is a medium size film, we may name this file medium."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4154
msgid ""
"We can set its permissions to execute, and run it as if it were a program:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4159
#, no-wrap
msgid ""
"% chmod 755 medium\n"
"% ./medium\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4162
msgid "UNIX(R) will interpret that last command as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4166
#, no-wrap
msgid "% /usr/local/bin/pinhole -b -i ./medium\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4169
msgid "It will run that command and display:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4181
#, no-wrap
msgid ""
"80\t358\t224\t256\t1562\t11\n"
"30\t219\t137\t128\t586\t9\n"
"40\t253\t158\t181\t781\t10\n"
"50\t283\t177\t181\t977\t10\n"
"60\t310\t194\t181\t1172\t10\n"
"70\t335\t209\t181\t1367\t10\n"
"100\t400\t250\t256\t1953\t11\n"
"120\t438\t274\t256\t2344\t11\n"
"140\t473\t296\t256\t2734\t11\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4184
msgid "Now, let us enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4188
#, no-wrap
msgid "% ./medium -c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4191
msgid "UNIX(R) will treat that as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4195
#, no-wrap
msgid "% /usr/local/bin/pinhole -b -i ./medium -c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4199
msgid ""
"That gives it two conflicting options: `-b` and `-c` (Use Bender's constant "
"and use Connors' constant). We have programmed it so later options override "
"early ones-our program will calculate everything using Connors' constant:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4211
#, no-wrap
msgid ""
"80\t331\t242\t256\t1826\t11\n"
"30\t203\t148\t128\t685\t9\n"
"40\t234\t171\t181\t913\t10\n"
"50\t262\t191\t181\t1141\t10\n"
"60\t287\t209\t181\t1370\t10\n"
"70\t310\t226\t256\t1598\t11\n"
"100\t370\t270\t256\t2283\t11\n"
"120\t405\t296\t256\t2739\t11\n"
"140\t438\t320\t362\t3196\t12\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4215
msgid ""
"We decide we want to go with Bender's constant after all. We want to save "
"its values as a comma-separated file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4231
#, no-wrap
msgid ""
"% ./medium -b -e > bender\n"
"% cat bender\n"
"focal length in millimeters,pinhole diameter in microns,F-number,normalized F-number,F-5.6 multiplier,stops from F-5.6\n"
"80,358,224,256,1562,11\n"
"30,219,137,128,586,9\n"
"40,253,158,181,781,10\n"
"50,283,177,181,977,10\n"
"60,310,194,181,1172,10\n"
"70,335,209,181,1367,10\n"
"100,400,250,256,1953,11\n"
"120,438,274,256,2344,11\n"
"140,473,296,256,2734,11\n"
"%\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4234
#, no-wrap
msgid "Caveats"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4238
msgid ""
"Assembly language programmers who \"grew up\" under MS-DOS(R) and Windows(R) "
"often tend to take shortcuts. Reading the keyboard scan codes and writing "
"directly to video memory are two classical examples of practices which, "
"under MS-DOS(R) are not frowned upon but considered the right thing to do."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4240
msgid ""
"The reason? Both the PC BIOS and MS-DOS(R) are notoriously slow when "
"performing these operations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4243
msgid ""
"You may be tempted to continue similar practices in the UNIX(R) "
"environment. For example, I have seen a web site which explains how to "
"access the keyboard scan codes on a popular UNIX(R) clone."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4245
msgid ""
"That is generally a _very bad idea_ in UNIX(R) environment! Let me explain "
"why."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4247
#, no-wrap
msgid "UNIX(R) Is Protected"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4254
msgid ""
"For one thing, it may simply not be possible. UNIX(R) runs in protected "
"mode. Only the kernel and device drivers are allowed to access hardware "
"directly. Perhaps a particular UNIX(R) clone will let you read the keyboard "
"scan codes, but chances are a real UNIX(R) operating system will not. And "
"even if one version may let you do it, the next one may not, so your "
"carefully crafted software may become a dinosaur overnight."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4256
#, no-wrap
msgid "UNIX(R) Is an Abstraction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4259
msgid ""
"But there is a much more important reason not to try accessing the hardware "
"directly (unless, of course, you are writing a device driver), even on the "
"UNIX(R) like systems that let you do it:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4261
msgid "_UNIX(R) is an abstraction!_"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4267
msgid ""
"There is a major difference in the philosophy of design between MS-DOS(R) "
"and UNIX(R). MS-DOS(R) was designed as a single-user system. It is run on "
"a computer with a keyboard and a video screen attached directly to that "
"computer. User input is almost guaranteed to come from that keyboard. Your "
"program's output virtually always ends up on that screen."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4270
msgid ""
"This is NEVER guaranteed under UNIX(R). It is quite common for a UNIX(R) "
"user to pipe and redirect program input and output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4274
#, no-wrap
msgid "% program1 | program2 | program3 > file1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4278
msgid ""
"If you have written program2, your input does not come from the keyboard but "
"from the output of program1. Similarly, your output does not go to the "
"screen but becomes the input for program3 whose output, in turn, goes to [."
"filename]#file1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4281
msgid ""
"But there is more! Even if you made sure that your input comes from, and "
"your output goes to, the terminal, there is no guarantee the terminal is a "
"PC: It may not have its video memory where you expect it, nor may its "
"keyboard be producing PC-style scan codes. It may be a Macintosh(R), or any "
"other computer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4283
msgid ""
"Now you may be shaking your head: My software is in PC assembly language, "
"how can it run on a Macintosh(R)? But I did not say your software would be "
"running on a Macintosh(R), only that its terminal may be a Macintosh(R)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4287
msgid ""
"Under UNIX(R), the terminal does not have to be directly attached to the "
"computer that runs your software, it can even be on another continent, or, "
"for that matter, on another planet. It is perfectly possible that a "
"Macintosh(R) user in Australia connects to a UNIX(R) system in North America "
"(or anywhere else) via telnet. The software then runs on one computer, "
"while the terminal is on a different computer: If you try to read the scan "
"codes, you will get the wrong input!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4290
msgid ""
"Same holds true about any other hardware: A file you are reading may be on a "
"disk you have no direct access to. A camera you are reading images from may "
"be on a space shuttle, connected to you via satellites."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4293
msgid ""
"That is why under UNIX(R) you must never make any assumptions about where "
"your data is coming from and going to. Always let the system handle the "
"physical access to the hardware."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4301
msgid ""
"These are caveats, not absolute rules. Exceptions are possible. For "
"example, if a text editor has determined it is running on a local machine, "
"it may want to read the scan codes directly for improved control. I am not "
"mentioning these caveats to tell you what to do or what not to do, just to "
"make you aware of certain pitfalls that await you if you have just arrived "
"to UNIX(R) form MS-DOS(R). Of course, creative people often break rules, "
"and it is OK as long as they know they are breaking them and why."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4304
#, no-wrap
msgid "Acknowledgements"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4307
msgid ""
"This tutorial would never have been possible without the help of many "
"experienced FreeBSD programmers from the {freebsd-hackers}, many of whom "
"have patiently answered my questions, and pointed me in the right direction "
"in my attempts to explore the inner workings of UNIX(R) system programming "
"in general and FreeBSD in particular."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4310
msgid ""
"Thomas M. Sommers opened the door for me . His https://web.archive.org/"
"web/20090914064615/http://www.codebreakers-journal.com/content/"
"view/262/27[How do I write \"Hello, world\" in FreeBSD assembler?] web page "
"was my first encounter with an example of assembly language programming "
"under FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:4312
msgid ""
"Jake Burkholder has kept the door open by willingly answering all of my "
"questions and supplying me with example assembly language source code."
msgstr ""
diff --git a/documentation/content/en/books/faq/_index.po b/documentation/content/en/books/faq/_index.po
index 141e38b4bd..25702b5e61 100644
--- a/documentation/content/en/books/faq/_index.po
+++ b/documentation/content/en/books/faq/_index.po
@@ -1,7295 +1,7249 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-09-09 20:50-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/faq/_index.adoc:1
#, no-wrap
msgid "Frequently Asked Questions, and answers, covering all aspects of FreeBSD"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/faq/_index.adoc:1
#, no-wrap
msgid "Frequently Asked Questions for FreeBSD 12.X and 13.X"
msgstr ""
#. type: Title =
#: documentation/content/en/books/faq/_index.adoc:12
#, no-wrap
msgid "Frequently Asked Questions for FreeBSD {rel2-relx} and {rel-relx}"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:57
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:60
msgid ""
"This is the Frequently Asked Questions (FAQ) for FreeBSD versions {rel-relx} "
"and {rel2-relx}. Every effort has been made to make this FAQ as informative "
"as possible; if you have any suggestions as to how it may be improved, send "
"them to the {freebsd-doc}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:63
msgid ""
"The latest version of this document is always available from the extref:{faq}"
"[FreeBSD website]. It may also be downloaded as one large link:.[HTML] file "
"with HTTP or as a variety of other formats from the https://download.freebsd."
"org/doc/[FreeBSD FTP server]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:65
msgid "'''"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/faq/_index.adoc:69
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:72
#, no-wrap
msgid "What is FreeBSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:75
msgid ""
"FreeBSD is a modern operating system for desktops, laptops, servers, and "
"embedded systems with support for a large number of https://www.FreeBSD.org/"
"platforms/[platforms]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:79
+#: documentation/content/en/books/faq/_index.adoc:78
msgid ""
"It is based on U.C. Berkeley's \"4.4BSD-Lite\" release, with some \"4.4BSD-"
"Lite2\" enhancements. It is also based indirectly on William Jolitz's port "
"of U.C. Berkeley's \"Net/2\" to the i386(TM), known as \"386BSD\", though "
"very little of the 386BSD code remains."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:81
+#: documentation/content/en/books/faq/_index.adoc:80
msgid ""
"FreeBSD is used by companies, Internet Service Providers, researchers, "
"computer professionals, students and home users all over the world in their "
"work, education and recreation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:83
+#: documentation/content/en/books/faq/_index.adoc:82
msgid ""
"For more detailed information on FreeBSD, refer to the extref:{handbook}"
"[FreeBSD Handbook]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:85
+#: documentation/content/en/books/faq/_index.adoc:84
#, no-wrap
msgid "What is the goal of the FreeBSD Project?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:88
+#: documentation/content/en/books/faq/_index.adoc:87
msgid ""
"The goal of the FreeBSD Project is to provide a stable and fast general "
"purpose operating system that may be used for any purpose without strings "
"attached."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:90
+#: documentation/content/en/books/faq/_index.adoc:89
#, no-wrap
msgid "Does the FreeBSD license have any restrictions?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:94
msgid ""
-"Yes. Those restrictions do not control how the code is used, but how to "
+"Yes. Those restrictions do not control how the code is used, but how to "
"treat the FreeBSD Project itself. The license itself is available at "
"https://www.FreeBSD.org/copyright/freebsd-license/[license] and can be "
"summarized like this:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:96
msgid "Do not claim that you wrote this."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:97
msgid "Do not sue us if it breaks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:98
msgid "Do not remove or modify the license."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:103
+#: documentation/content/en/books/faq/_index.adoc:102
msgid ""
"Many of us have a significant investment in the project and would certainly "
"not mind a little financial compensation now and then, but we definitely do "
"not insist on it. We believe that our first and foremost \"mission\" is to "
"provide code to any and all comers, and for whatever purpose, so that the "
"code gets the widest possible use and provides the widest possible benefit. "
"This, we believe, is one of the most fundamental goals of Free Software and "
"one that we enthusiastically support."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:106
+#: documentation/content/en/books/faq/_index.adoc:105
msgid ""
"Code in our source tree which falls under the https://www.FreeBSD.org/"
"copyright/COPYING[GNU General Public License (GPL)] or https://www.FreeBSD."
"org/copyright/COPYING.LIB[GNU Library General Public License (LGPL)] comes "
"with slightly more strings attached, though at least on the side of enforced "
"access rather than the usual opposite. Due to the additional complexities "
"that can evolve in the commercial use of GPL software, we do, however, "
"endeavor to replace such software with submissions under the more relaxed "
"https://www.FreeBSD.org/copyright/freebsd-license/[FreeBSD license] whenever "
"possible."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:108
+#: documentation/content/en/books/faq/_index.adoc:107
#, no-wrap
msgid "Can FreeBSD replace my current operating system?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:111
msgid ""
-"For most people, yes. But this question is not quite that cut-and-dried."
+"For most people, yes. But this question is not quite that cut-and-dried."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:118
msgid ""
"Most people do not actually use an operating system. They use "
"applications. The applications are what really use the operating system. "
"FreeBSD is designed to provide a robust and full-featured environment for "
"applications. It supports a wide variety of web browsers, office suites, "
"email readers, graphics programs, programming environments, network servers, "
"and much more. Most of these applications can be managed through the "
"https://www.FreeBSD.org/ports/[Ports Collection]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:123
msgid ""
"If an application is only available on one operating system, that operating "
"system cannot just be replaced. Chances are, there is a very similar "
"application on FreeBSD, however. As a solid office or Internet server or a "
"reliable workstation, FreeBSD will almost certainly do everything you need. "
"Many computer users across the world, including both novices and experienced "
"UNIX(R) administrators, use FreeBSD as their only desktop operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:128
msgid ""
"Users migrating to FreeBSD from another UNIX(R)-like environment will find "
"FreeBSD to be similar. Windows(R) and Mac OS(R) users may be interested in "
"instead using https://www.ghostbsd.org/[GhostBSD], https://www.midnightbsd."
"org/[MidnightBSD] or https://www.nomadbsd.org/[NomadBSD] three FreeBSD-based "
"desktop distributions. Non-UNIX(R) users should expect to invest some "
"additional time learning the UNIX(R) way of doing things. This FAQ and the "
"extref:{handbook}[FreeBSD Handbook] are excellent places to start."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:130
#, no-wrap
msgid "Why is it called FreeBSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:133
msgid "It may be used free of charge, even by commercial users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:134
msgid ""
"Full source for the operating system is freely available, and the minimum "
"possible restrictions have been placed upon its use, distribution and "
"incorporation into other work (commercial or non-commercial)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:135
msgid ""
"Anyone who has an improvement or bug fix is free to submit their code and "
"have it added to the source tree (subject to one or two obvious provisions)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:138
msgid ""
"It is worth pointing out that the word \"free\" is being used in two ways "
-"here: one meaning \"at no cost\" and the other meaning \"do whatever you like"
-"\". Apart from one or two things you _cannot_ do with the FreeBSD code, for "
-"example pretending you wrote it, you can really do whatever you like with it."
+"here: one meaning \"at no cost\" and the other meaning \"do whatever you "
+"like\". Apart from one or two things you _cannot_ do with the FreeBSD code, "
+"for example pretending you wrote it, you can really do whatever you like "
+"with it."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:140
#, no-wrap
msgid "What are the differences between FreeBSD and NetBSD, OpenBSD, and other open source BSD operating systems?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:145
+#: documentation/content/en/books/faq/_index.adoc:144
msgid ""
"James Howard wrote a good explanation of the history and differences between "
"the various projects, called https://jameshoward.us/archive/bsd-family-tree/"
"[The BSD Family Tree] which goes a fair way to answering this question. "
"Some of the information is out of date, but the history portion in "
"particular remains accurate."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:148
+#: documentation/content/en/books/faq/_index.adoc:147
msgid ""
"Most of the BSDs share patches and code, even today. All of the BSDs have "
"common ancestry."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:151
+#: documentation/content/en/books/faq/_index.adoc:150
msgid ""
"The design goals of FreeBSD are described in <<FreeBSD-goals>>, above. The "
"design goals of the other most popular BSDs may be summarized as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:153
msgid ""
-"OpenBSD aims for operating system security above all else. The OpenBSD team "
+"OpenBSD aims for operating system security above all else. The OpenBSD team "
"wrote man:ssh[1] and man:pf[4], which have both been ported to FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:154
msgid "NetBSD aims to be easily ported to other hardware platforms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:155
msgid ""
"DragonFly BSD is a fork of FreeBSD 4.8 that has since developed many "
"interesting features of its own, including the HAMMER file system and "
"support for user-mode \"vkernels\"."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:157
#, no-wrap
msgid "What is the latest version of FreeBSD?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:161
msgid ""
"At any point in the development of FreeBSD, there can be multiple parallel "
"branches. {rel-relx} releases are made from the {rel-stable} branch, and "
"{rel2-relx} releases are made from the {rel2-stable} branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:164
msgid ""
"Up until the release of 12.0, the {rel2-relx} series was the one known as _-"
"STABLE_. However, as of {rel-head-relx}, the {rel2-relx} branch will be "
"designated for an \"extended support\" status and receive only fixes for "
"major problems, such as security-related fixes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:167
msgid ""
"Releases are made <<release-freq,every few months>>. While many people stay "
"more up-to-date with the FreeBSD sources (see the questions on <<current,"
"FreeBSD-CURRENT>> and <<stable,FreeBSD-STABLE>>) than that, doing so is more "
"of a commitment, as the sources are a moving target."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:169
msgid ""
"More information on FreeBSD releases can be found on the https://www.FreeBSD."
"org/releng/#release-build[Release Engineering page] and in man:release[7]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:171
#, no-wrap
msgid "What is _FreeBSD-CURRENT_?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:176
msgid ""
"extref:{handbook}cutting-edge/[FreeBSD-CURRENT, current] is the development "
"version of the operating system, which will in due course become the new "
"FreeBSD-STABLE branch. As such, it is really only of interest to developers "
"working on the system and die-hard hobbyists. See the extref:{handbook}"
"cutting-edge/[relevant section, current] in the extref:{handbook}[Handbook] "
"for details on running _-CURRENT_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/faq/_index.adoc:180
msgid ""
"Users not familiar with FreeBSD should not use FreeBSD-CURRENT. This branch "
-"sometimes evolves quite quickly and due to mistake can be un-buildable at "
+"sometimes evolves quite quickly and due to mistakes can be un-buildable at "
"times. People that use FreeBSD-CURRENT are expected to be able to analyze, "
"debug, and report problems."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/faq/_index.adoc:182
#, no-wrap
msgid "What is the FreeBSD-STABLE concept?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:190
+#: documentation/content/en/books/faq/_index.adoc:189
msgid ""
"_FreeBSD-STABLE_ is the development branch from which major releases are "
"made. Changes go into this branch at a slower pace and with the general "
"assumption that they have first been tested in FreeBSD-CURRENT. However, at "
"any given time, the sources for FreeBSD-STABLE may or may not be suitable "
"for general use, as it may uncover bugs and corner cases that were not yet "
"found in FreeBSD-CURRENT. Users who do not have the resources to perform "
"testing should instead run the most recent release of FreeBSD. _FreeBSD-"
"CURRENT_, on the other hand, has been one unbroken line since 2.0 was "
"released."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:193
+#: documentation/content/en/books/faq/_index.adoc:191
msgid ""
"For more detailed information on branches see \"extref:{releng}[FreeBSD "
"Release Engineering: Creating the Release Branch, rel-branch]\", the status "
"of the branches and the upcoming release schedule can be found on the "
"https://www.FreeBSD.org/releng[Release Engineering Information] page."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:196
+#: documentation/content/en/books/faq/_index.adoc:194
msgid ""
"Version {u-rel123-announce}[{rel123-current}] is the latest release from the "
"{rel2-stable} branch; it was released on {rel123-current-date}. Version {u-"
"rel131-announce}[{rel131-current}] is the latest release from the {rel-"
"stable} branch; it was released on {rel131-current-date}."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:198
+#: documentation/content/en/books/faq/_index.adoc:196
#, no-wrap
msgid "When are FreeBSD releases made?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:204
+#: documentation/content/en/books/faq/_index.adoc:202
msgid ""
"The {re} releases a new major version of FreeBSD about every 18 months and a "
"new minor version about every 8 months, on average. Release dates are "
"announced well in advance, so that the people working on the system know "
"when their projects need to be finished and tested. A testing period "
"precedes each release, to ensure that the addition of new features does not "
"compromise the stability of the release. Many users regard this caution as "
"one of the best things about FreeBSD, even though waiting for all the latest "
"goodies to reach _-STABLE_ can be a little frustrating."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:206
+#: documentation/content/en/books/faq/_index.adoc:204
msgid ""
"More information on the release engineering process (including a schedule of "
"upcoming releases) can be found on the https://www.FreeBSD.org/releng/"
"[release engineering] pages on the FreeBSD Web site."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:208
+#: documentation/content/en/books/faq/_index.adoc:206
msgid ""
"For people who need or want a little more excitement, binary snapshots are "
"made weekly as discussed above."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:210
+#: documentation/content/en/books/faq/_index.adoc:208
#, no-wrap
msgid "When are FreeBSD snapshots made?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:214
+#: documentation/content/en/books/faq/_index.adoc:212
msgid ""
"FreeBSD link:https://www.FreeBSD.org/snapshots/[snapshot] releases are made "
"based on the current state of the _-CURRENT_ and _-STABLE_ branches. The "
"goals behind each snapshot release are:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:216
+#: documentation/content/en/books/faq/_index.adoc:214
msgid "To test the latest version of the installation software."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:217
+#: documentation/content/en/books/faq/_index.adoc:215
msgid ""
"To give people who would like to run _-CURRENT_ or _-STABLE_ but who do not "
"have the time or bandwidth to follow it on a day-to-day basis an easy way of "
"bootstrapping it onto their systems."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:218
+#: documentation/content/en/books/faq/_index.adoc:217
msgid ""
"To preserve a fixed reference point for the code in question, just in case "
-"we break something really badly later. (Although Subversion normally "
+"we break something really badly later. (Although Subversion normally "
"prevents anything horrible like this happening.)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:219
+#: documentation/content/en/books/faq/_index.adoc:218
msgid ""
"To ensure that all new features and fixes in need of testing have the "
"greatest possible number of potential testers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:222
+#: documentation/content/en/books/faq/_index.adoc:221
msgid ""
"No claims are made that any _-CURRENT_ snapshot can be considered "
"\"production quality\" for any purpose. If a stable and fully tested system "
"is needed, stick to full releases."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:224
+#: documentation/content/en/books/faq/_index.adoc:223
msgid ""
"Snapshot releases are directly available from link:https://www.FreeBSD.org/"
"snapshots/[snapshot]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:226
+#: documentation/content/en/books/faq/_index.adoc:225
msgid ""
"Official snapshots are generated on a regular basis for all actively "
"developed branches."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:228
+#: documentation/content/en/books/faq/_index.adoc:227
#, no-wrap
msgid "Who is responsible for FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:233
+#: documentation/content/en/books/faq/_index.adoc:231
msgid ""
"The key decisions concerning the FreeBSD project, such as the overall "
"direction of the project and who is allowed to add code to the source tree, "
"are made by a link:https://www.FreeBSD.org/administration#t-core[core team] "
"of 9 people. There is a much larger team of more than 350 extref:"
"{contributors}[committers, staff-committers] who are authorized to make "
"changes directly to the FreeBSD source tree."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:236
+#: documentation/content/en/books/faq/_index.adoc:233
msgid ""
"However, most non-trivial changes are discussed in advance in the <<mailing,"
"mailing lists>>, and there are no restrictions on who may take part in the "
"discussion."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:238
+#: documentation/content/en/books/faq/_index.adoc:235
#, no-wrap
msgid "Where can I get FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:241
+#: documentation/content/en/books/faq/_index.adoc:238
msgid ""
"Every supported release of FreeBSD is available from the https://www.freebsd."
"org/where/[FreeBSD release locator page]:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:243
+#: documentation/content/en/books/faq/_index.adoc:240
msgid ""
"For the latest {rel-stable} release, {rel131-current}-RELEASE, follow the "
"link for link:https://www.freebsd.org/where/#download-rel131[the appropriate "
"architecture and installation mode for {rel131-current}-RELEASE]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:244
+#: documentation/content/en/books/faq/_index.adoc:241
msgid ""
"For the latest {rel2-stable} release, {rel123-current}-RELEASE, follow the "
"link for link:https://www.freebsd.org/where/#download-rel123[the appropriate "
"architecture and installation mode for {rel123-current}-RELEASE]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:245
+#: documentation/content/en/books/faq/_index.adoc:242
msgid ""
"link:https://www.FreeBSD.org/snapshots/[Snapshot] releases are made monthly "
"for the <<current,-CURRENT>> and <<stable,-STABLE>> branches, these being of "
"service purely to bleeding-edge testers and developers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:247
+#: documentation/content/en/books/faq/_index.adoc:244
msgid ""
"Information about obtaining FreeBSD on CD, DVD, and other media can be found "
"in extref:{handbook}mirrors/[the Handbook, mirrors]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:249
+#: documentation/content/en/books/faq/_index.adoc:246
#, no-wrap
msgid "How do I access the Problem Report database?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:252
+#: documentation/content/en/books/faq/_index.adoc:249
msgid ""
"The Problem Report database of all user change requests may be queried by "
"using our web-based PR https://bugs.FreeBSD.org/search/[query] interface."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:254
+#: documentation/content/en/books/faq/_index.adoc:251
msgid ""
"The link:https://www.FreeBSD.org/support/bugreports[web-based problem report "
"submission interface] can be used to submit problem reports through a web "
"browser."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:256
+#: documentation/content/en/books/faq/_index.adoc:253
msgid ""
"Before submitting a problem report, read extref:{problem-reports}[Writing "
"FreeBSD Problem Reports], an article on how to write good problem reports."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:258
+#: documentation/content/en/books/faq/_index.adoc:255
#, no-wrap
msgid "Documentation and Support"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:261
+#: documentation/content/en/books/faq/_index.adoc:258
#, no-wrap
msgid "What good books are there about FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:264
+#: documentation/content/en/books/faq/_index.adoc:261
msgid ""
"The project produces a wide range of documentation, available online from "
"this link: https://www.FreeBSD.org/docs/[https://www.FreeBSD.org/docs/]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:266
+#: documentation/content/en/books/faq/_index.adoc:263
#, no-wrap
-msgid "Is the documentation available in other formats, such as plain text (ASCII), or PDF?"
+msgid "Is the documentation available in other formats, such as PDF?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:270
+#: documentation/content/en/books/faq/_index.adoc:267
msgid ""
-"Yes. The documentation is available in a number of different formats and "
-"compression schemes on the FreeBSD FTP site, in the https://download.freebsd."
-"org/doc/[/doc/] directory."
+"Yes. link:https://download.freebsd.org/doc/[The documentation is also "
+"available in several formats] on the FreeBSD download site."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:273
-msgid ""
-"The documentation is categorized in a number of different ways. These "
-"include:"
+#: documentation/content/en/books/faq/_index.adoc:269
+msgid "Documentation directories are categorized according to:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:275
+#: documentation/content/en/books/faq/_index.adoc:271
msgid "The document's name, such as `faq`, or `handbook`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:276
+#: documentation/content/en/books/faq/_index.adoc:273
msgid ""
-"The document's language and encoding. These are based on the locale names "
-"found under [.filename]#/usr/share/locale# on a FreeBSD system. The current "
-"languages and encodings are as follows:"
+"The document's language, based on the locale names found under [.filename]#/"
+"usr/share/locale# on a FreeBSD system, with the encodings removed as all "
+"documentation now uses UTF-8. The current languages are:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:281
+#: documentation/content/en/books/faq/_index.adoc:278
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:283
-#: documentation/content/en/books/faq/_index.adoc:354
+#: documentation/content/en/books/faq/_index.adoc:280
+#: documentation/content/en/books/faq/_index.adoc:356
#, no-wrap
msgid "Meaning"
msgstr ""
+#. type: Table
+#: documentation/content/en/books/faq/_index.adoc:281
+#, no-wrap
+msgid "`en`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/faq/_index.adoc:283
+#, no-wrap
+msgid "English"
+msgstr ""
+
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:284
#, no-wrap
-msgid "`en_US.ISO8859-1`"
+msgid "`bn-bd`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:286
#, no-wrap
-msgid "English (United States)"
+msgid "Bengali or Bangla (Bangladesh)"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:287
#, no-wrap
-msgid "`bn_BD.ISO10646-1`"
+msgid "`da`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:289
#, no-wrap
-msgid "Bengali or Bangla (Bangladesh)"
+msgid "Danish"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:290
#, no-wrap
-msgid "`da_DK.ISO8859-1`"
+msgid "`de`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:292
#, no-wrap
-msgid "Danish (Denmark)"
+msgid "German"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:293
#, no-wrap
-msgid "`de_DE.ISO8859-1`"
+msgid "`el`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:295
#, no-wrap
-msgid "German (Germany)"
+msgid "Greek"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:296
#, no-wrap
-msgid "`el_GR.ISO8859-7`"
+msgid "`es`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:298
#, no-wrap
-msgid "Greek (Greece)"
+msgid "Spanish"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:299
#, no-wrap
-msgid "`es_ES.ISO8859-1`"
+msgid "`fr`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:301
#, no-wrap
-msgid "Spanish (Spain)"
+msgid "French"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:302
#, no-wrap
-msgid "`fr_FR.ISO8859-1`"
+msgid "`hu`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:304
#, no-wrap
-msgid "French (France)"
+msgid "Hungarian"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:305
#, no-wrap
-msgid "`hu_HU.ISO8859-2`"
+msgid "`it`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:307
#, no-wrap
-msgid "Hungarian (Hungary)"
+msgid "Italian"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:308
#, no-wrap
-msgid "`it_IT.ISO8859-15`"
+msgid "`ja`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:310
#, no-wrap
-msgid "Italian (Italy)"
+msgid "Japanese"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:311
#, no-wrap
-msgid "`ja_JP.eucJP`"
+msgid "`ko`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:313
#, no-wrap
-msgid "Japanese (Japan, EUC encoding)"
+msgid "Korean"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:314
#, no-wrap
-msgid "`ko_KR.UTF-8`"
+msgid "`mn`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:316
#, no-wrap
-msgid "Korean (Korea, UTF-8 encoding)"
+msgid "Mongolian"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:317
#, no-wrap
-msgid "`mn_MN.UTF-8`"
+msgid "`nl`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:319
#, no-wrap
-msgid "Mongolian (Mongolia, UTF-8 encoding)"
+msgid "Dutch"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:320
#, no-wrap
-msgid "`nl_NL.ISO8859-1`"
+msgid "`pl`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:322
#, no-wrap
-msgid "Dutch (Netherlands)"
+msgid "Polish"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:323
#, no-wrap
-msgid "`pl_PL.ISO8859-2`"
+msgid "`pt-br`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:325
#, no-wrap
-msgid "Polish (Poland)"
+msgid "Portuguese (Brazil)"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:326
#, no-wrap
-msgid "`pt_BR.ISO8859-1`"
+msgid "`ru`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:328
#, no-wrap
-msgid "Portuguese (Brazil)"
+msgid "Russian"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:329
#, no-wrap
-msgid "`ru_RU.KOI8-R`"
+msgid "`tr`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:331
#, no-wrap
-msgid "Russian (Russia, KOI8-R encoding)"
+msgid "Turkish"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:332
#, no-wrap
-msgid "`tr_TR.ISO8859-9`"
+msgid "`zh-cn`"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:334
#, no-wrap
-msgid "Turkish (Turkey)"
+msgid "Simplified Chinese (China)"
msgstr ""
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:335
#, no-wrap
-msgid "`zh_CN.UTF-8`"
+msgid "`zh-tw`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:337
+#: documentation/content/en/books/faq/_index.adoc:336
#, no-wrap
-msgid "Simplified Chinese (China, UTF-8 encoding)"
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:338
-#, no-wrap
-msgid "`zh_TW.UTF-8`"
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:339
-#, no-wrap
-msgid "Traditional Chinese (Taiwan, UTF-8 encoding)"
+msgid "Traditional Chinese (Taiwan)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:344
+#: documentation/content/en/books/faq/_index.adoc:341
msgid "Some documents may not be available in all languages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:347
+#: documentation/content/en/books/faq/_index.adoc:349
msgid ""
-"The document's format. We produce the documentation in a number of different "
-"output formats. Each format has its own advantages and disadvantages. Some "
-"formats are better suited for online reading, while others are meant to be "
-"aesthetically pleasing when printed on paper. Having the documentation "
-"available in any of these formats ensures that our readers will be able to "
-"read the parts they are interested in, either on their monitor, or on paper "
-"after printing the documents. The currently available formats are:"
+"The document's format. We produce the documentation in a number of "
+"different output formats. Each format has its own advantages and "
+"disadvantages. Some formats are better suited for online reading, while "
+"others are meant to be aesthetically pleasing when printed on paper. Having "
+"the documentation available in any of these formats ensures that our readers "
+"will be able to read the parts they are interested in, either on their "
+"monitor, or on paper after printing the documents. The currently available "
+"formats are:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:352
+#: documentation/content/en/books/faq/_index.adoc:354
#, no-wrap
msgid "Format"
msgstr ""
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:355
-#, no-wrap
-msgid "`html-split`"
-msgstr ""
-
#. type: Table
#: documentation/content/en/books/faq/_index.adoc:357
#, no-wrap
-msgid "A collection of small, linked, HTML files."
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:358
-#, no-wrap
msgid "`html`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:360
+#: documentation/content/en/books/faq/_index.adoc:359
#, no-wrap
-msgid "One large HTML file containing the entire document"
+msgid "Depending on the document: one large HTML file containing the entire document or a collection of small linked HTML files, both together with images, stylesheets, and JavaScript"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:361
+#: documentation/content/en/books/faq/_index.adoc:360
#, no-wrap
msgid "`pdf`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:363
+#: documentation/content/en/books/faq/_index.adoc:361
#, no-wrap
msgid "Adobe's Portable Document Format"
msgstr ""
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:364
-#, no-wrap
-msgid "`txt`"
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:365
-#, no-wrap
-msgid "Plain text"
-msgstr ""
-
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:367
+#: documentation/content/en/books/faq/_index.adoc:363
#, no-wrap
msgid "The compression and packaging scheme.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:368
-#, no-wrap
-msgid "Where the format is `html-split`, the files are bundled up using man:tar[1]. The resulting [.filename]#.tar# is then compressed using the compression schemes detailed in the next point.\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:369
+#: documentation/content/en/books/faq/_index.adoc:365
#, no-wrap
-msgid "All the other formats generate one file. For example, [.filename]#article.pdf#, [.filename]#book.html#, and so on.\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:372
msgid ""
-"These files are then compressed using either the `zip` or `bz2` compression "
-"schemes. man:tar[1] can be used to uncompress these files."
+"Where the format is `html`, the files are bundled up using man:tar[1].\n"
+"The resulting [.filename]#.tar# is then compressed using man:gzip[1].\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:374
+#: documentation/content/en/books/faq/_index.adoc:367
+#, no-wrap
msgid ""
-"So the PDF version of the Handbook, compressed using `bzip2` will be stored "
-"in a file called [.filename]#book.pdf.bz2# in the [.filename]#handbook/# "
-"directory."
+"The PDF format generates one file.\n"
+"For example, [.filename]#explaining-bsd_en.pdf#, [.filename]#faq_en.pdf#, and so on.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:376
+#: documentation/content/en/books/faq/_index.adoc:369
msgid ""
-"After choosing the format and compression mechanism, download the compressed "
-"files, uncompress them, and then copy the appropriate documents into place."
+"After choosing the format, download the files, uncompress them if necessary, "
+"then copy the appropriate documents into place."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:379
+#: documentation/content/en/books/faq/_index.adoc:371
msgid ""
-"For example, the split HTML version of the FAQ, compressed using man:"
-"bzip2[1], can be found in [.filename]#doc/en_US.ISO8859-1/books/faq/book."
-"html-split.tar.bz2# To download and uncompress that file, type:"
+"For example, the HTML version of the FAQ can be found in [.filename]#doc/en/"
+"books/faq/faq_en.tar.gz# To download and uncompress that file, type:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:384
+#: documentation/content/en/books/faq/_index.adoc:376
#, no-wrap
msgid ""
-"# fetch https://download.freebsd.org/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2\n"
-"# tar xvf book.html-split.tar.bz2\n"
+"% fetch https://download.freebsd.org/doc/en/books/faq/faq_en.tar.gz\n"
+"% tar xvf faq_en.tar.gz\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:389
+#: documentation/content/en/books/faq/_index.adoc:380
msgid ""
"If the file is compressed, tar will automatically detect the appropriate "
-"format and decompress it correctly, resulting in a collection of [."
-"filename]#.html# files. The main one is called [.filename]#index.html#, "
-"which will contain the table of contents, introductory material, and links "
-"to the other parts of the document."
+"format and decompress it correctly, resulting in a collection of files. The "
+"main one is called [.filename]#index.html#, which will contain the whole "
+"document, starting with the table of contents linking to the other parts of "
+"the document."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:391
+#: documentation/content/en/books/faq/_index.adoc:382
#, no-wrap
msgid "Where do I find info on the FreeBSD mailing lists? What FreeBSD news groups are available?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:394
+#: documentation/content/en/books/faq/_index.adoc:385
msgid ""
"Refer to the extref:{handbook}eresources/[Handbook entry on mailing-lists, "
"eresources-mail] and the extref:{handbook}eresources/[Handbook entry on "
"newsgroups, eresources-news]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:396
+#: documentation/content/en/books/faq/_index.adoc:387
#, no-wrap
msgid "Are there FreeBSD IRC (Internet Relay Chat) channels?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:399
+#: documentation/content/en/books/faq/_index.adoc:390
msgid ""
"Yes, most major IRC networks host a FreeBSD chat channel and the FreeBSD "
"wiki holds an up to date https://wiki.freebsd.org/IRC/Channels[list of IRC "
"channels]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:402
+#: documentation/content/en/books/faq/_index.adoc:393
msgid ""
"Each of these channels are distinct and are not connected to each other. "
"Since their chat styles differ, try each to find one suited to your chat "
"style."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:404
+#: documentation/content/en/books/faq/_index.adoc:395
#, no-wrap
msgid "Are there any web based forums to discuss FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:407
+#: documentation/content/en/books/faq/_index.adoc:398
msgid ""
"The official FreeBSD forums are located at https://forums.FreeBSD.org/"
"[https://forums.FreeBSD.org/]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:409
+#: documentation/content/en/books/faq/_index.adoc:400
#, no-wrap
msgid "Where can I get commercial FreeBSD training and support?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:414
+#: documentation/content/en/books/faq/_index.adoc:403
msgid ""
"http://www.ixsystems.com[iXsystems, Inc.], parent company of the http://www."
"freebsdmall.com/[FreeBSD Mall], provides commercial FreeBSD and TrueOS "
"software http://www.ixsystems.com/support[support], in addition to FreeBSD "
"development and tuning solutions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:417
+#: documentation/content/en/books/faq/_index.adoc:406
msgid ""
"BSD Certification Group, Inc. provides system administration certifications "
"for DragonFly BSD, FreeBSD, NetBSD, and OpenBSD. Refer to http://www."
"BSDCertification.org[their site] for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:419
+#: documentation/content/en/books/faq/_index.adoc:408
msgid ""
"Any other organizations providing training and support should contact the "
"Project to be listed here."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:421
+#: documentation/content/en/books/faq/_index.adoc:410
#, no-wrap
msgid "Installation"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:424
+#: documentation/content/en/books/faq/_index.adoc:413
#, no-wrap
msgid "Which platform should I download? I have a 64 bit capable Intel(R) CPU, but I only see amd64."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:430
+#: documentation/content/en/books/faq/_index.adoc:419
msgid ""
"amd64 is the term FreeBSD uses for 64-bit compatible x86 architectures (also "
"known as \"x86-64\" or \"x64\"). Most modern computers should use amd64. "
"Older hardware should use i386. When installing on a non-x86-compatible "
"architecture, select the platform which best matches the hardware."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:432
+#: documentation/content/en/books/faq/_index.adoc:421
#, no-wrap
msgid "Which file do I download to get FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:435
+#: documentation/content/en/books/faq/_index.adoc:424
msgid ""
"On the https://www.freebsd.org/where/[Getting FreeBSD] page, select `[iso]` "
"next to the architecture that matches the hardware."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:437
+#: documentation/content/en/books/faq/_index.adoc:426
msgid "Any of the following can be used:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:442
+#: documentation/content/en/books/faq/_index.adoc:431
#, no-wrap
msgid "file"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:444
+#: documentation/content/en/books/faq/_index.adoc:433
#, no-wrap
msgid "description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:445
+#: documentation/content/en/books/faq/_index.adoc:434
#, no-wrap
msgid "[.filename]#disc1.iso#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:447
+#: documentation/content/en/books/faq/_index.adoc:436
#, no-wrap
msgid "Contains enough to install FreeBSD and a minimal set of packages."
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:448
+#: documentation/content/en/books/faq/_index.adoc:437
#, no-wrap
msgid "[.filename]#dvd1.iso#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:450
+#: documentation/content/en/books/faq/_index.adoc:439
#, no-wrap
msgid "Similar to [.filename]#disc1.iso# but with additional packages."
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:451
+#: documentation/content/en/books/faq/_index.adoc:440
#, no-wrap
msgid "[.filename]#memstick.img#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:453
+#: documentation/content/en/books/faq/_index.adoc:442
#, no-wrap
msgid "A bootable image sufficient for writing to a USB stick."
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:454
+#: documentation/content/en/books/faq/_index.adoc:443
#, no-wrap
msgid "[.filename]#bootonly.iso#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:455
+#: documentation/content/en/books/faq/_index.adoc:444
#, no-wrap
msgid "A minimal image that requires network access during installation to completely install FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:458
+#: documentation/content/en/books/faq/_index.adoc:447
msgid ""
"Full instructions on this procedure and a little bit more about installation "
"issues in general can be found in the extref:{handbook}bsdinstall[Handbook "
"entry on installing FreeBSD]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:460
+#: documentation/content/en/books/faq/_index.adoc:449
#, no-wrap
msgid "What do I do if the install image does not boot?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:463
+#: documentation/content/en/books/faq/_index.adoc:452
msgid ""
"This can be caused by not downloading the image in _binary_ mode when using "
"FTP."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:467
+#: documentation/content/en/books/faq/_index.adoc:456
msgid ""
"Some FTP clients default their transfer mode to _ascii_ and attempt to "
"change any end-of-line characters received to match the conventions used by "
"the client's system. This will almost invariably corrupt the boot image. "
"Check the SHA-256 checksum of the downloaded boot image: if it is not "
"_exactly_ that on the server, then the download process is suspect."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:469
+#: documentation/content/en/books/faq/_index.adoc:458
msgid ""
"When using a command line FTP client, type _binary_ at the FTP command "
"prompt after getting connected to the server and before starting the "
"download of the image."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:471
+#: documentation/content/en/books/faq/_index.adoc:460
#, no-wrap
msgid "Where are the instructions for installing FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:474
+#: documentation/content/en/books/faq/_index.adoc:463
msgid ""
"Installation instructions can be found at extref:{handbook}bsdinstall/"
"[Handbook entry on installing FreeBSD]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:476
+#: documentation/content/en/books/faq/_index.adoc:465
#, no-wrap
msgid "How can I make my own custom release or install disk?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:480
+#: documentation/content/en/books/faq/_index.adoc:469
msgid ""
"Customized FreeBSD installation media can be created by building a custom "
"release. Follow the instructions in the extref:{releng}[Release "
"Engineering] article."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:482
+#: documentation/content/en/books/faq/_index.adoc:471
#, no-wrap
msgid "Can Windows(R) co-exist with FreeBSD? (x86-specific)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:488
+#: documentation/content/en/books/faq/_index.adoc:477
msgid ""
"If Windows(R) is installed first, then yes. FreeBSD's boot manager will "
"then manage to boot Windows(R) and FreeBSD. If Windows(R) is installed "
"afterwards, it will overwrite the boot manager. If that happens, see the "
"next section."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:490
+#: documentation/content/en/books/faq/_index.adoc:479
#, no-wrap
msgid "Another operating system destroyed my Boot Manager. How do I get it back? (x86-specific)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:495
+#: documentation/content/en/books/faq/_index.adoc:484
msgid ""
"This depends upon the boot manager. The FreeBSD boot selection menu can be "
"reinstalled using man:boot0cfg[8]. For example, to restore the boot menu "
"onto the disk _ada0_:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:499
+#: documentation/content/en/books/faq/_index.adoc:488
#, no-wrap
msgid "# boot0cfg -B ada0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:502
+#: documentation/content/en/books/faq/_index.adoc:491
msgid "The non-interactive MBR bootloader can be installed using man:gpart[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:506
+#: documentation/content/en/books/faq/_index.adoc:495
#, no-wrap
msgid "# gpart bootcode -b /boot/mbr ada0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:509
+#: documentation/content/en/books/faq/_index.adoc:498
msgid "For more complex situations, including GPT disks, see man:gpart[8]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:511
+#: documentation/content/en/books/faq/_index.adoc:500
#, no-wrap
msgid "Do I need to install the source?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:517
+#: documentation/content/en/books/faq/_index.adoc:506
msgid ""
"In general, no. There is nothing in the base system which requires the "
"presence of the source to operate. Some ports, like package:sysutils/"
"lsof[], will not build unless the source is installed. In particular, if "
"the port builds a kernel module or directly operates on kernel structures, "
"the source must be installed."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:519
+#: documentation/content/en/books/faq/_index.adoc:508
#, no-wrap
msgid "Do I need to build a kernel?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:527
+#: documentation/content/en/books/faq/_index.adoc:514
msgid ""
"Usually not. The supplied `GENERIC` kernel contains the drivers an ordinary "
"computer will need. man:freebsd-update[8], the FreeBSD binary upgrade tool, "
"cannot upgrade custom kernels, another reason to stick with the `GENERIC` "
"kernel when possible. For computers with very limited RAM, such as embedded "
"systems, it may be worthwhile to build a smaller custom kernel containing "
"just the required drivers."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:529
+#: documentation/content/en/books/faq/_index.adoc:516
#, no-wrap
msgid "Should I use DES, Blowfish, or MD5 passwords and how do I specify which form my users receive?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:537
+#: documentation/content/en/books/faq/_index.adoc:523
msgid ""
"FreeBSD uses _SHA512_ by default. DES passwords are still available for "
"backwards compatibility with operating systems that still use the less "
"secure password format. FreeBSD also supports the Blowfish and MD5 password "
"formats. Which password format to use for new passwords is controlled by "
"the `passwd_format` login capability in [.filename]#/etc/login.conf#, which "
"takes values of `des`, `blf` (if these are available) or `md5`. See the man:"
"login.conf[5] manual page for more information about login capabilities."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:539
+#: documentation/content/en/books/faq/_index.adoc:525
#, no-wrap
msgid "What are the limits for FFS file systems?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:544
+#: documentation/content/en/books/faq/_index.adoc:530
msgid ""
"For FFS file systems, the largest file system is practically limited by the "
"amount of memory required to man:fsck[8] the file system. man:fsck[8] "
"requires one bit per fragment, which with the default fragment size of 4 KB "
"equates to 32 MB of memory per TB of disk. This does mean that on "
"architectures which limit userland processes to 2 GB (e.g., i386(TM)), the "
"maximum man:fsck[8]'able filesystem is ~60 TB."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:546
+#: documentation/content/en/books/faq/_index.adoc:532
msgid ""
"If there was not a man:fsck[8] memory limit the maximum filesystem size "
"would be 2 ^ 64 (blocks) * 32 KB => 16 Exa * 32 KB => 512 ZettaBytes."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:551
+#: documentation/content/en/books/faq/_index.adoc:537
msgid ""
"The maximum size of a single FFS file is approximately 2 PB with the default "
"block size of 32 KB. Each 32 KB block can point to 4096 blocks. With "
"triple indirect blocks, the calculation is 32 KB * 12 + 32 KB * 4096 + 32 KB "
"* 4096^2 + 32 KB * 4096^3. Increasing the block size to 64 KB will increase "
"the max file size by a factor of 16."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:553
+#: documentation/content/en/books/faq/_index.adoc:539
#, no-wrap
msgid "Why do I get an error message, readin failed after compiling and booting a new kernel?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:558
+#: documentation/content/en/books/faq/_index.adoc:544
msgid ""
"The world and kernel are out of sync. This is not supported. Be sure to "
"use `make buildworld` and `make buildkernel` to update the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:560
+#: documentation/content/en/books/faq/_index.adoc:546
msgid ""
"Boot the system by specifying the kernel directly at the second stage, "
"pressing any key when the `|` shows up before loader is started."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:562
+#: documentation/content/en/books/faq/_index.adoc:548
#, no-wrap
msgid "Is there a tool to perform post-installation configuration tasks?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:566
+#: documentation/content/en/books/faq/_index.adoc:552
msgid ""
"Yes. bsdconfig provides a nice interface to configure FreeBSD post-"
"installation."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:568
+#: documentation/content/en/books/faq/_index.adoc:554
#, no-wrap
msgid "Hardware Compatibility"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:571
+#: documentation/content/en/books/faq/_index.adoc:557
#, no-wrap
msgid "General"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:574
+#: documentation/content/en/books/faq/_index.adoc:560
#, no-wrap
msgid "I want to get a piece of hardware for my FreeBSD system. Which model/brand/type is best?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:579
+#: documentation/content/en/books/faq/_index.adoc:565
msgid ""
"This is discussed continually on the FreeBSD mailing lists but is to be "
"expected since hardware changes so quickly. Read through the Hardware Notes "
"for FreeBSD link:{u-rel123-hardware}[{rel123-current}] or link:{u-rel131-"
"hardware}[{rel131-current}] and search the https://www.FreeBSD.org/search/"
"#mailinglists[mailing list archives] before asking about the latest and "
"greatest hardware. Chances are a discussion about that type of hardware "
"took place just last week."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:582
+#: documentation/content/en/books/faq/_index.adoc:567
msgid ""
"Before purchasing a laptop, check the archives for {freebsd-questions}, or "
"possibly a specific mailing list for a particular hardware type."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:584
+#: documentation/content/en/books/faq/_index.adoc:569
#, no-wrap
msgid "What are the limits for memory?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:590
+#: documentation/content/en/books/faq/_index.adoc:574
msgid ""
"FreeBSD as an operating system generally supports as much physical memory "
"(RAM) as the platform it is running on does. Keep in mind that different "
"platforms have different limits for memory; for example i386(TM) without PAE "
"supports at most 4 GB of memory (and usually less than that because of PCI "
"address space) and i386(TM) with PAE supports at most 64 GB memory. As of "
"FreeBSD 10, AMD64 platforms support up to 4 TB of physical memory."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:592
+#: documentation/content/en/books/faq/_index.adoc:576
#, no-wrap
msgid "Why does FreeBSD report less than 4 GB memory when installed on an i386(TM) machine?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:599
+#: documentation/content/en/books/faq/_index.adoc:582
msgid ""
"The total address space on i386(TM) machines is 32-bit, meaning that at most "
"4 GB of memory is addressable (can be accessed). Furthermore, some "
"addresses in this range are reserved by hardware for different purposes, for "
"example for using and controlling PCI devices, for accessing video memory, "
"and so on. Therefore, the total amount of memory usable by the operating "
"system for its kernel and applications is limited to significantly less than "
"4 GB. Usually, 3.2 GB to 3.7 GB is the maximum usable physical memory in "
"this configuration."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:606
+#: documentation/content/en/books/faq/_index.adoc:588
msgid ""
"To access more than 3.2 GB to 3.7 GB of installed memory (meaning up to 4 GB "
"but also more than 4 GB), a special tweak called PAE must be used. PAE "
"stands for Physical Address Extension and is a way for 32-bit x86 CPUs to "
"address more than 4 GB of memory. It remaps the memory that would otherwise "
"be overlaid by address reservations for hardware devices above the 4 GB "
"range and uses it as additional physical memory (see man:pae[4]). Using PAE "
"has some drawbacks; this mode of memory access is a little bit slower than "
"the normal (without PAE) mode and loadable modules (see man:kld[4]) are not "
"supported. This means all drivers must be compiled into the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:612
+#: documentation/content/en/books/faq/_index.adoc:593
msgid ""
"The most common way to enable PAE is to build a new kernel with the special "
"ready-provided kernel configuration file called [.filename]#PAE#, which is "
"already configured to build a safe kernel. Note that some entries in this "
"kernel configuration file are too conservative and some drivers marked as "
"unready to be used with PAE are actually usable. A rule of thumb is that if "
"the driver is usable on 64-bit architectures (like AMD64), it is also usable "
"with PAE. When creating a custom kernel configuration file, PAE can be "
"enabled by adding the following line:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:616
+#: documentation/content/en/books/faq/_index.adoc:597
#, no-wrap
msgid "options PAE\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:621
+#: documentation/content/en/books/faq/_index.adoc:602
msgid ""
"PAE is not much used nowadays because most new x86 hardware also supports "
"running in 64-bit mode, known as AMD64 or Intel(R) 64. It has a much larger "
"address space and does not need such tweaks. FreeBSD supports AMD64 and it "
"is recommended that this version of FreeBSD be used instead of the i386(TM) "
"version if 4 GB or more memory is required."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:623
+#: documentation/content/en/books/faq/_index.adoc:604
#, no-wrap
msgid "Architectures and Processors"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:626
+#: documentation/content/en/books/faq/_index.adoc:607
#, no-wrap
msgid "Does FreeBSD support architectures other than the x86?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:633
+#: documentation/content/en/books/faq/_index.adoc:614
msgid ""
"Yes. FreeBSD divides support into multiple tiers. Tier 1 architectures, "
"such as i386 or amd64; are fully supported. Tiers 2 and 3 are supported on "
"a best-effort basis. A full explanation of the tier system is available in "
"the extref:{committers-guide}[Committer's Guide., archs]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:635
+#: documentation/content/en/books/faq/_index.adoc:616
msgid ""
"A complete list of supported architectures can be found on the https://www."
"FreeBSD.org/platforms/[platforms page.]"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:637
+#: documentation/content/en/books/faq/_index.adoc:618
#, no-wrap
msgid "Does FreeBSD support Symmetric Multiprocessing (SMP)?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:642
+#: documentation/content/en/books/faq/_index.adoc:623
msgid ""
"FreeBSD supports symmetric multi-processor (SMP) on all non-embedded "
"platforms (e.g, i386, amd64, etc.). SMP is also supported in arm and MIPS "
"kernels, although some CPUs may not support this. FreeBSD's SMP "
"implementation uses fine-grained locking, and performance scales nearly "
"linearly with number of CPUs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:644
+#: documentation/content/en/books/faq/_index.adoc:625
msgid "man:smp[4] has more details."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:646
+#: documentation/content/en/books/faq/_index.adoc:627
#, no-wrap
msgid "What is microcode? How do I install Intel(R) CPU microcode updates?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:650
+#: documentation/content/en/books/faq/_index.adoc:631
msgid ""
"Microcode is a method of programmatically implementing hardware level "
"instructions. This allows for CPU bugs to be fixed without replacing the on "
"board chip."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:652
+#: documentation/content/en/books/faq/_index.adoc:633
msgid "Install package:sysutils/devcpu-data[], then add:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:656
+#: documentation/content/en/books/faq/_index.adoc:637
#, no-wrap
msgid "microcode_update_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:659
+#: documentation/content/en/books/faq/_index.adoc:640
msgid "to [.filename]#/etc/rc.conf#"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:661
+#: documentation/content/en/books/faq/_index.adoc:642
#, no-wrap
msgid "Peripherals"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:664
+#: documentation/content/en/books/faq/_index.adoc:645
#, no-wrap
msgid "What kind of peripherals does FreeBSD support?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:667
+#: documentation/content/en/books/faq/_index.adoc:648
msgid ""
"See a list of hardware known to work and any applicable restrictions in the "
"Hardware Notes for FreeBSD link:{u-rel123-hardware}[{rel123-current}] or "
"link:{u-rel131-hardware}[{rel131-current}]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:669
+#: documentation/content/en/books/faq/_index.adoc:650
#, no-wrap
msgid "Keyboards and Mice"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:672
+#: documentation/content/en/books/faq/_index.adoc:653
#, no-wrap
msgid "Is it possible to use a mouse outside the X Window system?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:676
+#: documentation/content/en/books/faq/_index.adoc:657
msgid ""
"The default console driver, man:vt[4], provides the ability to use a mouse "
"pointer in text consoles to cut & paste text. Run the mouse daemon, man:"
"moused[8], and turn on the mouse pointer in the virtual console:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:681
+#: documentation/content/en/books/faq/_index.adoc:662
#, no-wrap
msgid ""
"# moused -p /dev/xxxx -t yyyy\n"
"# vidcontrol -m on\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:687
+#: documentation/content/en/books/faq/_index.adoc:668
msgid ""
"Where _xxxx_ is the mouse device name and _yyyy_ is a protocol type for the "
"mouse. The mouse daemon can automatically determine the protocol type of "
"most mice, except old serial mice. Specify the `auto` protocol to invoke "
"automatic detection. If automatic detection does not work, see the man:"
"moused[8] manual page for a list of supported protocol types."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:690
+#: documentation/content/en/books/faq/_index.adoc:671
msgid ""
"For a PS/2 mouse, add `moused_enable=\"YES\"` to [.filename]#/etc/rc.conf# "
"to start the mouse daemon at boot time. Additionally, to use the mouse "
"daemon on all virtual terminals instead of just the console, add "
"`allscreens_flags=\"-m on\"` to [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:693
+#: documentation/content/en/books/faq/_index.adoc:674
msgid ""
"When the mouse daemon is running, access to the mouse must be coordinated "
"between the mouse daemon and other programs such as X Windows. Refer to the "
"FAQ <<x-and-moused,Why does my mouse not work with X?>> for more details on "
"this issue."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:695
+#: documentation/content/en/books/faq/_index.adoc:676
#, no-wrap
msgid "How do I cut and paste text with a mouse in the text console?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:703
+#: documentation/content/en/books/faq/_index.adoc:683
msgid ""
"It is not possible to remove data using the mouse. However, it is possible "
"to copy and paste. Once the mouse daemon is running as described in the "
"<<moused,previous question>>, hold down button 1 (left button) and move the "
"mouse to select a region of text. Then, press button 2 (middle button) to "
-"paste it at the text cursor. Pressing button 3 (right button) will \"extend"
-"\" the selected region of text."
+"paste it at the text cursor. Pressing button 3 (right button) will "
+"\"extend\" the selected region of text."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:706
+#: documentation/content/en/books/faq/_index.adoc:686
msgid ""
"If the mouse does not have a middle button, it is possible to emulate one or "
"remap buttons using mouse daemon options. See the man:moused[8] manual page "
"for details."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:708
+#: documentation/content/en/books/faq/_index.adoc:688
#, no-wrap
msgid "My mouse has a fancy wheel and buttons. Can I use them in FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:714
+#: documentation/content/en/books/faq/_index.adoc:694
msgid ""
"The answer is, unfortunately, \"It depends\". These mice with additional "
"features require specialized driver in most cases. Unless the mouse device "
"driver or the user program has specific support for the mouse, it will act "
"just like a standard two, or three button mouse."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:716
+#: documentation/content/en/books/faq/_index.adoc:696
msgid ""
"For the possible usage of wheels in the X Window environment, refer to <<x-"
"and-wheel,that section>>."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:718
+#: documentation/content/en/books/faq/_index.adoc:698
#, no-wrap
msgid "How do I use my delete key in sh and csh?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:722
+#: documentation/content/en/books/faq/_index.adoc:702
msgid ""
"For the Bourne Shell, add the following lines to [.filename]#~/.shrc#. See "
"man:sh[1] and man:editrc[5]."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:726
+#: documentation/content/en/books/faq/_index.adoc:706
#, no-wrap
msgid "bind ^[[3~ ed-delete-next-char # for xterm\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:730
+#: documentation/content/en/books/faq/_index.adoc:710
msgid ""
"For the C Shell, add the following lines to [.filename]#~/.cshrc#. See man:"
"csh[1]."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:734
+#: documentation/content/en/books/faq/_index.adoc:714
#, no-wrap
msgid "bindkey ^[[3~ delete-char # for xterm\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:737
+#: documentation/content/en/books/faq/_index.adoc:717
#, no-wrap
msgid "Other Hardware"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:740
+#: documentation/content/en/books/faq/_index.adoc:720
#, no-wrap
msgid "Workarounds for no sound from my man:pcm[4] sound card?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:744
+#: documentation/content/en/books/faq/_index.adoc:724
msgid ""
"Some sound cards set their output volume to 0 at every boot. On FreeBSD 13 "
"and earlier, run the following command every time the machine boots:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:748
+#: documentation/content/en/books/faq/_index.adoc:728
#, no-wrap
msgid "# mixer pcm 100 vol 100 cd 100\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:751
+#: documentation/content/en/books/faq/_index.adoc:731
msgid "Use the following command on FreeBSD 14 and later:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:755
+#: documentation/content/en/books/faq/_index.adoc:735
#, no-wrap
msgid "# mixer pcm.volume=100 vol.volume=100 cd.volume=100\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/faq/_index.adoc:758
+#: documentation/content/en/books/faq/_index.adoc:738
#, no-wrap
msgid "Does FreeBSD support power management on my laptop?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:762
+#: documentation/content/en/books/faq/_index.adoc:742
msgid ""
"FreeBSD supports the ACPI features found in modern hardware. Further "
"information can be found in man:acpi[4]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:764
+#: documentation/content/en/books/faq/_index.adoc:744
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:767
+#: documentation/content/en/books/faq/_index.adoc:747
#, no-wrap
msgid "Why is FreeBSD finding the wrong amount of memory on i386(TM) hardware?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:770
+#: documentation/content/en/books/faq/_index.adoc:750
msgid ""
"The most likely reason is the difference between physical memory addresses "
"and virtual addresses."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:774
+#: documentation/content/en/books/faq/_index.adoc:754
msgid ""
"The convention for most PC hardware is to use the memory area between 3.5 GB "
"and 4 GB for a special purpose (usually for PCI). This address space is "
"used to access PCI hardware. As a result real, physical memory cannot be "
"accessed by that address space."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:777
+#: documentation/content/en/books/faq/_index.adoc:757
msgid ""
"What happens to the memory that should appear in that location is hardware "
"dependent. Unfortunately, some hardware does nothing and the ability to use "
"that last 500 MB of RAM is entirely lost."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:780
+#: documentation/content/en/books/faq/_index.adoc:760
msgid ""
"Luckily, most hardware remaps the memory to a higher location so that it can "
"still be used. However, this can cause some confusion when watching the "
"boot messages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:784
+#: documentation/content/en/books/faq/_index.adoc:764
msgid ""
"On a 32-bit version of FreeBSD, the memory appears lost, since it will be "
"remapped above 4 GB, which a 32-bit kernel is unable to access. In this "
"case, the solution is to build a PAE enabled kernel. See the entry on "
"memory limits for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:788
+#: documentation/content/en/books/faq/_index.adoc:768
msgid ""
"On a 64-bit version of FreeBSD, or when running a PAE-enabled kernel, "
"FreeBSD will correctly detect and remap the memory so it is usable. During "
"boot, however, it may seem as if FreeBSD is detecting more memory than the "
"system really has, due to the described remapping. This is normal and the "
"available memory will be corrected as the boot process completes."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:790
+#: documentation/content/en/books/faq/_index.adoc:770
#, no-wrap
msgid "Why do my programs occasionally die with Signal 11 errors?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:794
+#: documentation/content/en/books/faq/_index.adoc:774
msgid ""
"Signal 11 errors are caused when a process has attempted to access memory "
"which the operating system has not granted it access to. If something like "
"this is happening at seemingly random intervals, start investigating the "
"cause."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:796
+#: documentation/content/en/books/faq/_index.adoc:776
msgid "These problems can usually be attributed to either:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:798
+#: documentation/content/en/books/faq/_index.adoc:778
msgid ""
"If the problem is occurring only in a specific custom application, it is "
"probably a bug in the code."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:799
+#: documentation/content/en/books/faq/_index.adoc:779
msgid ""
"If it is a problem with part of the base FreeBSD system, it may also be "
"buggy code, but more often than not these problems are found and fixed long "
"before us general FAQ readers get to use these bits of code (that is what -"
"CURRENT is for)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:801
+#: documentation/content/en/books/faq/_index.adoc:781
msgid ""
"It is probably not a FreeBSD bug if the problem occurs compiling a program, "
"but the activity that the compiler is carrying out changes each time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:805
+#: documentation/content/en/books/faq/_index.adoc:785
msgid ""
"For example, if `make buildworld` fails while trying to compile [."
"filename]#ls.c# into [.filename]#ls.o# and, when run again, it fails in the "
"same place, this is a broken build. Try updating source and try again. If "
"the compile fails elsewhere, it is almost certainly due to hardware."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:807
+#: documentation/content/en/books/faq/_index.adoc:787
msgid ""
"In the first case, use a debugger such as man:gdb[1] to find the point in "
"the program which is attempting to access a bogus address and fix it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:809
+#: documentation/content/en/books/faq/_index.adoc:789
msgid "In the second case, verify which piece of hardware is at fault."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:811
+#: documentation/content/en/books/faq/_index.adoc:791
msgid "Common causes of this include:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:813
+#: documentation/content/en/books/faq/_index.adoc:793
msgid ""
"The hard disks might be overheating: Check that the fans are still working, "
"as the disk and other hardware might be overheating."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:814
+#: documentation/content/en/books/faq/_index.adoc:796
msgid ""
"The processor running is overheating: This might be because the processor "
-"has been overclocked, or the fan on the processor might have died. In either "
-"case, ensure that the hardware is running at what it is specified to run at, "
-"at least while trying to solve this problem. If it is not, clock it back to "
-"the default settings.)"
+"has been overclocked, or the fan on the processor might have died. In "
+"either case, ensure that the hardware is running at what it is specified to "
+"run at, at least while trying to solve this problem. If it is not, clock it "
+"back to the default settings.)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:816
+#: documentation/content/en/books/faq/_index.adoc:799
msgid ""
"Regarding overclocking, it is far cheaper to have a slow system than a fried "
"system that needs replacing! Also the community is not sympathetic to "
"problems on overclocked systems."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:817
+#: documentation/content/en/books/faq/_index.adoc:800
msgid ""
"Dodgy memory: if multiple memory SIMMS/DIMMS are installed, pull them all "
"out and try running the machine with each SIMM or DIMM individually to "
"narrow the problem down to either the problematic DIMM/SIMM or perhaps even "
"a combination."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:818
+#: documentation/content/en/books/faq/_index.adoc:803
msgid ""
"Over-optimistic motherboard settings: the BIOS settings, and some "
-"motherboard jumpers, provide options to set various timings. The defaults "
+"motherboard jumpers, provide options to set various timings. The defaults "
"are often sufficient, but sometimes setting the wait states on RAM too low, "
-"or setting the \"RAM Speed: Turbo\" option will cause strange behavior. A "
+"or setting the \"RAM Speed: Turbo\" option will cause strange behavior. A "
"possible idea is to set to BIOS defaults, after noting the current settings "
"first."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:819
+#: documentation/content/en/books/faq/_index.adoc:807
msgid ""
-"Unclean or insufficient power to the motherboard. Remove any unused I/O "
+"Unclean or insufficient power to the motherboard. Remove any unused I/O "
"boards, hard disks, or CD-ROMs, or disconnect the power cable from them, to "
-"see if the power supply can manage a smaller load. Or try another power "
-"supply, preferably one with a little more power. For instance, if the "
+"see if the power supply can manage a smaller load. Or try another power "
+"supply, preferably one with a little more power. For instance, if the "
"current power supply is rated at 250 Watts, try one rated at 300 Watts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:822
+#: documentation/content/en/books/faq/_index.adoc:810
msgid ""
"Read the section on <<signal11,Signal 11>> for a further explanation and a "
"discussion on how memory testing software or hardware can still pass faulty "
"memory. There is an extensive FAQ on this at http://www.bitwizard.nl/sig11/"
"[the SIG11 problem FAQ]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:825
+#: documentation/content/en/books/faq/_index.adoc:813
msgid ""
"Finally, if none of this has helped, it is possibly a bug in FreeBSD. "
"Follow <<access-pr,these instructions>> to send a problem report."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:827
+#: documentation/content/en/books/faq/_index.adoc:815
#, no-wrap
msgid "My system crashes with either Fatal trap 12: page fault in kernel mode, or panic:, and spits out a bunch of information. What should I do?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:834
+#: documentation/content/en/books/faq/_index.adoc:822
msgid ""
"The FreeBSD developers are interested in these errors, but need more "
"information than just the error message. Copy the full crash message. Then "
"consult the FAQ section on <<kernel-panic-troubleshooting,kernel panics>>, "
"build a debugging kernel, and get a backtrace. This might sound difficult, "
"but does not require any programming skills. Just follow the instructions."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:836
+#: documentation/content/en/books/faq/_index.adoc:824
#, no-wrap
msgid "What is the meaning of the error maxproc limit exceeded by uid %i, please see tuning(7) and login.conf(5)?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:843
+#: documentation/content/en/books/faq/_index.adoc:831
msgid ""
"The FreeBSD kernel will only allow a certain number of processes to exist at "
"one time. The number is based on the `kern.maxusers` man:sysctl[8] "
"variable. `kern.maxusers` also affects various other in-kernel limits, such "
"as network buffers. If the machine is heavily loaded, increase `kern."
"maxusers`. This will increase these other system limits in addition to the "
"maximum number of processes."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:846
+#: documentation/content/en/books/faq/_index.adoc:834
msgid ""
"To adjust the `kern.maxusers` value, see the extref:{handbook}config/[File/"
"Process Limits, kern-maxfiles] section of the Handbook. While that section "
"refers to open files, the same limits apply to processes."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:852
+#: documentation/content/en/books/faq/_index.adoc:840
msgid ""
"If the machine is lightly loaded but running a very large number of "
"processes, adjust the `kern.maxproc` tunable by defining it in [.filename]#/"
"boot/loader.conf#. The tunable will not get adjusted until the system is "
"rebooted. For more information about tuning tunables, see man:loader."
"conf[5]. If these processes are being run by a single user, adjust `kern."
"maxprocperuid` to be one less than the new `kern.maxproc` value. It must be "
"at least one less because one system program, man:init[8], must always be "
"running."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:854
+#: documentation/content/en/books/faq/_index.adoc:842
#, no-wrap
msgid "Why do full screen applications on remote machines misbehave?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:858
+#: documentation/content/en/books/faq/_index.adoc:846
msgid ""
"The remote machine may be setting the terminal type to something other than "
"`xterm` which is required by the FreeBSD console. Alternatively the kernel "
"may have the wrong values for the width and height of the terminal."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:861
+#: documentation/content/en/books/faq/_index.adoc:849
msgid ""
"Check the value of the `TERM` environment variable is `xterm`. If the "
"remote machine does not support that try `vt100`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:864
+#: documentation/content/en/books/faq/_index.adoc:852
msgid ""
"Run `stty -a` to check what the kernel thinks the terminal dimensions are. "
"If they are incorrect, they can be changed by running `stty rows _RR_ cols "
"_CC_`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:867
+#: documentation/content/en/books/faq/_index.adoc:854
msgid ""
"Alternatively, if the client machine has package:x11/xterm[] installed, then "
"running `resize` will query the terminal for the correct dimensions and set "
"them."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:869
+#: documentation/content/en/books/faq/_index.adoc:856
#, no-wrap
msgid "Why does it take so long to connect to my computer via ssh or telnet?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:872
+#: documentation/content/en/books/faq/_index.adoc:859
msgid ""
"The symptom: there is a long delay between the time the TCP connection is "
"established and the time when the client software asks for a password (or, "
"in man:telnet[1]'s case, when a login prompt appears)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:876
+#: documentation/content/en/books/faq/_index.adoc:862
msgid ""
"The problem: more likely than not, the delay is caused by the server "
"software trying to resolve the client's IP address into a hostname. Many "
"servers, including the Telnet and SSH servers that come with FreeBSD, do "
"this to store the hostname in a log file for future reference by the "
"administrator."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:879
+#: documentation/content/en/books/faq/_index.adoc:865
msgid ""
"The remedy: if the problem occurs whenever connecting the client computer to "
"any server, the problem is with the client. If the problem only occurs when "
"someone connects to the server computer, the problem is with the server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:883
+#: documentation/content/en/books/faq/_index.adoc:869
msgid ""
"If the problem is with the client, the only remedy is to fix the DNS so the "
"server can resolve it. If this is on a local network, consider it a server "
"problem and keep reading. If this is on the Internet, contact your ISP."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:889
+#: documentation/content/en/books/faq/_index.adoc:875
msgid ""
"If the problem is with the server on a local network, configure the server "
"to resolve address-to-hostname queries for the local address range. See man:"
"hosts[5] and man:named[8] for more information. If this is on the Internet, "
"the problem may be that the local server's resolver is not functioning "
"correctly. To check, try to look up another host such as `www.yahoo.com`. "
"If it does not work, that is the problem."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:893
+#: documentation/content/en/books/faq/_index.adoc:879
msgid ""
"Following a fresh install of FreeBSD, it is also possible that domain and "
"name server information is missing from [.filename]#/etc/resolv.conf#. This "
"will often cause a delay in SSH, as the option `UseDNS` is set to `yes` by "
"default in [.filename]#/etc/ssh/sshd_config#. If this is causing the "
"problem, either fill in the missing information in [.filename]#/etc/resolv."
"conf# or set `UseDNS` to `no` in [.filename]#sshd_config# as a temporary "
"workaround."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:895
+#: documentation/content/en/books/faq/_index.adoc:881
#, no-wrap
msgid "Why does file: table is full show up repeatedly in man:dmesg[8]?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:899
+#: documentation/content/en/books/faq/_index.adoc:885
msgid ""
"This error message indicates that the number of available file descriptors "
"have been exhausted on the system. Refer to the extref:{handbook}config/"
"[kern.maxfiles, kern-maxfiles] section of the extref:{handbook}config/"
"[Tuning Kernel Limits, configtuning-kernel-limits] section of the Handbook "
"for a discussion and solution."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:901
+#: documentation/content/en/books/faq/_index.adoc:887
#, no-wrap
msgid "Why does the clock on my computer keep incorrect time?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:904
+#: documentation/content/en/books/faq/_index.adoc:890
msgid ""
"The computer has two or more clocks, and FreeBSD has chosen to use the wrong "
"one."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:907
+#: documentation/content/en/books/faq/_index.adoc:893
msgid ""
"Run man:dmesg[8], and check for lines that contain `Timecounter`. The one "
"with the highest quality value that FreeBSD chose."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:915
+#: documentation/content/en/books/faq/_index.adoc:901
#, no-wrap
msgid ""
"# dmesg | grep Timecounter\n"
"Timecounter \"i8254\" frequency 1193182 Hz quality 0\n"
"Timecounter \"ACPI-fast\" frequency 3579545 Hz quality 1000\n"
"Timecounter \"TSC\" frequency 2998570050 Hz quality 800\n"
"Timecounters tick every 1.000 msec\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:918
+#: documentation/content/en/books/faq/_index.adoc:904
msgid "Confirm this by checking the `kern.timecounter.hardware` man:sysctl[3]."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:923
+#: documentation/content/en/books/faq/_index.adoc:909
#, no-wrap
msgid ""
"# sysctl kern.timecounter.hardware\n"
"kern.timecounter.hardware: ACPI-fast\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:927
+#: documentation/content/en/books/faq/_index.adoc:913
msgid ""
"It may be a broken ACPI timer. The simplest solution is to disable the ACPI "
"timer in [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:931
+#: documentation/content/en/books/faq/_index.adoc:917
#, no-wrap
msgid "debug.acpi.disabled=\"timer\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:935
+#: documentation/content/en/books/faq/_index.adoc:920
msgid ""
"Or the BIOS may modify the TSC clock-perhaps to change the speed of the "
"processor when running from batteries, or going into a power saving mode, "
"but FreeBSD is unaware of these adjustments, and appears to gain or lose "
"time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:937
+#: documentation/content/en/books/faq/_index.adoc:922
msgid ""
"In this example, the `i8254` clock is also available, and can be selected by "
"writing its name to the `kern.timecounter.hardware` man:sysctl[3]."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:942
+#: documentation/content/en/books/faq/_index.adoc:927
#, no-wrap
msgid ""
"# sysctl kern.timecounter.hardware=i8254\n"
"kern.timecounter.hardware: TSC -> i8254\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:945
+#: documentation/content/en/books/faq/_index.adoc:930
msgid "The computer should now start keeping more accurate time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:947
+#: documentation/content/en/books/faq/_index.adoc:932
msgid ""
"To have this change automatically run at boot time, add the following line "
"to [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:951
+#: documentation/content/en/books/faq/_index.adoc:936
#, no-wrap
msgid "kern.timecounter.hardware=i8254\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:954
+#: documentation/content/en/books/faq/_index.adoc:939
#, no-wrap
msgid "What does the error swap_pager: indefinite wait buffer: mean?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:960
+#: documentation/content/en/books/faq/_index.adoc:945
msgid ""
"This means that a process is trying to page memory from disk, and the page "
"attempt has hung trying to access the disk for more than 20 seconds. It "
"might be caused by bad blocks on the disk drive, disk wiring, cables, or any "
"other disk I/O-related hardware. If the drive itself is bad, disk errors "
"will appear in [.filename]#/var/log/messages# and in the output of `dmesg`. "
"Otherwise, check the cables and connections."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:962
+#: documentation/content/en/books/faq/_index.adoc:947
#, no-wrap
msgid "What is a lock order reversal?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:968
+#: documentation/content/en/books/faq/_index.adoc:952
msgid ""
"The FreeBSD kernel uses a number of resource locks to arbitrate contention "
"for certain resources. When multiple kernel threads try to obtain multiple "
"resource locks, there's always the potential for a deadlock, where two "
"threads have each obtained one of the locks and blocks forever waiting for "
"the other thread to release one of the other locks. This sort of locking "
"problem can be avoided if all threads obtain the locks in the same order."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:973
+#: documentation/content/en/books/faq/_index.adoc:955
msgid ""
"A run-time lock diagnostic system called man:witness[4], enabled in FreeBSD-"
"CURRENT and disabled by default for stable branches and releases, detects "
"the potential for deadlocks due to locking errors, including errors caused "
"by obtaining multiple resource locks with a different order from different "
"parts of the kernel. The man:witness[4] framework tries to detect this "
"problem as it happens, and reports it by printing a message to the system "
"console about a `lock order reversal` (often referred to also as LOR)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:977
+#: documentation/content/en/books/faq/_index.adoc:958
msgid ""
"It is possible to get false positives, as man:witness[4] is conservative. A "
"true positive report _does not_ mean that a system is dead-locked; instead "
"it should be understood as a warning that a deadlock could have happened "
"here."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:981
+#: documentation/content/en/books/faq/_index.adoc:962
msgid ""
"Problematic LORs tend to get fixed quickly, so check the {freebsd-current} "
"before posting to it."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:984
+#: documentation/content/en/books/faq/_index.adoc:965
#, no-wrap
-msgid "What does Called ... with the following non-sleepable locks held mean?"
+msgid "What does 'Called ... with the following non-sleepable locks held' mean?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:987
+#: documentation/content/en/books/faq/_index.adoc:968
msgid ""
"This means that a function that may sleep was called while a mutex (or other "
"unsleepable) lock was held."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:993
+#: documentation/content/en/books/faq/_index.adoc:973
msgid ""
"The reason this is an error is because mutexes are not intended to be held "
"for long periods of time; they are supposed to only be held to maintain "
"short periods of synchronization. This programming contract allows device "
"drivers to use mutexes to synchronize with the rest of the kernel during "
"interrupts. Interrupts (under FreeBSD) may not sleep. Hence it is "
"imperative that no subsystem in the kernel block for an extended period "
"while holding a mutex."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:995
+#: documentation/content/en/books/faq/_index.adoc:975
msgid ""
"To catch such errors, assertions may be added to the kernel that interact "
"with the man:witness[4] subsystem to emit a warning or fatal error "
"(depending on the system configuration) when a potentially blocking call is "
"made while holding a mutex."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:998
+#: documentation/content/en/books/faq/_index.adoc:977
msgid ""
"In summary, such warnings are non-fatal, however with unfortunate timing "
"they could cause undesirable effects ranging from a minor blip in the "
"system's responsiveness to a complete system lockup."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1000
+#: documentation/content/en/books/faq/_index.adoc:979
msgid "For additional information about locking in FreeBSD see man:locking[9]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1002
+#: documentation/content/en/books/faq/_index.adoc:981
#, no-wrap
msgid "Why does buildworld/installworld die with the message touch: not found?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1007
+#: documentation/content/en/books/faq/_index.adoc:986
msgid ""
"This error does not mean that the man:touch[1] utility is missing. The "
"error is instead probably due to the dates of the files being set sometime "
"in the future. If the CMOS clock is set to local time, run `adjkerntz -i` "
"to adjust the kernel clock when booting into single-user mode."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1009
+#: documentation/content/en/books/faq/_index.adoc:988
#, no-wrap
msgid "User Applications"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1012
+#: documentation/content/en/books/faq/_index.adoc:991
#, no-wrap
msgid "Where are all the user applications?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1015
+#: documentation/content/en/books/faq/_index.adoc:994
msgid ""
"Refer to link:https://www.FreeBSD.org/ports/[the ports page] for info on "
"software packages ported to FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1019
+#: documentation/content/en/books/faq/_index.adoc:998
msgid ""
"Most ports should work on all supported versions of FreeBSD. Those that do "
"not are specifically marked as such. Each time a FreeBSD release is made, a "
"snapshot of the ports tree at the time of release is also included in the [."
"filename]#ports/# directory."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1022
+#: documentation/content/en/books/faq/_index.adoc:1001
msgid ""
"FreeBSD supports compressed binary packages to easily install and uninstall "
"ports. Use man:pkg[7] to control the installation of packages."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1024
+#: documentation/content/en/books/faq/_index.adoc:1003
#, no-wrap
msgid "How do I download the Ports tree? Should I be using Git?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1027
+#: documentation/content/en/books/faq/_index.adoc:1006
msgid ""
"See extref:{handbook}ports/[Installing the Ports Collection, ports-using-"
"installation-methods]"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1029
+#: documentation/content/en/books/faq/_index.adoc:1008
#, no-wrap
msgid "Why can I not build this port on my {rel2-relx} -, or {rel-relx} -STABLE machine?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1034
+#: documentation/content/en/books/faq/_index.adoc:1013
msgid ""
"If the installed FreeBSD version lags significantly behind _-CURRENT_ or _-"
"STABLE_, update the Ports Collection using the instructions in extref:"
"{handbook}ports/[Using the Ports Collection, ports-using]. If the system is "
"up-to-date, someone might have committed a change to the port which works "
"for _-CURRENT_ but which broke the port for _-STABLE_. https://bugs.FreeBSD."
"org/submit/[Submit] a bug report, since the Ports Collection is supposed to "
"work for both the _-CURRENT_ and _-STABLE_ branches."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1036
+#: documentation/content/en/books/faq/_index.adoc:1015
#, no-wrap
msgid "I just tried to build INDEX using make index, and it failed. Why?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1040
+#: documentation/content/en/books/faq/_index.adoc:1019
msgid ""
"First, make sure that the Ports Collection is up-to-date. Errors that "
"affect building [.filename]#INDEX# from an up-to-date copy of the Ports "
"Collection are high-visibility and are thus almost always fixed immediately."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1043
+#: documentation/content/en/books/faq/_index.adoc:1022
msgid ""
"There are rare cases where [.filename]#INDEX# will not build due to odd "
"cases involving `OPTIONS_SET` being set in [.filename]#make.conf#. If you "
"suspect that this is the case, try to make [.filename]#INDEX# with those "
"variables turned off before reporting it to {freebsd-ports}."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1045
+#: documentation/content/en/books/faq/_index.adoc:1024
#, no-wrap
msgid "I updated the sources, now how do I update my installed ports?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1049
+#: documentation/content/en/books/faq/_index.adoc:1028
msgid ""
"FreeBSD does not include a port upgrading tool, but it does have some tools "
"to make the upgrade process somewhat easier. Additional tools are available "
"to simplify port handling and are described the extref:{handbook}ports/"
"[Upgrading Ports, ports-using] section in the FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1051
+#: documentation/content/en/books/faq/_index.adoc:1030
#, no-wrap
msgid "Do I need to recompile every port each time I perform a major version update?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1055
+#: documentation/content/en/books/faq/_index.adoc:1034
msgid ""
"Yes! While a recent system will run with software compiled under an older "
"release, things will randomly crash and fail to work once other ports are "
"installed or updated."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1058
+#: documentation/content/en/books/faq/_index.adoc:1037
msgid ""
"When the system is upgraded, various shared libraries, loadable modules, and "
"other parts of the system will be replaced with newer versions. "
"Applications linked against the older versions may fail to start or, in "
"other cases, fail to function properly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1060
+#: documentation/content/en/books/faq/_index.adoc:1039
msgid ""
"For more information, see extref:{handbook}cutting-edge/[the section on "
"upgrades, freebsdupdate-upgrade] in the FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1062
+#: documentation/content/en/books/faq/_index.adoc:1041
#, no-wrap
msgid "Do I need to recompile every port each time I perform a minor version update?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1066
+#: documentation/content/en/books/faq/_index.adoc:1046
msgid ""
-"In general, no. FreeBSD developers do their utmost to guarantee binary "
+"In general, no. FreeBSD developers do their utmost to guarantee binary "
"compatibility across all releases with the same major version number. Any "
"exceptions will be documented in the Release Notes, and advice given there "
"should be followed."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1068
+#: documentation/content/en/books/faq/_index.adoc:1048
#, no-wrap
msgid "Why is /bin/sh so minimal? Why does FreeBSD not use bash or another shell?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1074
+#: documentation/content/en/books/faq/_index.adoc:1054
msgid ""
"Many people need to write shell scripts which will be portable across many "
"systems. That is why POSIX(R) specifies the shell and utility commands in "
"great detail. Most scripts are written in Bourne shell (man:sh[1]), and "
"because several important programming interfaces (man:make[1], man:"
"system[3], man:popen[3], and analogues in higher-level scripting languages "
"like Perl and Tcl) are specified to use the Bourne shell to interpret "
"commands. As the Bourne shell is so often and widely used, it is important "
"for it to be quick to start, be deterministic in its behavior, and have a "
"small memory footprint."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1079
+#: documentation/content/en/books/faq/_index.adoc:1059
msgid ""
"The existing implementation is our best effort at meeting as many of these "
"requirements simultaneously as we can. To keep `/bin/sh` small, we have not "
"provided many of the convenience features that other shells have. That is "
"why other more featureful shells like `bash`, `scsh`, man:tcsh[1], and `zsh` "
"are available. Compare the memory utilization of these shells by looking at "
"the \"VSZ\" and \"RSS\" columns in a `ps -u` listing."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1081
+#: documentation/content/en/books/faq/_index.adoc:1061
#, no-wrap
msgid "Kernel Configuration"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1084
+#: documentation/content/en/books/faq/_index.adoc:1064
#, no-wrap
msgid "I would like to customize my kernel. Is it difficult?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1087
+#: documentation/content/en/books/faq/_index.adoc:1068
msgid ""
"Not at all! Check out the extref:{handbook}kernelconfig/[kernel config "
"section of the Handbook]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1093
+#: documentation/content/en/books/faq/_index.adoc:1073
msgid ""
"The new [.filename]#kernel# will be installed to the [.filename]#/boot/"
"kernel# directory along with its modules, while the old kernel and its "
"modules will be moved to the [.filename]#/boot/kernel.old# directory. If a "
"mistake is made in the configuration, simply boot the previous version of "
"the kernel."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1096
+#: documentation/content/en/books/faq/_index.adoc:1076
#, no-wrap
msgid "Why is my kernel so big?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1103
+#: documentation/content/en/books/faq/_index.adoc:1083
msgid ""
"`GENERIC` kernels shipped with FreeBSD are compiled in _debug mode_. "
"Kernels built in debug mode contain debug data in separate files that are "
"used for debugging. FreeBSD releases prior to 11.0 store these debug files "
"in the same directory as the kernel itself, [.filename]#/boot/kernel/#. In "
"FreeBSD 11.0 and later the debug files are stored in [.filename]#/usr/lib/"
"debug/boot/kernel/#. Note that there will be little or no performance loss "
"from running a debug kernel, and it is useful to keep one around in case of "
"a system panic."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1105
+#: documentation/content/en/books/faq/_index.adoc:1085
msgid ""
"When running low on disk space, there are different options to reduce the "
"size of [.filename]#/boot/kernel/# and [.filename]#/usr/lib/debug/#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1107
+#: documentation/content/en/books/faq/_index.adoc:1087
msgid ""
"To not install the symbol files, make sure the following line exists in [."
"filename]#/etc/src.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1111
+#: documentation/content/en/books/faq/_index.adoc:1091
#, no-wrap
msgid "WITHOUT_KERNEL_SYMBOLS=yes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1114
+#: documentation/content/en/books/faq/_index.adoc:1094
msgid "For more information see man:src.conf[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1116
+#: documentation/content/en/books/faq/_index.adoc:1096
msgid ""
"If you want to avoid building debug files altogether, make sure that both of "
"the following are true:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1118
+#: documentation/content/en/books/faq/_index.adoc:1098
msgid "This line does not exist in the kernel configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1122
+#: documentation/content/en/books/faq/_index.adoc:1102
#, no-wrap
msgid "makeoptions DEBUG=-g\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1125
+#: documentation/content/en/books/faq/_index.adoc:1105
msgid "Do not run man:config[8] with `-g`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1127
+#: documentation/content/en/books/faq/_index.adoc:1107
msgid ""
"Either of the above settings will cause the kernel to be built in debug mode."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1129
+#: documentation/content/en/books/faq/_index.adoc:1109
msgid ""
"To build and install only the specified modules, list them in [.filename]#/"
"etc/make.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1133
+#: documentation/content/en/books/faq/_index.adoc:1113
#, no-wrap
msgid "MODULES_OVERRIDE= accf_http ipfw\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1139
+#: documentation/content/en/books/faq/_index.adoc:1119
msgid ""
"Replace _accf_httpd ipfw_ with a list of needed modules. Only the listed "
"modules will be built. This reduces the size of the kernel directory and "
"decreases the amount of time needed to build the kernel. For more "
"information, read [.filename]#/usr/share/examples/etc/make.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1142
+#: documentation/content/en/books/faq/_index.adoc:1122
msgid ""
"Unneeded devices can be removed from the kernel to further reduce the size. "
"See <<make-kernel>> for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1144
+#: documentation/content/en/books/faq/_index.adoc:1124
msgid ""
"To put any of these options into effect, follow the instructions to extref:"
"{handbook}kernelconfig/[build and install, kernelconfig-building] the new "
"kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1146
+#: documentation/content/en/books/faq/_index.adoc:1126
msgid ""
"For reference, the FreeBSD 11 amd64 kernel ([.filename]#/boot/kernel/"
"kernel#) is approximately 25 MB."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1148
+#: documentation/content/en/books/faq/_index.adoc:1128
#, no-wrap
msgid "Why does every kernel I try to build fail to compile, even GENERIC?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1151
+#: documentation/content/en/books/faq/_index.adoc:1131
msgid "There are a number of possible causes for this problem:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1153
+#: documentation/content/en/books/faq/_index.adoc:1134
msgid ""
"The source tree is different from the one used to build the currently "
-"running system. When attempting an upgrade, read [.filename]#/usr/src/"
+"running system. When attempting an upgrade, read [.filename]#/usr/src/"
"UPDATING#, paying particular attention to the \"COMMON ITEMS\" section at "
"the end."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1154
+#: documentation/content/en/books/faq/_index.adoc:1136
msgid ""
-"The `make buildkernel` did not complete successfully. The `make buildkernel` "
-"target relies on files generated by the `make buildworld` target to complete "
-"its job correctly."
+"The `make buildkernel` did not complete successfully. The `make "
+"buildkernel` target relies on files generated by the `make buildworld` "
+"target to complete its job correctly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1155
+#: documentation/content/en/books/faq/_index.adoc:1140
msgid ""
"Even when building <<stable,FreeBSD-STABLE>>, it is possible that the source "
"tree was fetched at a time when it was either being modified or it was "
-"broken. Only releases are guaranteed to be buildable, although <<stable,"
-"FreeBSD-STABLE>> builds fine the majority of the time. Try re-fetching the "
-"source tree and see if the problem goes away. Try using a different mirror "
+"broken. Only releases are guaranteed to be buildable, although <<stable,"
+"FreeBSD-STABLE>> builds fine the majority of the time. Try re-fetching the "
+"source tree and see if the problem goes away. Try using a different mirror "
"in case the previous one is having problems."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1157
+#: documentation/content/en/books/faq/_index.adoc:1142
#, no-wrap
msgid "Which scheduler is in use on a running system?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1160
+#: documentation/content/en/books/faq/_index.adoc:1145
msgid ""
"The name of the scheduler currently being used is directly available as the "
"value of the `kern.sched.name` sysctl:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1165
+#: documentation/content/en/books/faq/_index.adoc:1150
#, no-wrap
msgid ""
"% sysctl kern.sched.name\n"
"kern.sched.name: ULE\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1168
+#: documentation/content/en/books/faq/_index.adoc:1153
#, no-wrap
msgid "What is kern.sched.quantum?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1171
+#: documentation/content/en/books/faq/_index.adoc:1156
msgid ""
"`kern.sched.quantum` is the maximum number of ticks a process can run "
"without being preempted in the 4BSD scheduler."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1173
+#: documentation/content/en/books/faq/_index.adoc:1158
#, no-wrap
msgid "Disks, File Systems, and Boot Loaders"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1176
+#: documentation/content/en/books/faq/_index.adoc:1161
#, no-wrap
msgid "How can I add my new hard disk to my FreeBSD system?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1179
+#: documentation/content/en/books/faq/_index.adoc:1164
msgid ""
"See the extref:{handbook}disks/[Adding Disks, disks-adding] section in the "
"FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1181
+#: documentation/content/en/books/faq/_index.adoc:1166
#, no-wrap
msgid "How do I move my system over to my huge new disk?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1187
+#: documentation/content/en/books/faq/_index.adoc:1172
msgid ""
"The best way is to reinstall the operating system on the new disk, then move "
"the user data over. This is highly recommended when tracking _-STABLE_ for "
"more than one release or when updating a release instead of installing a new "
"one. Install booteasy on both disks with man:boot0cfg[8] and dual boot "
"until you are happy with the new configuration. Skip the next paragraph to "
"find out how to move the data after doing this."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1190
+#: documentation/content/en/books/faq/_index.adoc:1175
msgid ""
"Alternatively, partition and label the new disk with either man:sade[8] or "
"man:gpart[8]. If the disks are MBR-formatted, booteasy can be installed on "
"both disks with man:boot0cfg[8] so that the computer can dual boot to the "
"old or new system after the copying is done."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1194
+#: documentation/content/en/books/faq/_index.adoc:1179
msgid ""
"Once the new disk set up, the data cannot just be copied. Instead, use "
"tools that understand device files and system flags, such as man:dump[8]. "
"Although it is recommended to move the data while in single-user mode, it is "
"not required."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1198
+#: documentation/content/en/books/faq/_index.adoc:1183
msgid ""
"When the disks are formatted with UFS, never use anything but man:dump[8] "
"and man:restore[8] to move the root file system. These commands should also "
"be used when moving a single partition to another empty partition. The "
"sequence of steps to use `dump` to move the data from one UFS partitions to "
"a new partition is:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1202
+#: documentation/content/en/books/faq/_index.adoc:1187
msgid "`newfs` the new partition."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1203
+#: documentation/content/en/books/faq/_index.adoc:1188
msgid "`mount` it on a temporary mount point."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1204
+#: documentation/content/en/books/faq/_index.adoc:1189
msgid "`cd` to that directory."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1205
+#: documentation/content/en/books/faq/_index.adoc:1190
msgid "`dump` the old partition, piping output to the new one."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1208
+#: documentation/content/en/books/faq/_index.adoc:1193
msgid ""
"For example, to move [.filename]#/dev/ada1s1a# with [.filename]#/mnt# as the "
"temporary mount point, type:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1215
+#: documentation/content/en/books/faq/_index.adoc:1200
#, no-wrap
msgid ""
"# newfs /dev/ada1s1a\n"
"# mount /dev/ada1s1a /mnt\n"
"# cd /mnt\n"
"# dump 0af - / | restore rf -\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1219
+#: documentation/content/en/books/faq/_index.adoc:1204
msgid ""
"Rearranging partitions with `dump` takes a bit more work. To merge a "
"partition like [.filename]#/var# into its parent, create the new partition "
"large enough for both, move the parent partition as described above, then "
"move the child partition into the empty directory that the first move "
"created:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1228
+#: documentation/content/en/books/faq/_index.adoc:1213
#, no-wrap
msgid ""
"# newfs /dev/ada1s1a\n"
"# mount /dev/ada1s1a /mnt\n"
"# cd /mnt\n"
"# dump 0af - / | restore rf -\n"
"# cd var\n"
"# dump 0af - /var | restore rf -\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1231
+#: documentation/content/en/books/faq/_index.adoc:1216
msgid ""
"To split a directory from its parent, say putting [.filename]#/var# on its "
"own partition when it was not before, create both partitions, then mount the "
"child partition on the appropriate directory in the temporary mount point, "
"then move the old single partition:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1241
+#: documentation/content/en/books/faq/_index.adoc:1226
#, no-wrap
msgid ""
"# newfs /dev/ada1s1a\n"
"# newfs /dev/ada1s1d\n"
"# mount /dev/ada1s1a /mnt\n"
"# mkdir /mnt/var\n"
"# mount /dev/ada1s1d /mnt/var\n"
"# cd /mnt\n"
"# dump 0af - / | restore rf -\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1245
+#: documentation/content/en/books/faq/_index.adoc:1230
msgid ""
"The man:cpio[1] and man:pax[1] utilities are also available for moving user "
"data. These are known to lose file flag information, so use them with "
"caution."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1247
+#: documentation/content/en/books/faq/_index.adoc:1232
#, no-wrap
msgid "Which partitions can safely use Soft Updates? I have heard that Soft Updates on / can cause problems. What about Journaled Soft Updates?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1250
+#: documentation/content/en/books/faq/_index.adoc:1235
msgid ""
"Short answer: Soft Updates can usually be safely used on all partitions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1255
+#: documentation/content/en/books/faq/_index.adoc:1240
msgid ""
"Long answer: Soft Updates has two characteristics that may be undesirable on "
"certain partitions. First, a Soft Updates partition has a small chance of "
"losing data during a system crash. The partition will not be corrupted as "
"the data will simply be lost. Second, Soft Updates can cause temporary "
"space shortages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1263
+#: documentation/content/en/books/faq/_index.adoc:1248
msgid ""
"When using Soft Updates, the kernel can take up to thirty seconds to write "
"changes to the physical disk. When a large file is deleted the file still "
"resides on disk until the kernel actually performs the deletion. This can "
"cause a very simple race condition. Suppose one large file is deleted and "
"another large file is immediately created. The first large file is not yet "
"actually removed from the physical disk, so the disk might not have enough "
"room for the second large file. This will produce an error that the "
"partition does not have enough space, even though a large chunk of space has "
"just been released. A few seconds later, the file creation works as "
"expected."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1266
+#: documentation/content/en/books/faq/_index.adoc:1251
msgid ""
"If a system should crash after the kernel accepts a chunk of data for "
"writing to disk, but before that data is actually written out, data could be "
"lost. This risk is extremely small, but generally manageable."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1269
+#: documentation/content/en/books/faq/_index.adoc:1254
msgid ""
"These issues affect all partitions using Soft Updates. So, what does this "
"mean for the root partition?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1274
+#: documentation/content/en/books/faq/_index.adoc:1259
msgid ""
"Vital information on the root partition changes very rarely. If the system "
"crashed during the thirty-second window after such a change is made, it is "
"possible that data could be lost. This risk is negligible for most "
"applications, but be aware that it exists. If the system cannot tolerate "
"this much risk, do not use Soft Updates on the root file system!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1278
+#: documentation/content/en/books/faq/_index.adoc:1263
msgid ""
"[.filename]#/# is traditionally one of the smallest partitions. If [."
"filename]#/tmp# is on [.filename]#/#, there may be intermittent space "
"problems. Symlinking [.filename]#/tmp# to [.filename]#/var/tmp# will solve "
"this problem."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1280
+#: documentation/content/en/books/faq/_index.adoc:1265
msgid ""
"Finally, man:dump[8] does not work in live mode (-L) on a filesystem, with "
"Journaled Soft Updates (SU+J)."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1282
+#: documentation/content/en/books/faq/_index.adoc:1267
#, no-wrap
msgid "Can I mount other foreign file systems under FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1285
+#: documentation/content/en/books/faq/_index.adoc:1270
msgid "FreeBSD supports a variety of other file systems."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/faq/_index.adoc:1286
+#: documentation/content/en/books/faq/_index.adoc:1271
#, no-wrap
msgid "UFS"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1290
+#: documentation/content/en/books/faq/_index.adoc:1274
msgid ""
"UFS CD-ROMs can be mounted directly on FreeBSD. Mounting disk partitions "
"from Digital UNIX and other systems that support UFS may be more complex, "
"depending on the details of the disk partitioning for the operating system "
"in question."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/faq/_index.adoc:1291
+#: documentation/content/en/books/faq/_index.adoc:1275
#, no-wrap
msgid "ext2/ext3"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1294
+#: documentation/content/en/books/faq/_index.adoc:1278
msgid ""
"FreeBSD supports `ext2fs`, `ext3fs`, and `ext4fs` partitions. See man:"
"ext2fs[5] for more information."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/faq/_index.adoc:1295
+#: documentation/content/en/books/faq/_index.adoc:1279
#, no-wrap
msgid "NTFS"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1298
+#: documentation/content/en/books/faq/_index.adoc:1282
msgid ""
"FUSE based NTFS support is available as a port (package:sysutils/fusefs-"
"ntfs[]). For more information, see man:ntfs-3g[8]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/faq/_index.adoc:1299
+#: documentation/content/en/books/faq/_index.adoc:1283
#, no-wrap
msgid "FAT"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1302
+#: documentation/content/en/books/faq/_index.adoc:1286
msgid ""
"FreeBSD includes a read-write FAT driver. For more information, see man:"
"mount_msdosfs[8]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1303
-#: documentation/content/en/books/faq/_index.adoc:1541
+#: documentation/content/en/books/faq/_index.adoc:1287
+#: documentation/content/en/books/faq/_index.adoc:1525
#, no-wrap
msgid "ZFS"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1307
+#: documentation/content/en/books/faq/_index.adoc:1291
msgid ""
"FreeBSD includes a port of Sun(TM)'s ZFS driver. The current recommendation "
"is to use it only on amd64 platforms with sufficient memory. For more "
"information, see man:zfs[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1309
+#: documentation/content/en/books/faq/_index.adoc:1293
msgid ""
"FreeBSD includes the Network File System NFS and the FreeBSD Ports "
"Collection provides several FUSE applications to support many other file "
"systems."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1311
+#: documentation/content/en/books/faq/_index.adoc:1295
#, no-wrap
msgid "How do I mount a secondary DOS partition?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1316
+#: documentation/content/en/books/faq/_index.adoc:1300
msgid ""
"The secondary DOS partitions are found after _all_ the primary partitions. "
"For example, if `E` is the second DOS partition on the second SCSI drive, "
-"there will be a device file for \"slice 5\" in [.filename]#/dev#. To mount "
+"there will be a device file for \"slice 5\" in [.filename]#/dev#. To mount "
"it:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1320
+#: documentation/content/en/books/faq/_index.adoc:1304
#, no-wrap
msgid "# mount -t msdosfs /dev/da1s5 /dos/e\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1323
+#: documentation/content/en/books/faq/_index.adoc:1307
#, no-wrap
msgid "Is there a cryptographic file system for FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1327
+#: documentation/content/en/books/faq/_index.adoc:1311
msgid ""
"Yes, man:gbde[8] and man:geli[8]. See the extref:{handbook}disks/"
"[Encrypting Disk Partitions, disks-encrypting] section of the FreeBSD "
"Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1329
+#: documentation/content/en/books/faq/_index.adoc:1313
#, no-wrap
msgid "How do I boot FreeBSD and Linux(R) using GRUB?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1333
+#: documentation/content/en/books/faq/_index.adoc:1316
msgid ""
"To boot FreeBSD using GRUB, add the following to either [.filename]#/boot/"
"grub/menu.lst# or [.filename]#/boot/grub/grub.conf#, depending upon which is "
"used by the Linux(R) distribution."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1339
+#: documentation/content/en/books/faq/_index.adoc:1322
#, no-wrap
msgid ""
"title FreeBSD 9.1\n"
"\troot (hd0,a)\n"
"\tkernel /boot/loader\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1344
+#: documentation/content/en/books/faq/_index.adoc:1327
msgid ""
"Where _hd0,a_ points to the root partition on the first disk. To specify "
"the slice number, use something like this _(hd0,2,a)_. By default, if the "
"slice number is omitted, GRUB searches the first slice which has the `a` "
"partition."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1346
+#: documentation/content/en/books/faq/_index.adoc:1329
#, no-wrap
msgid "How do I boot FreeBSD and Linux(R) using BootEasy?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1350
+#: documentation/content/en/books/faq/_index.adoc:1333
msgid ""
"Install LILO at the start of the Linux(R) boot partition instead of in the "
"Master Boot Record. Then boot LILO from BootEasy."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1352
+#: documentation/content/en/books/faq/_index.adoc:1335
msgid ""
"This is recommended when running Windows(R) and Linux(R) as it makes it "
"simpler to get Linux(R) booting again if Windows(R) is reinstalled."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1354
+#: documentation/content/en/books/faq/_index.adoc:1337
#, no-wrap
msgid "How do I change the boot prompt from ??? to something more meaningful?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1358
+#: documentation/content/en/books/faq/_index.adoc:1341
msgid ""
"This cannot be accomplished with the standard boot manager without rewriting "
"it. There are a number of other boot managers in the [.filename]#sysutils# "
"category of the Ports Collection."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1360
+#: documentation/content/en/books/faq/_index.adoc:1343
#, no-wrap
msgid "How do I use a new removable drive?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1363
+#: documentation/content/en/books/faq/_index.adoc:1346
msgid "If the drive already has a file system on it, use a command like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1367
+#: documentation/content/en/books/faq/_index.adoc:1350
#, no-wrap
msgid "# mount -t msdosfs /dev/da0s1 /mnt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1372
+#: documentation/content/en/books/faq/_index.adoc:1355
msgid ""
"If the drive will only be used with FreeBSD systems, partition it with UFS "
"or ZFS. This will provide long filename support, improvement in "
"performance, and stability. If the drive will be used by other operating "
"systems, a more portable choice, such as msdosfs, is better."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1378
+#: documentation/content/en/books/faq/_index.adoc:1361
#, no-wrap
msgid ""
"# dd if=/dev/zero of=/dev/da0 count=2\n"
"# gpart create -s GPT /dev/da0\n"
"# gpart add -t freebsd-ufs /dev/da0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1381
+#: documentation/content/en/books/faq/_index.adoc:1364
msgid "Finally, create a new file system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1385
+#: documentation/content/en/books/faq/_index.adoc:1368
#, no-wrap
msgid "# newfs /dev/da0p1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1388
+#: documentation/content/en/books/faq/_index.adoc:1371
msgid "and mount it:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1392
+#: documentation/content/en/books/faq/_index.adoc:1375
#, no-wrap
msgid "# mount /dev/da0s1 /mnt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1395
+#: documentation/content/en/books/faq/_index.adoc:1378
msgid ""
"It is a good idea to add a line to [.filename]#/etc/fstab# (see man:"
"fstab[5]) so you can just type `mount /mnt` in the future:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1399
+#: documentation/content/en/books/faq/_index.adoc:1382
#, no-wrap
msgid "/dev/da0p1 /mnt ufs rw,noauto 0 0\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1402
+#: documentation/content/en/books/faq/_index.adoc:1385
#, no-wrap
msgid "Why do I get Incorrect super block when mounting a CD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1406
+#: documentation/content/en/books/faq/_index.adoc:1389
msgid ""
"The type of device to mount must be specified. This is described in the "
"Handbook section on extref:{handbook}disks/[Using Data CDs, mounting-cd]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1408
+#: documentation/content/en/books/faq/_index.adoc:1391
#, no-wrap
msgid "Why do I get Device not configured when mounting a CD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1412
+#: documentation/content/en/books/faq/_index.adoc:1395
msgid ""
"This generally means that there is no CD in the drive, or the drive is not "
"visible on the bus. Refer to the extref:{handbook}disks/[Using Data CDs, "
"mounting-cd] section of the Handbook for a detailed discussion of this issue."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1414
+#: documentation/content/en/books/faq/_index.adoc:1397
#, no-wrap
msgid "Why do all non-English characters in filenames show up as ? on my CDs when mounted in FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1418
+#: documentation/content/en/books/faq/_index.adoc:1401
msgid ""
"The CD probably uses the \"Joliet\" extension for storing information about "
"files and directories. This is discussed in the Handbook section on extref:"
"{handbook}disks/[Using Data CD-ROMs, mounting-cd]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1420
+#: documentation/content/en/books/faq/_index.adoc:1403
#, no-wrap
msgid "A CD burned under FreeBSD cannot be read under any other operating system. Why?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1424
+#: documentation/content/en/books/faq/_index.adoc:1407
msgid ""
"This means a raw file was burned to the CD, rather than creating an ISO 9660 "
"file system. Take a look at the Handbook section on extref:{handbook}disks/"
"[Using Data CDs]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1426
+#: documentation/content/en/books/faq/_index.adoc:1409
#, no-wrap
msgid "How can I create an image of a data CD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1430
+#: documentation/content/en/books/faq/_index.adoc:1413
msgid ""
"This is discussed in the Handbook section on extref:{handbook}disks/[Writing "
"Data to an ISO File System, mkisofs]. For more on working with CD-ROMs, see "
"the extref:{handbook}disks/[Creating CDs Section, creating-cds] in the "
"Storage chapter in the Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1432
+#: documentation/content/en/books/faq/_index.adoc:1415
#, no-wrap
msgid "Why can I not mount an audio CD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1438
+#: documentation/content/en/books/faq/_index.adoc:1421
msgid ""
"Trying to mount an audio CD will produce an error like `cd9660: /dev/cd0: "
"Invalid argument`. This is because `mount` only works on file systems. "
"Audio CDs do not have file systems; they just have data. Instead, use a "
"program that reads audio CDs, such as the package:audio/xmcd[] package or "
"port."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1440
+#: documentation/content/en/books/faq/_index.adoc:1423
#, no-wrap
msgid "How do I mount a multi-session CD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1445
+#: documentation/content/en/books/faq/_index.adoc:1428
msgid ""
"By default, man:mount[8] will attempt to mount the last data track (session) "
"of a CD. To load an earlier session, use the `-s` command line argument. "
"Refer to man:mount_cd9660[8] for specific examples."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1447
+#: documentation/content/en/books/faq/_index.adoc:1430
#, no-wrap
msgid "How do I let ordinary users mount CD-ROMs, DVDs, USB drives, and other removable media?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1450
+#: documentation/content/en/books/faq/_index.adoc:1433
msgid "As `root` set the sysctl variable `vfs.usermount` to `1`."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1454
+#: documentation/content/en/books/faq/_index.adoc:1437
#, no-wrap
msgid "# sysctl vfs.usermount=1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1457
+#: documentation/content/en/books/faq/_index.adoc:1440
msgid ""
"To make this persist across reboots, add the line `vfs.usermount=1` to [."
"filename]#/etc/sysctl.conf# so that it is reset at system boot time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1460
+#: documentation/content/en/books/faq/_index.adoc:1443
msgid ""
"Users can only mount devices they have read permissions to. To allow users "
"to mount a device permissions must be set in [.filename]#/etc/devfs.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1462
+#: documentation/content/en/books/faq/_index.adoc:1445
msgid "For example, to allow users to mount the first USB drive add:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1468
+#: documentation/content/en/books/faq/_index.adoc:1451
#, no-wrap
msgid ""
"# Allow all users to mount a USB drive.\n"
"\t own /dev/da0 root:operator\n"
"\t perm /dev/da0 0666\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1471
+#: documentation/content/en/books/faq/_index.adoc:1454
msgid ""
"All users can now mount devices they could read onto a directory that they "
"own:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1476
+#: documentation/content/en/books/faq/_index.adoc:1459
#, no-wrap
msgid ""
"% mkdir ~/my-mount-point\n"
"% mount -t msdosfs /dev/da0 ~/my-mount-point\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1479
+#: documentation/content/en/books/faq/_index.adoc:1462
msgid "Unmounting the device is simple:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1483
+#: documentation/content/en/books/faq/_index.adoc:1466
#, no-wrap
msgid "% umount ~/my-mount-point\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1487
+#: documentation/content/en/books/faq/_index.adoc:1470
msgid ""
"Enabling `vfs.usermount`, however, has negative security implications. A "
"better way to access MS-DOS(R) formatted media is to use the package:"
"emulators/mtools[] package in the Ports Collection."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1491
+#: documentation/content/en/books/faq/_index.adoc:1474
msgid ""
"The device name used in the previous examples must be changed according to "
"the configuration."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1494
+#: documentation/content/en/books/faq/_index.adoc:1477
#, no-wrap
msgid "The du and df commands show different amounts of disk space available. What is going on?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1500
+#: documentation/content/en/books/faq/_index.adoc:1483
msgid ""
"This is due to how these commands actually work. `du` goes through the "
"directory tree, measures how large each file is, and presents the totals. "
"`df` just asks the file system how much space it has left. They seem to be "
"the same thing, but a file without a directory entry will affect `df` but "
"not `du`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1509
+#: documentation/content/en/books/faq/_index.adoc:1492
msgid ""
"When a program is using a file, and the file is deleted, the file is not "
"really removed from the file system until the program stops using it. The "
"file is immediately deleted from the directory listing, however. As an "
"example, consider a file large enough to affect the output of `du` and "
"`df`. A file being viewed with `more` can be deleted without causing an "
"error. The entry is removed from the directory so no other program or user "
"can access it. However, `du` shows that it is gone as it has walked the "
"directory tree and the file is not listed. `df` shows that it is still "
"there, as the file system knows that `more` is still using that space. Once "
"the `more` session ends, `du` and `df` will agree."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1515
+#: documentation/content/en/books/faq/_index.adoc:1499
msgid ""
"This situation is common on web servers. Many people set up a FreeBSD web "
"server and forget to rotate the log files. The access log fills up [."
-"filename]#/var#. The new administrator deletes the file, but the system "
+"filename]#/var#. The new administrator deletes the file, but the system "
"still complains that the partition is full. Stopping and restarting the web "
"server program would free the file, allowing the system to release the disk "
"space. To prevent this from happening, set up man:newsyslog[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1517
+#: documentation/content/en/books/faq/_index.adoc:1501
msgid ""
"Note that Soft Updates can delay the freeing of disk space and it can take "
"up to 30 seconds for the change to be visible."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1519
+#: documentation/content/en/books/faq/_index.adoc:1503
#, no-wrap
msgid "How can I add more swap space?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1522
+#: documentation/content/en/books/faq/_index.adoc:1506
msgid ""
"This section extref:{handbook}config/[of the Handbook, adding-swap-space] "
"describes how to do this."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1524
+#: documentation/content/en/books/faq/_index.adoc:1508
#, no-wrap
msgid "Why does FreeBSD see my disk as smaller than the manufacturer says it is?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1528
+#: documentation/content/en/books/faq/_index.adoc:1512
msgid ""
"Disk manufacturers calculate gigabytes as a billion bytes each, whereas "
"FreeBSD calculates them as 1,073,741,824 bytes each. This explains why, for "
"example, FreeBSD's boot messages will report a disk that supposedly has 80 "
"GB as holding 76,319 MB."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1530
+#: documentation/content/en/books/faq/_index.adoc:1514
msgid ""
"Also note that FreeBSD will (by default) <<disk-more-than-full,reserve>> 8% "
"of the disk space."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1532
+#: documentation/content/en/books/faq/_index.adoc:1516
#, no-wrap
msgid "How is it possible for a partition to be more than 100% full?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1537
+#: documentation/content/en/books/faq/_index.adoc:1521
msgid ""
"A portion of each UFS partition (8%, by default) is reserved for use by the "
"operating system and the `root` user. man:df[1] does not count that space "
"when calculating the `Capacity` column, so it can exceed 100%. Notice that "
"the `Blocks` column is always greater than the sum of the `Used` and `Avail` "
"columns, usually by a factor of 8%."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1539
+#: documentation/content/en/books/faq/_index.adoc:1523
msgid "For more details, look up `-m` in man:tunefs[8]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1544
+#: documentation/content/en/books/faq/_index.adoc:1528
#, no-wrap
msgid "What is the minimum amount of RAM one should have to run ZFS?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1547
+#: documentation/content/en/books/faq/_index.adoc:1531
msgid ""
"A minimum of 4GB of RAM is required for comfortable usage, but individual "
"workloads can vary widely."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1549
+#: documentation/content/en/books/faq/_index.adoc:1533
#, no-wrap
msgid "What is the ZIL and when does it get used?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1557
+#: documentation/content/en/books/faq/_index.adoc:1541
msgid ""
"The ZIL (ZFS intent log) is a write log used to implement posix write "
"commitment semantics across crashes. Normally writes are bundled up into "
"transaction groups and written to disk when filled (\"Transaction Group "
"Commit\"). However syscalls like man:fsync[2] require a commitment that the "
"data is written to stable storage before returning. The ZIL is needed for "
"writes that have been acknowledged as written but which are not yet on disk "
"as part of a transaction. The transaction groups are timestamped. In the "
"event of a crash the last valid timestamp is found and missing data is "
"merged in from the ZIL."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1559
+#: documentation/content/en/books/faq/_index.adoc:1543
#, no-wrap
msgid "Do I need a SSD for ZIL?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1564
+#: documentation/content/en/books/faq/_index.adoc:1548
msgid ""
"By default, ZFS stores the ZIL in the pool with all the data. If an "
"application has a heavy write load, storing the ZIL in a separate device "
"that has very fast synchronous, sequential write performance can improve "
"overall system performance. For other workloads, a SSD is unlikely to make "
"much of an improvement."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1566
+#: documentation/content/en/books/faq/_index.adoc:1550
#, no-wrap
msgid "What is the L2ARC?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1571
+#: documentation/content/en/books/faq/_index.adoc:1555
msgid ""
"The L2ARC is a read cache stored on a fast device such as an SSD. This "
"cache is not persistent across reboots. Note that RAM is used as the first "
"layer of cache and the L2ARC is only needed if there is insufficient RAM."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1575
+#: documentation/content/en/books/faq/_index.adoc:1559
msgid ""
"L2ARC needs space in the ARC to index it. So, perversely, a working set "
"that fits perfectly in the ARC will not fit perfectly any more if a L2ARC is "
"used because part of the ARC is holding the L2ARC index, pushing part of the "
"working set into the L2ARC which is slower than RAM."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1577
+#: documentation/content/en/books/faq/_index.adoc:1561
#, no-wrap
msgid "Is enabling deduplication advisable?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1580
+#: documentation/content/en/books/faq/_index.adoc:1564
msgid "Generally speaking, no."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1586
+#: documentation/content/en/books/faq/_index.adoc:1569
msgid ""
"Deduplication takes up a significant amount of RAM and may slow down read "
"and write disk access times. Unless one is storing data that is very "
"heavily duplicated, such as virtual machine images or user backups, it is "
"possible that deduplication will do more harm than good. Another "
"consideration is the inability to revert deduplication status. If data is "
"written when deduplication is enabled, disabling dedup will not cause those "
"blocks which were deduplicated to be replicated until they are next modified."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1588
+#: documentation/content/en/books/faq/_index.adoc:1572
msgid ""
-"Deduplication can also lead to some unexpected situations. In particular, "
+"Deduplication can also lead to some unexpected situations. In particular, "
"deleting files may become much slower."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1590
+#: documentation/content/en/books/faq/_index.adoc:1574
#, no-wrap
msgid "I cannot delete or create files on my ZFS pool. How can I fix this?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1595
+#: documentation/content/en/books/faq/_index.adoc:1579
msgid ""
"This could happen because the pool is 100% full. ZFS requires space on the "
"disk to write transaction metadata. To restore the pool to a usable state, "
"truncate the file to delete:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1599
+#: documentation/content/en/books/faq/_index.adoc:1583
#, no-wrap
msgid "% truncate -s 0 unimportant-file\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1602
+#: documentation/content/en/books/faq/_index.adoc:1586
msgid ""
"File truncation works because a new transaction is not started, new spare "
"blocks are created instead."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1606
+#: documentation/content/en/books/faq/_index.adoc:1590
msgid ""
"On systems with additional ZFS dataset tuning, such as deduplication, the "
-"space may not be immediately available"
+"space may not be immediately available."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1609
+#: documentation/content/en/books/faq/_index.adoc:1593
#, no-wrap
-msgid "Does ZFS support TRIM for Solid State Drives?"
+msgid "Is there TRIM support for ZFS on solid state drives?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1613
+#: documentation/content/en/books/faq/_index.adoc:1597
msgid ""
-"ZFS TRIM support was added to FreeBSD 10-CURRENT with revision link:https://"
-"svnweb.freebsd.org/changeset/base/240868[r240868]. ZFS TRIM support was "
-"added to all FreeBSD-STABLE branches in link:https://svnweb.freebsd.org/"
-"changeset/base/252162[r252162] and link:https://svnweb.freebsd.org/changeset/"
-"base/251419[r251419], respectively."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1615
-msgid ""
-"ZFS TRIM is enabled by default, and can be turned off by adding this line to "
-"[.filename]#/etc/sysctl.conf#:"
+"ZFS in FreeBSD 12.3 and 12.4: TRIM is enabled by default. To disable TRIM: "
+"add the line below to [.filename]#/etc/sysctl.conf#, then restart the system."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1619
+#: documentation/content/en/books/faq/_index.adoc:1601
#, no-wrap
msgid "vfs.zfs.trim.enabled=0\n"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1625
+#. type: Plain text
+#: documentation/content/en/books/faq/_index.adoc:1604
msgid ""
-"ZFS TRIM support was added to GELI as of link:https://svnweb.freebsd.org/"
-"changeset/base/286444[r286444]. Please see man:geli[8] and the `-T` switch."
+"OpenZFS in FreeBSD 13.0 and greater: see man:zpool-trim[8], and `autotrim` "
+"in man:zpoolprops[7]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1628
+#: documentation/content/en/books/faq/_index.adoc:1606
#, no-wrap
msgid "System Administration"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1631
+#: documentation/content/en/books/faq/_index.adoc:1609
#, no-wrap
msgid "Where are the system start-up configuration files?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1636
+#: documentation/content/en/books/faq/_index.adoc:1615
msgid ""
"The primary configuration file is [.filename]#/etc/defaults/rc.conf# which "
"is described in man:rc.conf[5]. System startup scripts such as [.filename]#/"
"etc/rc# and [.filename]#/etc/rc.d#, which are described in man:rc[8], "
"include this file. _Do not edit this file!_ Instead, to edit an entry in [."
"filename]#/etc/defaults/rc.conf#, copy the line into [.filename]#/etc/rc."
"conf# and change it there."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1638
+#: documentation/content/en/books/faq/_index.adoc:1617
msgid "For example, to start man:sshd[8], the included OpenSSH daemon:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1642
+#: documentation/content/en/books/faq/_index.adoc:1621
#, no-wrap
msgid "# echo 'sshd_enable=\"YES\"' >> /etc/rc.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1645
+#: documentation/content/en/books/faq/_index.adoc:1624
msgid "Alternatively, use man:sysrc[8] to modify [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1649
+#: documentation/content/en/books/faq/_index.adoc:1628
#, no-wrap
msgid "# sysrc sshd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1653
+#: documentation/content/en/books/faq/_index.adoc:1632
msgid ""
"To start up local services, place shell scripts in the [.filename]#/usr/"
"local/etc/rc.d# directory. These shell scripts should be set executable, "
"the default file mode is `555`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1655
+#: documentation/content/en/books/faq/_index.adoc:1634
#, no-wrap
msgid "How do I add a user easily?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1658
+#: documentation/content/en/books/faq/_index.adoc:1637
msgid ""
"Use the man:adduser[8] command, or the man:pw[8] command for more "
"complicated situations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1660
+#: documentation/content/en/books/faq/_index.adoc:1639
msgid ""
"To remove the user, use the man:rmuser[8] command or, if necessary, man:"
"pw[8]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1662
+#: documentation/content/en/books/faq/_index.adoc:1641
#, no-wrap
msgid "Why do I keep getting messages like root: not found after editing /etc/crontab?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1669
+#: documentation/content/en/books/faq/_index.adoc:1648
msgid ""
"This is normally caused by editing the system crontab. This is not the "
"correct way to do things as the system crontab has a different format to the "
"per-user crontabs. The system crontab has an extra field, specifying which "
"user to run the command as. man:cron[8] assumes this user is the first word "
"of the command to execute. Since no such command exists, this error message "
"is displayed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1671
+#: documentation/content/en/books/faq/_index.adoc:1650
msgid "To delete the extra, incorrect crontab:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1675
+#: documentation/content/en/books/faq/_index.adoc:1654
#, no-wrap
msgid "# crontab -r\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1678
+#: documentation/content/en/books/faq/_index.adoc:1657
#, no-wrap
msgid "Why do I get the error, you are not in the correct group to su root when I try to su to root?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1683
+#: documentation/content/en/books/faq/_index.adoc:1662
msgid ""
"This is a security feature. In order to `su` to `root`, or any other "
"account with superuser privileges, the user account must be a member of the "
"`wheel` group. If this feature were not there, anybody with an account on a "
"system who also found out ``root``'s password would be able to gain "
"superuser level access to the system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1685
+#: documentation/content/en/books/faq/_index.adoc:1664
msgid ""
"To allow someone to `su` to `root`, put them in the `wheel` group using `pw`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1689
+#: documentation/content/en/books/faq/_index.adoc:1668
#, no-wrap
msgid "# pw groupmod wheel -m lisa\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1692
+#: documentation/content/en/books/faq/_index.adoc:1671
msgid "The above example will add user `lisa` to the group `wheel`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1694
+#: documentation/content/en/books/faq/_index.adoc:1673
#, no-wrap
msgid "I made a mistake in rc.conf, or another startup file, and now I cannot edit it because the file system is read-only. What should I do?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1701
+#: documentation/content/en/books/faq/_index.adoc:1679
msgid ""
"Restart the system using `boot -s` at the loader prompt to enter single-user "
"mode. When prompted for a shell pathname, press kbd:[Enter] and run `mount -"
"urw /` to re-mount the root file system in read/write mode. You may also "
"need to run `mount -a -t ufs` to mount the file system where your favorite "
"editor is defined. If that editor is on a network file system, either "
"configure the network manually before mounting the network file systems, or "
"use an editor which resides on a local file system, such as man:ed[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1704
+#: documentation/content/en/books/faq/_index.adoc:1681
msgid ""
"In order to use a full screen editor such as man:vi[1] or man:emacs[1], run "
"`export TERM=xterm` so that these editors can load the correct data from the "
"man:termcap[5] database."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1707
+#: documentation/content/en/books/faq/_index.adoc:1684
msgid ""
"After performing these steps, edit [.filename]#/etc/rc.conf# to fix the "
"syntax error. The error message displayed immediately after the kernel boot "
"messages should indicate the number of the line in the file which is at "
"fault."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1709
+#: documentation/content/en/books/faq/_index.adoc:1686
#, no-wrap
msgid "Why am I having trouble setting up my printer?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1712
+#: documentation/content/en/books/faq/_index.adoc:1689
msgid ""
"See the extref:{handbook}printing/[Handbook entry on printing] for "
"troubleshooting tips."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1714
+#: documentation/content/en/books/faq/_index.adoc:1691
#, no-wrap
msgid "How can I correct the keyboard mappings for my system?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1718
+#: documentation/content/en/books/faq/_index.adoc:1694
msgid ""
"Refer to the Handbook section on extref:{handbook}l10n/[using localization, "
"using-localization], specifically the section on extref:{handbook}l10n/"
"[console setup, setting-console]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1720
+#: documentation/content/en/books/faq/_index.adoc:1696
#, no-wrap
msgid "Why can I not get user quotas to work properly?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1724
+#: documentation/content/en/books/faq/_index.adoc:1700
msgid ""
"It is possible that the kernel is not configured to use quotas. In this "
"case, add the following line to the kernel configuration file and recompile "
"the kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1728
+#: documentation/content/en/books/faq/_index.adoc:1704
#, no-wrap
msgid "options QUOTA\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1731
+#: documentation/content/en/books/faq/_index.adoc:1707
msgid ""
"Refer to the extref:{handbook}disks/[Handbook entry on quotas, quotas] for "
"full details."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1732
+#: documentation/content/en/books/faq/_index.adoc:1708
msgid "Do not turn on quotas on [.filename]#/#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1733
+#: documentation/content/en/books/faq/_index.adoc:1709
msgid ""
"Put the quota file on the file system that the quotas are to be enforced on:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1738
+#: documentation/content/en/books/faq/_index.adoc:1714
#, no-wrap
msgid "File System"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1740
+#: documentation/content/en/books/faq/_index.adoc:1716
#, no-wrap
msgid "Quota file"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1741
+#: documentation/content/en/books/faq/_index.adoc:1717
#, no-wrap
msgid "[.filename]#/usr#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1743
+#: documentation/content/en/books/faq/_index.adoc:1719
#, no-wrap
msgid "[.filename]#/usr/admin/quotas#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1744
+#: documentation/content/en/books/faq/_index.adoc:1720
#, no-wrap
msgid "[.filename]#/home#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1746
+#: documentation/content/en/books/faq/_index.adoc:1722
#, no-wrap
msgid "[.filename]#/home/admin/quotas#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/faq/_index.adoc:1747
-#: documentation/content/en/books/faq/_index.adoc:1748
+#: documentation/content/en/books/faq/_index.adoc:1723
+#: documentation/content/en/books/faq/_index.adoc:1724
#, no-wrap
msgid "..."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1751
+#: documentation/content/en/books/faq/_index.adoc:1727
#, no-wrap
msgid "Does FreeBSD support System V IPC primitives?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1756
+#: documentation/content/en/books/faq/_index.adoc:1731
msgid ""
"Yes, FreeBSD supports System V-style IPC, including shared memory, messages "
"and semaphores, in the [.filename]#GENERIC# kernel. With a custom kernel, "
"support may be loaded with the [.filename]#sysvshm.ko#, [.filename]#sysvsem."
"ko# and [.filename]#sysvmsg.ko# kernel modules, or enabled in the custom "
"kernel by adding the following lines to the kernel configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1762
+#: documentation/content/en/books/faq/_index.adoc:1737
#, no-wrap
msgid ""
"options SYSVSHM # enable shared memory\n"
"options SYSVSEM # enable for semaphores\n"
"options SYSVMSG # enable for messaging\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1765
+#: documentation/content/en/books/faq/_index.adoc:1740
msgid "Recompile and install the kernel."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1767
+#: documentation/content/en/books/faq/_index.adoc:1742
#, no-wrap
msgid "What other mail-server software can I use instead of Sendmail?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1772
+#: documentation/content/en/books/faq/_index.adoc:1747
msgid ""
"The http://www.sendmail.org/[Sendmail] server is the default mail-server "
"software for FreeBSD, but it can be replaced with another MTA installed from "
"the Ports Collection. Available ports include package:mail/exim[], package:"
"mail/postfix[], and package:mail/qmail[]. Search the mailing lists for "
"discussions regarding the advantages and disadvantages of the available MTAs."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1774
+#: documentation/content/en/books/faq/_index.adoc:1749
#, no-wrap
msgid "I have forgotten the root password! What do I do?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1780
+#: documentation/content/en/books/faq/_index.adoc:1756
msgid ""
"Do not panic! Restart the system, type `boot -s` at the `Boot:` prompt to "
"enter single-user mode. At the question about the shell to use, hit kbd:"
"[Enter] which will display a # prompt. Enter `mount -urw /` to remount the "
"root file system read/write, then run `mount -a` to remount all the file "
"systems. Run `passwd root` to change the `root` password then run man:"
"exit[1] to continue booting."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1787
+#: documentation/content/en/books/faq/_index.adoc:1763
msgid ""
"If you are still prompted to give the `root` password when entering the "
"single-user mode, it means that the console has been marked as `insecure` in "
"[.filename]#/etc/ttys#. In this case, it will be required to boot from a "
"FreeBSD installation disk, choose the [.guimenuitem]#Live CD# or [."
"guimenuitem]#Shell# at the beginning of the install process and issue the "
"commands mentioned above. Mount the specific partition in this case and "
"then chroot to it. For example, replace `mount -urw /` with `mount /dev/"
"ada0p1 /mnt; chroot /mnt` for a system on _ada0p1_."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:1794
+#: documentation/content/en/books/faq/_index.adoc:1769
msgid ""
"If the root partition cannot be mounted from single-user mode, it is "
"possible that the partitions are encrypted and it is impossible to mount "
"them without the access keys. For more information see the section about "
"encrypted disks in the FreeBSD extref:{handbook}disks/[Handbook, disks-"
"encrypting]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1797
+#: documentation/content/en/books/faq/_index.adoc:1772
#, no-wrap
msgid "How do I keep kbd:[Control] + kbd:[Alt] + kbd:[Delete] from rebooting the system?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1800
+#: documentation/content/en/books/faq/_index.adoc:1775
msgid ""
"When using man:vt[4], the default console driver, this can be done by "
"setting the following man:sysctl[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1804
+#: documentation/content/en/books/faq/_index.adoc:1779
#, no-wrap
msgid "# sysctl kern.vt.kbd_reboot=0\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1807
+#: documentation/content/en/books/faq/_index.adoc:1782
#, no-wrap
msgid "How do I reformat DOS text files to UNIX(R) ones?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1810
+#: documentation/content/en/books/faq/_index.adoc:1785
msgid "Use this man:perl[1] command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1814
+#: documentation/content/en/books/faq/_index.adoc:1789
#, no-wrap
msgid "% perl -i.bak -npe 's/\\r\\n/\\n/g' file(s)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1818
+#: documentation/content/en/books/faq/_index.adoc:1793
msgid ""
"where _file(s)_ is one or more files to process. The modification is done "
"in-place, with the original file stored with a [.filename]#.bak# extension."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1820
+#: documentation/content/en/books/faq/_index.adoc:1795
msgid "Alternatively, use man:tr[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1824
+#: documentation/content/en/books/faq/_index.adoc:1799
#, no-wrap
msgid "% tr -d '\\r' < dos-text-file > unix-file\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1828
+#: documentation/content/en/books/faq/_index.adoc:1803
msgid ""
"_dos-text-file_ is the file containing DOS text while _unix-file_ will "
"contain the converted output. This can be quite a bit faster than using "
"`perl`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1831
+#: documentation/content/en/books/faq/_index.adoc:1806
msgid ""
"Yet another way to reformat DOS text files is to use the package:converters/"
"dosunix[] port from the Ports Collection. Consult its documentation about "
"the details."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1833
+#: documentation/content/en/books/faq/_index.adoc:1808
#, no-wrap
msgid "How do I re-read [.filename]#/etc/rc.conf# and re-start [.filename]#/etc/rc# without a reboot?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1836
+#: documentation/content/en/books/faq/_index.adoc:1811
msgid "Go into single-user mode and then back to multi-user mode:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1842
+#: documentation/content/en/books/faq/_index.adoc:1817
#, no-wrap
msgid ""
"# shutdown now\n"
"# return\n"
"# exit\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1845
+#: documentation/content/en/books/faq/_index.adoc:1820
#, no-wrap
msgid "I tried to update my system to the latest _-STABLE_, but got _-BETAx_, _-RC_ or __-PRERELEASE__! What is going on?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1852
+#: documentation/content/en/books/faq/_index.adoc:1827
msgid ""
"Short answer: it is just a name. _RC_ stands for \"Release Candidate\". It "
"signifies that a release is imminent. In FreeBSD, _-PRERELEASE_ is "
"typically synonymous with the code freeze before a release. (For some "
"releases, the _-BETA_ label was used in the same way as _-PRERELEASE_.)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1857
+#: documentation/content/en/books/faq/_index.adoc:1832
msgid ""
"Long answer: FreeBSD derives its releases from one of two places. Major, "
"dot-zero, releases, such as 9.0-RELEASE are branched from the head of the "
"development stream, commonly referred to as <<current,-CURRENT>>. Minor "
"releases, such as 6.3-RELEASE or 5.2-RELEASE, have been snapshots of the "
"active <<stable,-STABLE>> branch. Starting with 4.3-RELEASE, each release "
"also now has its own branch which can be tracked by people requiring an "
"extremely conservative rate of development (typically only security "
"advisories)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1866
+#: documentation/content/en/books/faq/_index.adoc:1841
msgid ""
"When a release is about to be made, the branch from which it will be derived "
"from has to undergo a certain process. Part of this process is a code "
"freeze. When a code freeze is initiated, the name of the branch is changed "
"to reflect that it is about to become a release. For example, if the branch "
"used to be called 6.2-STABLE, its name will be changed to 6.3-PRERELEASE to "
"signify the code freeze and signify that extra pre-release testing should be "
"happening. Bug fixes can still be committed to be part of the release. "
"When the source code is in shape for the release the name will be changed to "
"6.3-RC to signify that a release is about to be made from it. Once in the "
"RC stage, only the most critical bugs found can be fixed. Once the release "
"(6.3-RELEASE in this example) and release branch have been made, the branch "
"will be renamed to 6.3-STABLE."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1868
+#: documentation/content/en/books/faq/_index.adoc:1843
msgid ""
"For more information on version numbers and the various Subversion branches, "
"refer to the extref:{releng}[Release Engineering] article."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1870
+#: documentation/content/en/books/faq/_index.adoc:1845
#, no-wrap
msgid "I tried to install a new kernel, and the man:chflags[1] failed. How do I get around this?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1874
+#: documentation/content/en/books/faq/_index.adoc:1849
msgid ""
"Short answer: the security level is greater than 0. Reboot directly to "
"single-user mode to install the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1877
+#: documentation/content/en/books/faq/_index.adoc:1852
msgid ""
"Long answer: FreeBSD disallows changing system flags at security levels "
"greater than 0. To check the current security level:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1881
-#: documentation/content/en/books/faq/_index.adoc:1898
+#: documentation/content/en/books/faq/_index.adoc:1856
+#: documentation/content/en/books/faq/_index.adoc:1873
#, no-wrap
msgid "# sysctl kern.securelevel\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1885
+#: documentation/content/en/books/faq/_index.adoc:1860
msgid ""
"The security level cannot be lowered in multi-user mode, so boot to single-"
"user mode to install the kernel, or change the security level in [."
"filename]#/etc/rc.conf# then reboot. See the man:init[8] manual page for "
"details on `securelevel`, and see [.filename]#/etc/defaults/rc.conf# and the "
"man:rc.conf[5] manual page for more information on [.filename]#rc.conf#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1887
+#: documentation/content/en/books/faq/_index.adoc:1862
#, no-wrap
msgid "I cannot change the time on my system by more than one second! How do I get around this?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1891
+#: documentation/content/en/books/faq/_index.adoc:1866
msgid ""
"Short answer: the system is at a security level greater than 1. Reboot "
"directly to single-user mode to change the date."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1894
+#: documentation/content/en/books/faq/_index.adoc:1869
msgid ""
"Long answer: FreeBSD disallows changing the time by more that one second at "
"security levels greater than 1. To check the security level:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1903
+#: documentation/content/en/books/faq/_index.adoc:1878
msgid ""
"The security level cannot be lowered in multi-user mode. Either boot to "
"single-user mode to change the date or change the security level in [."
"filename]#/etc/rc.conf# and reboot. See the man:init[8] manual page for "
"details on `securelevel`, and see [.filename]#/etc/defaults/rc.conf# and the "
"man:rc.conf[5] manual page for more information on [.filename]#rc.conf#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1905
+#: documentation/content/en/books/faq/_index.adoc:1880
#, no-wrap
msgid "Why is rpc.statd using 256 MB of memory?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1910
+#: documentation/content/en/books/faq/_index.adoc:1885
msgid ""
"No, there is no memory leak, and it is not using 256 MB of memory. For "
"convenience, `rpc.statd` maps a large amount of memory into its address "
"space. There is nothing terribly wrong with this from a technical "
"standpoint; it just throws off things like man:top[1] and man:ps[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1913
+#: documentation/content/en/books/faq/_index.adoc:1887
msgid ""
"man:rpc.statd[8] maps its status file ([.filename]#/var/db/statd.status#) "
"into its address space; to save worrying about remapping the status file "
"later when it needs to grow, it maps the status file with a generous size."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1915
+#: documentation/content/en/books/faq/_index.adoc:1889
#, no-wrap
msgid "Why can I not unset the schg file flag?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1920
+#: documentation/content/en/books/faq/_index.adoc:1894
msgid ""
"The system is running at securelevel greater than 0. Lower the securelevel "
"and try again. For more information, see <<securelevel,the FAQ entry on "
"securelevel>> and the man:init[8] manual page."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1922
+#: documentation/content/en/books/faq/_index.adoc:1896
#, no-wrap
msgid "What is vnlru?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1926
+#: documentation/content/en/books/faq/_index.adoc:1900
msgid ""
"`vnlru` flushes and frees vnodes when the system hits the `kern.maxvnodes` "
"limit. This kernel thread sits mostly idle, and only activates when there "
"is a huge amount of RAM and users are accessing tens of thousands of tiny "
"files."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1928
+#: documentation/content/en/books/faq/_index.adoc:1902
#, no-wrap
msgid "What do the various memory states displayed by top mean?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1931
+#: documentation/content/en/books/faq/_index.adoc:1905
msgid "`Active`: pages recently statistically used."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1932
+#: documentation/content/en/books/faq/_index.adoc:1906
msgid "`Inactive`: pages recently statistically unused."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1933
+#: documentation/content/en/books/faq/_index.adoc:1907
msgid ""
"`Laundry`: pages recently statistically unused but known to be dirty, that "
"is, whose contents needs to be paged out before they can be reused."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1934
+#: documentation/content/en/books/faq/_index.adoc:1908
msgid "`Free`: pages without data content, which can be immediately reused."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1935
+#: documentation/content/en/books/faq/_index.adoc:1909
msgid ""
"`Wired`: pages that are fixed into memory, usually for kernel purposes, but "
"also sometimes for special use in processes."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1943
+#: documentation/content/en/books/faq/_index.adoc:1914
msgid ""
"Pages are most often written to disk (sort of a VM sync) when they are in "
"the laundry state, but active or inactive pages can also be synced. This "
"depends upon the CPU tracking of the modified bit being available, and in "
"certain situations there can be an advantage for a block of VM pages to be "
"synced, regardless of the queue they belong to. In most common cases, it is "
"best to think of the laundry queue as a queue of relatively unused pages "
"that might or might not be in the process of being written to disk. The "
"inactive queue contains a mix of clean and dirty pages; clean pages near the "
"head of the queue are reclaimed immediately to alleviate a free page "
"shortage, and dirty pages are moved to the laundry queue for deferred "
"processing."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1945
+#: documentation/content/en/books/faq/_index.adoc:1916
msgid ""
"There are some other flags (e.g., busy flag or busy count) that might modify "
"some of the described rules."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1947
+#: documentation/content/en/books/faq/_index.adoc:1918
#, no-wrap
msgid "How much free memory is available?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1957
+#: documentation/content/en/books/faq/_index.adoc:1926
msgid ""
"There are a couple of kinds of \"free memory\". The most common is the "
"amount of memory immediately available without reclaiming memory already in "
"use. That is the size of the free pages queue plus some other reserved "
"pages. This amount is exported by the `vm.stats.vm.v_free_count` man:"
-"sysctl[8], shown, for instance, by man:top[1]. Another kind of \"free memory"
-"\" is the total amount of virtual memory available to userland processes, "
-"which depends on the sum of swap space and usable memory. Other kinds of "
-"\"free memory\" descriptions are also possible, but it is relatively useless "
-"to define these, but rather it is important to make sure that the paging "
-"rate is kept low, and to avoid running out of swap space."
+"sysctl[8], shown, for instance, by man:top[1]. Another kind of \"free "
+"memory\" is the total amount of virtual memory available to userland "
+"processes, which depends on the sum of swap space and usable memory. Other "
+"kinds of \"free memory\" descriptions are also possible, but it is "
+"relatively useless to define these, but rather it is important to make sure "
+"that the paging rate is kept low, and to avoid running out of swap space."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1959
+#: documentation/content/en/books/faq/_index.adoc:1928
#, no-wrap
msgid "What is [.filename]#/var/empty#?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1964
+#: documentation/content/en/books/faq/_index.adoc:1933
msgid ""
"[.filename]#/var/empty# is a directory that the man:sshd[8] program uses "
"when performing privilege separation. The [.filename]#/var/empty# directory "
"is empty, owned by `root` and has the `schg` flag set. This directory "
"should not be deleted."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1966
+#: documentation/content/en/books/faq/_index.adoc:1935
#, no-wrap
msgid "I just changed [.filename]#/etc/newsyslog.conf#. How can I check if it does what I expect?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1969
+#: documentation/content/en/books/faq/_index.adoc:1938
msgid "To see what man:newsyslog[8] will do, use the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:1973
+#: documentation/content/en/books/faq/_index.adoc:1942
#, no-wrap
msgid "% newsyslog -nrvv\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1976
+#: documentation/content/en/books/faq/_index.adoc:1945
#, no-wrap
msgid "My time is wrong, how can I change the timezone?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1979
+#: documentation/content/en/books/faq/_index.adoc:1948
msgid "Use man:tzsetup[8]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:1981
+#: documentation/content/en/books/faq/_index.adoc:1950
#, no-wrap
msgid "The X Window System and Virtual Consoles"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1984
+#: documentation/content/en/books/faq/_index.adoc:1953
#, no-wrap
msgid "What is the X Window System?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1988
+#: documentation/content/en/books/faq/_index.adoc:1957
msgid ""
"The X Window System (commonly `X11`) is the most widely available windowing "
"system capable of running on UNIX(R) or UNIX(R) like systems, including "
"FreeBSD. http://www.x.org/wiki/[The X.Org Foundation] administers the "
"http://en.wikipedia.org/wiki/X_Window_System_core_protocol[X protocol "
"standards], with the current reference implementation, version 11 release "
"7.7, so references are often shortened to `X11`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1991
+#: documentation/content/en/books/faq/_index.adoc:1960
msgid ""
"Many implementations are available for different architectures and operating "
"systems. An implementation of the server-side code is properly known as an "
"`X server`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:1993
+#: documentation/content/en/books/faq/_index.adoc:1962
#, no-wrap
msgid "I want to run Xorg, how do I go about it?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1996
+#: documentation/content/en/books/faq/_index.adoc:1965
msgid "To install Xorg do one of the following:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:1998
+#: documentation/content/en/books/faq/_index.adoc:1967
msgid ""
"Use the package:x11/xorg[] meta-port, which builds and installs every Xorg "
"component."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2000
+#: documentation/content/en/books/faq/_index.adoc:1969
msgid ""
"Use package:x11/xorg-minimal[], which builds and installs only the necessary "
"Xorg components."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2002
+#: documentation/content/en/books/faq/_index.adoc:1971
msgid "Install Xorg from FreeBSD packages:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2006
+#: documentation/content/en/books/faq/_index.adoc:1975
#, no-wrap
msgid "# pkg install xorg\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2009
+#: documentation/content/en/books/faq/_index.adoc:1978
msgid ""
"After the installation of Xorg, follow the instructions from the extref:"
"{handbook}x11/[X11 Configuration, x-config] section of the FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2011
+#: documentation/content/en/books/faq/_index.adoc:1980
#, no-wrap
-msgid "I tried to run X, but I get a No devices detected. error when I type startx. What do I do now?"
+msgid "I tried to run X, but I get a 'No devices detected' error when I type startx. What do I do now?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2016
+#: documentation/content/en/books/faq/_index.adoc:1985
msgid ""
"The system is probably running at a raised `securelevel`. It is not "
"possible to start X at a raised `securelevel` because X requires write "
"access to man:io[4]. For more information, see at the man:init[8] manual "
"page."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2019
+#: documentation/content/en/books/faq/_index.adoc:1987
msgid ""
"There are two solutions to the problem: set the `securelevel` back down to "
"zero or run man:xdm[8] (or an alternative display manager) at boot time "
"before the `securelevel` is raised."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2021
+#: documentation/content/en/books/faq/_index.adoc:1989
msgid ""
"See <<xdm-boot>> for more information about running man:xdm[8] at boot time."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2023
+#: documentation/content/en/books/faq/_index.adoc:1991
#, no-wrap
msgid "Why does my mouse not work with X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2029
+#: documentation/content/en/books/faq/_index.adoc:1997
msgid ""
"When using man:vt[4], the default console driver, FreeBSD can be configured "
"to support a mouse pointer on each virtual screen. To avoid conflicting "
"with X, man:vt[4] supports a virtual device called [.filename]#/dev/"
"sysmouse#. All mouse events received from the real mouse device are written "
"to the man:sysmouse[4] device via man:moused[8]. To use the mouse on one or "
"more virtual consoles, _and_ use X, see <<moused>> and set up man:moused[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2031
+#: documentation/content/en/books/faq/_index.adoc:1999
msgid ""
"Then edit [.filename]#/etc/X11/xorg.conf# and make sure the following lines "
"exist:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2038
+#: documentation/content/en/books/faq/_index.adoc:2006
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
" Option \"Protocol\" \"SysMouse\"\n"
" Option \"Device\" \"/dev/sysmouse\"\n"
".....\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2042
+#: documentation/content/en/books/faq/_index.adoc:2010
msgid ""
"Starting with Xorg version 7.4, the `InputDevice` sections in [."
"filename]#xorg.conf# are ignored in favor of autodetected devices. To "
"restore the old behavior, add the following line to the `ServerLayout` or "
"`ServerFlags` section:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2046
+#: documentation/content/en/books/faq/_index.adoc:2014
#, no-wrap
msgid "Option \"AutoAddDevices\" \"false\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2050
+#: documentation/content/en/books/faq/_index.adoc:2018
msgid ""
"Some people prefer to use [.filename]#/dev/mouse# under X. To make this "
"work, [.filename]#/dev/mouse# should be linked to [.filename]#/dev/sysmouse# "
"(see man:sysmouse[4]) by adding the following line to [.filename]#/etc/devfs."
"conf# (see man:devfs.conf[5]):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2054
+#: documentation/content/en/books/faq/_index.adoc:2022
#, no-wrap
msgid "link sysmouse mouse\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2057
+#: documentation/content/en/books/faq/_index.adoc:2025
msgid ""
"This link can be created by restarting man:devfs[5] with the following "
"command (as `root`):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2061
+#: documentation/content/en/books/faq/_index.adoc:2029
#, no-wrap
msgid "# service devfs restart\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2064
+#: documentation/content/en/books/faq/_index.adoc:2032
#, no-wrap
msgid "My mouse has a fancy wheel. Can I use it in X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2068
+#: documentation/content/en/books/faq/_index.adoc:2036
msgid ""
"Yes, if X is configured for a 5 button mouse. To do this, add the lines "
"`Buttons 5` and `ZAxisMapping 4 5` to the \"InputDevice\" section of [."
"filename]#/etc/X11/xorg.conf#, as seen in this example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2079
+#: documentation/content/en/books/faq/_index.adoc:2047
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
" Identifier \"Mouse1\"\n"
" Driver \"mouse\"\n"
" Option \"Protocol\" \"auto\"\n"
" Option \"Device\" \"/dev/sysmouse\"\n"
" Option \"Buttons\" \"5\"\n"
" Option \"ZAxisMapping\" \"4 5\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2082
+#: documentation/content/en/books/faq/_index.adoc:2050
msgid ""
"The mouse can be enabled in Emacs by adding these lines to [.filename]#~/."
"emacs#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2088
+#: documentation/content/en/books/faq/_index.adoc:2056
#, no-wrap
msgid ""
";; wheel mouse\n"
"(global-set-key [mouse-4] 'scroll-down)\n"
"(global-set-key [mouse-5] 'scroll-up)\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2091
+#: documentation/content/en/books/faq/_index.adoc:2059
#, no-wrap
msgid "My laptop has a Synaptics touchpad. Can I use it in X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2094
+#: documentation/content/en/books/faq/_index.adoc:2062
msgid "Yes, after configuring a few things to make it work."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2096
+#: documentation/content/en/books/faq/_index.adoc:2064
msgid ""
"In order to use the Xorg synaptics driver, first remove `moused_enable` from "
"[.filename]#rc.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2098
+#: documentation/content/en/books/faq/_index.adoc:2066
msgid ""
"To enable synaptics, add the following line to [.filename]#/boot/loader."
"conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2102
+#: documentation/content/en/books/faq/_index.adoc:2070
#, no-wrap
msgid "hw.psm.synaptics_support=\"1\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2105
+#: documentation/content/en/books/faq/_index.adoc:2073
msgid "Add the following to [.filename]#/etc/X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2114
+#: documentation/content/en/books/faq/_index.adoc:2082
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
"Identifier \"Touchpad0\"\n"
"Driver \"synaptics\"\n"
"Option \"Protocol\" \"psm\"\n"
"Option \"Device\" \"/dev/psm0\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2117
-msgid "And be sure to add the following into the \"ServerLayout\" section:"
+#: documentation/content/en/books/faq/_index.adoc:2085
+msgid "Add the following into the \"ServerLayout\" section:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2121
+#: documentation/content/en/books/faq/_index.adoc:2089
#, no-wrap
msgid "InputDevice \"Touchpad0\" \"SendCoreEvents\"\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2124
+#: documentation/content/en/books/faq/_index.adoc:2092
#, no-wrap
msgid "How do I use remote X displays?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2127
+#: documentation/content/en/books/faq/_index.adoc:2095
msgid ""
"For security reasons, the default setting is to not allow a machine to "
"remotely open a window."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2129
+#: documentation/content/en/books/faq/_index.adoc:2097
msgid ""
"To enable this feature, start X with the optional `-listen_tcp` argument:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2133
+#: documentation/content/en/books/faq/_index.adoc:2101
#, no-wrap
msgid "% startx -listen_tcp\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2136
+#: documentation/content/en/books/faq/_index.adoc:2104
#, no-wrap
msgid "What is a virtual console and how do I make more?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2139
+#: documentation/content/en/books/faq/_index.adoc:2107
msgid ""
"Virtual consoles provide several simultaneous sessions on the same machine "
"without doing anything complicated like setting up a network or running X."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2142
+#: documentation/content/en/books/faq/_index.adoc:2110
msgid ""
"When the system starts, it will display a login prompt on the monitor after "
"displaying all the boot messages. Type in your login name and password to "
"start working on the first virtual console."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2146
+#: documentation/content/en/books/faq/_index.adoc:2114
msgid ""
"To start another session, perhaps to look at documentation for a program or "
"to read mail while waiting for an FTP transfer to finish, hold down kbd:"
"[Alt] and press kbd:[F2]. This will display the login prompt for the second "
"virtual console. To go back to the original session, press kbd:[Alt+F1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2149
+#: documentation/content/en/books/faq/_index.adoc:2117
msgid ""
"The default FreeBSD installation has eight virtual consoles enabled. kbd:"
"[Alt+F1], kbd:[Alt+F2], kbd:[Alt+F3], and so on will switch between these "
"virtual consoles."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2151
+#: documentation/content/en/books/faq/_index.adoc:2119
msgid ""
"To enable more of virtual consoles, edit [.filename]#/etc/ttys# (see man:"
"ttys[5]) and add entries for [.filename]#ttyv8# to [.filename]#ttyvc#, after "
"the comment on \"Virtual terminals\":"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2160
+#: documentation/content/en/books/faq/_index.adoc:2128
#, no-wrap
msgid ""
"# Edit the existing entry for ttyv8 in /etc/ttys and change\n"
"# \"off\" to \"on\".\n"
"ttyv8 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv9 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyva \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyvb \"/usr/libexec/getty Pc\" xterm on secure\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2165
+#: documentation/content/en/books/faq/_index.adoc:2133
msgid ""
"The more virtual terminals, the more resources that are used. This can be "
"problematic on systems with 8 MB RAM or less. Consider changing `secure` to "
"`insecure`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2170
+#: documentation/content/en/books/faq/_index.adoc:2138
msgid ""
"In order to run an X server, at least one virtual terminal must be left to "
"`off` for it to use. This means that only eleven of the Alt-function keys "
"can be used as virtual consoles so that one is left for the X server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2173
+#: documentation/content/en/books/faq/_index.adoc:2141
msgid ""
"For example, to run X and eleven virtual consoles, the setting for virtual "
"terminal 12 should be:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2177
+#: documentation/content/en/books/faq/_index.adoc:2145
#, no-wrap
msgid "ttyvb \"/usr/libexec/getty Pc\" xterm off secure\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2180
+#: documentation/content/en/books/faq/_index.adoc:2148
msgid "The easiest way to activate the virtual consoles is to reboot."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2182
+#: documentation/content/en/books/faq/_index.adoc:2150
#, no-wrap
msgid "How do I access the virtual consoles from X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2186
+#: documentation/content/en/books/faq/_index.adoc:2154
msgid ""
-"Use kbd:[Ctrl+Alt+Fn] to switch back to a virtual console. Press kbd:[Ctrl"
-"+Alt+F1] to return to the first virtual console."
+"Use kbd:[Ctrl+Alt+Fn] to switch back to a virtual console. Press kbd:"
+"[Ctrl+Alt+F1] to return to the first virtual console."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2188
+#: documentation/content/en/books/faq/_index.adoc:2156
msgid "Once at a text console, use kbd:[Alt+Fn] to move between them."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2194
+#: documentation/content/en/books/faq/_index.adoc:2160
msgid ""
"To return to the X session, switch to the virtual console running X. If X "
"was started from the command line using `startx`, the X session will attach "
"to the next unused virtual console, not the text console from which it was "
"invoked. For eight active virtual terminals, X will run on the ninth, so "
"use kbd:[Alt+F9]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2196
+#: documentation/content/en/books/faq/_index.adoc:2162
#, no-wrap
msgid "How do I start XDM on boot?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2202
+#: documentation/content/en/books/faq/_index.adoc:2168
msgid ""
"There are two schools of thought on how to start man:xdm[8]. One school "
"starts `xdm` from [.filename]#/etc/ttys# (see man:ttys[5]) using the "
"supplied example, while the other sets `xdm_enable=yes` in [.filename]#/etc/"
"rc.conf#. Both are equally valid, and one may work in situations where the "
"other does not. In both cases the result is the same: X will pop up a "
"graphical login prompt."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2205
+#: documentation/content/en/books/faq/_index.adoc:2171
msgid ""
"The man:ttys[5] method has the advantage of documenting which vty X will "
"start on and passing the responsibility of restarting the X server on logout "
"to man:init[8]. The man:rc[8] method makes it easy to `kill xdm` if there "
"is a problem starting the X server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2207
+#: documentation/content/en/books/faq/_index.adoc:2173
msgid ""
"When using the man:rc[8] method, `xdm_tty` (default `ttyv8`) can be set in [."
"filename]#/etc/rc.conf# to choose which vty man:xdm[8] opens on."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2209
+#: documentation/content/en/books/faq/_index.adoc:2175
#, no-wrap
msgid "Why do I get Couldn't open console when I run xconsole?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2212
+#: documentation/content/en/books/faq/_index.adoc:2178
msgid ""
"When X is started with `startx`, the permissions on [.filename]#/dev/"
"console# will _not_ get changed, resulting in things like `xterm -C` and "
"`xconsole` not working."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2216
+#: documentation/content/en/books/faq/_index.adoc:2182
msgid ""
"This is because of the way console permissions are set by default. On a "
"multi-user system, one does not necessarily want just any user to be able to "
"write on the system console. For users who are logging directly onto a "
"machine with a VTY, the man:fbtab[5] file exists to solve such problems."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2218
+#: documentation/content/en/books/faq/_index.adoc:2184
msgid ""
"In a nutshell, make sure an uncommented line of the form is in [.filename]#/"
"etc/fbtab# (see man:fbtab[5]):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2222
+#: documentation/content/en/books/faq/_index.adoc:2188
#, no-wrap
msgid "/dev/ttyv0 0600 /dev/console\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2225
+#: documentation/content/en/books/faq/_index.adoc:2191
msgid ""
"It will ensure that whomever logs in on [.filename]#/dev/ttyv0# will own the "
"console."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2227
+#: documentation/content/en/books/faq/_index.adoc:2193
#, no-wrap
msgid "Why does my PS/2 mouse misbehave under X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2231
+#: documentation/content/en/books/faq/_index.adoc:2197
msgid ""
"The mouse and the mouse driver may have become out of synchronization. In "
"rare cases, the driver may also erroneously report synchronization errors:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2235
+#: documentation/content/en/books/faq/_index.adoc:2201
#, no-wrap
msgid "psmintr: out of sync (xxxx != yyyy)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2239
+#: documentation/content/en/books/faq/_index.adoc:2205
msgid ""
"If this happens, disable the synchronization check code by setting the "
"driver flags for the PS/2 mouse driver to `0x100`. This can be easiest "
"achieved by adding `hint.psm.0.flags=\"0x100\"` to [.filename]#/boot/loader."
"conf# and rebooting."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2241
+#: documentation/content/en/books/faq/_index.adoc:2207
#, no-wrap
msgid "How do I reverse the mouse buttons?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2245
+#: documentation/content/en/books/faq/_index.adoc:2211
msgid ""
"Type `xmodmap -e \"pointer = 3 2 1\"`. Add this command to [.filename]#~/."
"xinitrc# or [.filename]#~/.xsession# to make it happen automatically."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2247
+#: documentation/content/en/books/faq/_index.adoc:2213
#, no-wrap
msgid "How do I install a splash screen and where do I find them?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2250
+#: documentation/content/en/books/faq/_index.adoc:2216
msgid ""
"The detailed answer for this question can be found in the extref:{handbook}"
"[Boot Time Splash Screens, boot-splash] section of the FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2252
+#: documentation/content/en/books/faq/_index.adoc:2218
#, no-wrap
msgid "Can I use the kbd:[Windows] keys on my keyboard in X?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2255
+#: documentation/content/en/books/faq/_index.adoc:2222
msgid ""
-"Yes. Use man:xmodmap[1] to define which functions the keys should perform."
+"Yes. Use man:xmodmap[1] to define which functions the keys should perform."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2257
+#: documentation/content/en/books/faq/_index.adoc:2224
msgid ""
"Assuming all Windows keyboards are standard, the keycodes for these three "
"keys are the following:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2259
+#: documentation/content/en/books/faq/_index.adoc:2226
msgid ""
"115 - kbd:[Windows] key, between the left-hand kbd:[Ctrl] and kbd:[Alt] keys"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2260
+#: documentation/content/en/books/faq/_index.adoc:2227
msgid "116 - kbd:[Windows] key, to the right of kbd:[AltGr]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2261
+#: documentation/content/en/books/faq/_index.adoc:2228
msgid "117 - kbd:[Menu], to the left of the right-hand kbd:[Ctrl]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2263
+#: documentation/content/en/books/faq/_index.adoc:2230
msgid "To have the left kbd:[Windows] key print a comma, try this."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2267
+#: documentation/content/en/books/faq/_index.adoc:2234
#, no-wrap
msgid "# xmodmap -e \"keycode 115 = comma\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2273
+#: documentation/content/en/books/faq/_index.adoc:2237
msgid ""
"To have the kbd:[Windows] key-mappings enabled automatically every time X is "
"started, either put the `xmodmap` commands in [.filename]#~/.xinitrc# or, "
"preferably, create a [.filename]#~/.xmodmaprc# and include the `xmodmap` "
"options, one per line, then add the following line to [.filename]#~/."
"xinitrc#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2277
+#: documentation/content/en/books/faq/_index.adoc:2241
#, no-wrap
msgid "xmodmap $HOME/.xmodmaprc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2281
+#: documentation/content/en/books/faq/_index.adoc:2245
msgid ""
"For example, to map the 3 keys to be kbd:[F13], kbd:[F14], and kbd:[F15], "
"respectively. This would make it easy to map them to useful functions "
"within applications or the window manager."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2283
+#: documentation/content/en/books/faq/_index.adoc:2247
msgid "To do this, put the following in [.filename]#~/.xmodmaprc#."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2289
+#: documentation/content/en/books/faq/_index.adoc:2253
#, no-wrap
msgid ""
"keycode 115 = F13\n"
"keycode 116 = F14\n"
"keycode 117 = F15\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2296
+#: documentation/content/en/books/faq/_index.adoc:2256
msgid ""
"For the package:x11-wm/fvwm2[] desktop manager, one could map the keys so "
"that kbd:[F13] iconifies or de-iconifies the window the cursor is in, kbd:"
"[F14] brings the window the cursor is in to the front or, if it is already "
"at the front, pushes it to the back, and kbd:[F15] pops up the main "
"Workplace menu even if the cursor is not on the desktop, which is useful "
"when no part of the desktop is visible."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2298
+#: documentation/content/en/books/faq/_index.adoc:2258
msgid ""
"The following entries in [.filename]#~/.fvwmrc# implement the aforementioned "
"setup:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2304
+#: documentation/content/en/books/faq/_index.adoc:2264
#, no-wrap
msgid ""
"Key F13 FTIWS A Iconify\n"
"Key F14 FTIWS A RaiseLower\n"
"Key F15 A A Menu Workplace Nop\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2307
+#: documentation/content/en/books/faq/_index.adoc:2267
#, no-wrap
msgid "How can I get 3D hardware acceleration for OpenGL(R)?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2311
+#: documentation/content/en/books/faq/_index.adoc:2271
msgid ""
"The availability of 3D acceleration depends on the version of Xorg and the "
"type of video chip. For an nVidia chip, use the binary drivers provided for "
"FreeBSD by installing one of the following ports:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2313
+#: documentation/content/en/books/faq/_index.adoc:2273
msgid ""
"The latest versions of nVidia cards are supported by the package:x11/nvidia-"
"driver[] port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2315
+#: documentation/content/en/books/faq/_index.adoc:2275
msgid "Older drivers are available as:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2317
+#: documentation/content/en/books/faq/_index.adoc:2277
msgid "package:x11/nvidia-driver-390[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2318
+#: documentation/content/en/books/faq/_index.adoc:2278
msgid "package:x11/nvidia-driver-340[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2319
+#: documentation/content/en/books/faq/_index.adoc:2279
msgid "package:x11/nvidia-driver-304[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2321
+#: documentation/content/en/books/faq/_index.adoc:2281
msgid ""
"nVidia provides detailed information on which card is supported by which "
"driver on their web site: http://www.nvidia.com/object/IO_32667.html[http://"
"www.nvidia.com/object/IO_32667.html]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2323
+#: documentation/content/en/books/faq/_index.adoc:2283
msgid ""
"For Matrox G200/G400, check the package:x11-drivers/xf86-video-mga[] port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2325
+#: documentation/content/en/books/faq/_index.adoc:2285
msgid ""
"For ATI Rage 128 and Radeon see man:ati[4], man:r128[4] and man:radeon[4]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:2327
+#: documentation/content/en/books/faq/_index.adoc:2287
#, no-wrap
msgid "Networking"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2330
+#: documentation/content/en/books/faq/_index.adoc:2290
#, no-wrap
msgid "Where can I get information on diskless booting?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2334
+#: documentation/content/en/books/faq/_index.adoc:2294
msgid ""
"\"Diskless booting\" means that the FreeBSD box is booted over a network, "
"and reads the necessary files from a server instead of its hard disk. For "
"full details, see extref:{handbook}advanced-networking/[the Handbook entry "
"on diskless booting, network-diskless]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2336
+#: documentation/content/en/books/faq/_index.adoc:2296
#, no-wrap
msgid "Can a FreeBSD box be used as a dedicated network router?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2340
+#: documentation/content/en/books/faq/_index.adoc:2301
msgid ""
-"Yes. Refer to the Handbook entry on extref:{handbook}advanced-networking/"
+"Yes. Refer to the Handbook entry on extref:{handbook}advanced-networking/"
"[advanced networking, advanced-networking], specifically the section on "
"extref:{handbook}advanced-networking/[routing and gateways, network-routing]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2342
+#: documentation/content/en/books/faq/_index.adoc:2303
#, no-wrap
msgid "Does FreeBSD support NAT or Masquerading?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2346
+#: documentation/content/en/books/faq/_index.adoc:2308
msgid ""
-"Yes. For instructions on how to use NAT over a PPP connection, see the "
+"Yes. For instructions on how to use NAT over a PPP connection, see the "
"extref:{handbook}ppp-and-slip/[Handbook entry on PPP, userppp]. To use NAT "
"over some other sort of network connection, look at the extref:{handbook}"
"[natd, network-natd] section of the Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2348
+#: documentation/content/en/books/faq/_index.adoc:2310
#, no-wrap
msgid "How can I set up Ethernet aliases?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2351
+#: documentation/content/en/books/faq/_index.adoc:2313
msgid ""
"If the alias is on the same subnet as an address already configured on the "
"interface, add `netmask 0xffffffff` to this command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2355
+#: documentation/content/en/books/faq/_index.adoc:2317
#, no-wrap
msgid "# ifconfig ed0 alias 192.0.2.2 netmask 0xffffffff\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2358
+#: documentation/content/en/books/faq/_index.adoc:2320
msgid "Otherwise, specify the network address and netmask as usual:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2362
+#: documentation/content/en/books/faq/_index.adoc:2324
#, no-wrap
msgid "# ifconfig ed0 alias 172.16.141.5 netmask 0xffffff00\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2365
+#: documentation/content/en/books/faq/_index.adoc:2327
msgid ""
"More information can be found in the FreeBSD extref:{handbook}config/"
"[Handbook, configtuning-virtual-hosts]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2367
+#: documentation/content/en/books/faq/_index.adoc:2329
#, no-wrap
msgid "Why can I not NFS-mount from a Linux(R) box?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2370
+#: documentation/content/en/books/faq/_index.adoc:2332
msgid ""
"Some versions of the Linux(R) NFS code only accept mount requests from a "
"privileged port; try to issue the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2374
+#: documentation/content/en/books/faq/_index.adoc:2336
#, no-wrap
msgid "# mount -o -P linuxbox:/blah /mnt\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2377
+#: documentation/content/en/books/faq/_index.adoc:2339
#, no-wrap
msgid "Why does mountd keep telling me it can't change attributes and that I have a bad exports list on my FreeBSD NFS server?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2382
+#: documentation/content/en/books/faq/_index.adoc:2343
msgid ""
"The most frequent problem is not understanding the correct format of [."
"filename]#/etc/exports#. Review man:exports[5] and the extref:{handbook}"
"network-servers/[NFS, network-nfs] entry in the Handbook, especially the "
"section on extref:{handbook}[configuring NFS, configuring-nfs]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2384
+#: documentation/content/en/books/faq/_index.adoc:2345
#, no-wrap
msgid "How do I enable IP multicast support?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2387
+#: documentation/content/en/books/faq/_index.adoc:2348
msgid ""
-"Install the package:net/mrouted[] package or port and add `mrouted_enable="
-"\"YES\"` to [.filename]#/etc/rc.conf# start this service at boot time."
+"Install the package:net/mrouted[] package or port and add "
+"`mrouted_enable=\"YES\"` to [.filename]#/etc/rc.conf# start this service at "
+"boot time."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2389
+#: documentation/content/en/books/faq/_index.adoc:2350
#, no-wrap
msgid "Why do I have to use the FQDN for hosts on my site?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2392
+#: documentation/content/en/books/faq/_index.adoc:2353
msgid ""
"See the answer in the FreeBSD extref:{handbook}mail/[Handbook, mail-trouble]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2394
+#: documentation/content/en/books/faq/_index.adoc:2355
#, no-wrap
msgid "Why do I get an error, Permission denied, for all networking operations?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2398
+#: documentation/content/en/books/faq/_index.adoc:2358
msgid ""
"If the kernel is compiled with the `IPFIREWALL` option, be aware that the "
"default policy is to deny all packets that are not explicitly allowed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2400
+#: documentation/content/en/books/faq/_index.adoc:2360
msgid ""
"If the firewall is unintentionally misconfigured, restore network "
"operability by typing the following as `root`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2404
+#: documentation/content/en/books/faq/_index.adoc:2364
#, no-wrap
msgid "# ipfw add 65534 allow all from any to any\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2407
+#: documentation/content/en/books/faq/_index.adoc:2367
msgid "Consider setting `firewall_type=\"open\"` in [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2409
+#: documentation/content/en/books/faq/_index.adoc:2369
msgid ""
"For further information on configuring this firewall, see the extref:"
"{handbook}firewalls/[Handbook chapter, firewalls-ipfw]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2411
+#: documentation/content/en/books/faq/_index.adoc:2371
#, no-wrap
msgid "Why is my `ipfw` “fwd” rule to redirect a service to another machine not working?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2415
+#: documentation/content/en/books/faq/_index.adoc:2376
msgid ""
"Possibly because network address translation (NAT) is needed instead of just "
"forwarding packets. A \"fwd\" rule only forwards packets, it does not "
-"actually change the data inside the packet. Consider this rule:"
+"actually change the data inside the packet. Consider this rule:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2419
+#: documentation/content/en/books/faq/_index.adoc:2380
#, no-wrap
msgid "01000 fwd 10.0.0.1 from any to foo 21\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2427
+#: documentation/content/en/books/faq/_index.adoc:2387
msgid ""
"When a packet with a destination address of _foo_ arrives at the machine "
"with this rule, the packet is forwarded to _10.0.0.1_, but it still has the "
"destination address of _foo_. The destination address of the packet is not "
"changed to _10.0.0.1_. Most machines would probably drop a packet that they "
"receive with a destination address that is not their own. Therefore, using "
"a \"fwd\" rule does not often work the way the user expects. This behavior "
"is a feature and not a bug."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2430
+#: documentation/content/en/books/faq/_index.adoc:2389
msgid ""
"See the <<service-redirect,FAQ about redirecting services>>, the man:natd[8] "
"manual, or one of the several port redirecting utilities in the link:https://"
"www.FreeBSD.org/ports/[Ports Collection] for a correct way to do this."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2432
+#: documentation/content/en/books/faq/_index.adoc:2391
#, no-wrap
msgid "How can I redirect service requests from one machine to another?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2436
+#: documentation/content/en/books/faq/_index.adoc:2395
msgid ""
"FTP and other service requests can be redirected with the package:sysutils/"
"socket[] package or port. Replace the entry for the service in [.filename]#/"
"etc/inetd.conf# to call `socket`, as seen in this example for ftpd:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2440
+#: documentation/content/en/books/faq/_index.adoc:2399
#, no-wrap
msgid "ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.example.com ftp\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2443
+#: documentation/content/en/books/faq/_index.adoc:2402
msgid ""
"where _ftp.example.com_ and _ftp_ are the host and port to redirect to, "
"respectively."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2445
+#: documentation/content/en/books/faq/_index.adoc:2404
#, no-wrap
msgid "Where can I get a bandwidth management tool?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2451
+#: documentation/content/en/books/faq/_index.adoc:2410
msgid ""
"There are three bandwidth management tools available for FreeBSD. man:"
"dummynet[4] is integrated into FreeBSD as part of man:ipfw[4]. http://www."
"sonycsl.co.jp/person/kjc/programs.html[ALTQ] has been integrated into "
"FreeBSD as part of man:pf[4]. Bandwidth Manager from http://www.etinc.com/"
"[Emerging Technologies] is a commercial product."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2453
+#: documentation/content/en/books/faq/_index.adoc:2412
#, no-wrap
msgid "Why do I get /dev/bpf0: device not configured?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2457
+#: documentation/content/en/books/faq/_index.adoc:2416
msgid ""
"The running application requires the Berkeley Packet Filter (man:bpf[4]), "
"but it was removed from a custom kernel. Add this to the kernel config file "
"and build a new kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2461
+#: documentation/content/en/books/faq/_index.adoc:2420
#, no-wrap
msgid "device bpf # Berkeley Packet Filter\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2464
+#: documentation/content/en/books/faq/_index.adoc:2423
#, no-wrap
msgid "How do I mount a disk from a Windows(R) machine that is on my network, like smbmount in Linux(R)?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2469
+#: documentation/content/en/books/faq/_index.adoc:2428
msgid ""
"Use the SMBFS toolset. It includes a set of kernel modifications and a set "
"of userland programs. The programs and information are available as man:"
"mount_smbfs[8] in the base system."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2471
+#: documentation/content/en/books/faq/_index.adoc:2430
#, no-wrap
msgid "What are these messages about: Limiting icmp/open port/closed port response in my log files?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2477
+#: documentation/content/en/books/faq/_index.adoc:2436
msgid ""
"This kernel message indicates that some activity is provoking it to send a "
"large amount of ICMP or TCP reset (RST) responses. ICMP responses are often "
"generated as a result of attempted connections to unused UDP ports. TCP "
"resets are generated as a result of attempted connections to unopened TCP "
"ports. Among others, these are the kinds of activities which may cause "
"these messages:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2479
+#: documentation/content/en/books/faq/_index.adoc:2438
msgid ""
"Brute-force denial of service (DoS) attacks (as opposed to single-packet "
"attacks which exploit a specific vulnerability)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2480
+#: documentation/content/en/books/faq/_index.adoc:2439
msgid ""
"Port scans which attempt to connect to a large number of ports (as opposed "
"to only trying a few well-known ports)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2483
+#: documentation/content/en/books/faq/_index.adoc:2443
msgid ""
"The first number in the message indicates how many packets the kernel would "
-"have sent if the limit was not in place, and the second indicates the limit. "
-"This limit is controlled using `net.inet.icmp.icmplim`. This example sets "
-"the limit to `300` packets per second:"
+"have sent if the limit was not in place, and the second indicates the "
+"limit. This limit is controlled using `net.inet.icmp.icmplim`. This "
+"example sets the limit to `300` packets per second:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2487
+#: documentation/content/en/books/faq/_index.adoc:2447
#, no-wrap
msgid "# sysctl net.inet.icmp.icmplim=300\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2490
+#: documentation/content/en/books/faq/_index.adoc:2450
msgid ""
"To disable these messages without disabling response limiting, use `net.inet."
"icmp.icmplim_output` to disable the output:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2494
+#: documentation/content/en/books/faq/_index.adoc:2454
#, no-wrap
msgid "# sysctl net.inet.icmp.icmplim_output=0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2498
+#: documentation/content/en/books/faq/_index.adoc:2458
msgid ""
"Finally, to disable response limiting completely, set `net.inet.icmp."
"icmplim` to `0`. Disabling response limiting is discouraged for the reasons "
"listed above."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2500
+#: documentation/content/en/books/faq/_index.adoc:2460
#, no-wrap
msgid "What are these arp: unknown hardware address format error messages?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2506
+#: documentation/content/en/books/faq/_index.adoc:2466
msgid ""
"This means that some device on the local Ethernet is using a MAC address in "
"a format that FreeBSD does not recognize. This is probably caused by "
"someone experimenting with an Ethernet card somewhere else on the network. "
"This is most commonly seen on cable modem networks. It is harmless, and "
"should not affect the performance of the FreeBSD system."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2508
+#: documentation/content/en/books/faq/_index.adoc:2468
#, no-wrap
msgid "Why do I keep seeing messages like: 192.168.0.10 is on fxp1 but got reply from 00:15:17:67:cf:82 on rl0, and how do I disable it?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2512
+#: documentation/content/en/books/faq/_index.adoc:2472
msgid ""
"A packet is coming from outside the network unexpectedly. To disable them, "
"set `net.link.ether.inet.log_arp_wrong_iface` to `0`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2514
+#: documentation/content/en/books/faq/_index.adoc:2474
#, no-wrap
msgid "How do I compile an IPv6 only kernel?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2517
+#: documentation/content/en/books/faq/_index.adoc:2477
msgid "Configure your kernel with these settings:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2525
+#: documentation/content/en/books/faq/_index.adoc:2485
#, no-wrap
msgid ""
"include GENERIC\n"
"ident GENERIC-IPV6ONLY\n"
"makeoptions MKMODULESENV+=\"WITHOUT_INET_SUPPORT=\"\n"
"nooptions INET\n"
"nodevice gre\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:2528
+#: documentation/content/en/books/faq/_index.adoc:2488
#, no-wrap
msgid "Security"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2531
+#: documentation/content/en/books/faq/_index.adoc:2491
#, no-wrap
msgid "What is a sandbox?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2535
+#: documentation/content/en/books/faq/_index.adoc:2495
msgid "\"Sandbox\" is a security term. It can mean two things:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2537
+#: documentation/content/en/books/faq/_index.adoc:2497
msgid ""
"A process which is placed inside a set of virtual walls that are designed to "
"prevent someone who breaks into the process from being able to break into "
"the wider system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2541
+#: documentation/content/en/books/faq/_index.adoc:2500
msgid ""
"The process is only able to run inside the walls. Since nothing the process "
"does in regards to executing code is supposed to be able to breach the "
"walls, a detailed audit of its code is not needed in order to be able to say "
"certain things about its security."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2544
+#: documentation/content/en/books/faq/_index.adoc:2503
msgid ""
"The walls might be a user ID, for example. This is the definition used in "
"the man:security[7] and man:named[8] man pages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2549
+#: documentation/content/en/books/faq/_index.adoc:2508
msgid ""
"Take the `ntalk` service, for example (see man:inetd[8]). This service used "
"to run as user ID `root`. Now it runs as user ID `tty`. The `tty` user is "
"a sandbox designed to make it more difficult for someone who has "
"successfully hacked into the system via `ntalk` from being able to hack "
"beyond that user ID."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2550
+#: documentation/content/en/books/faq/_index.adoc:2510
msgid ""
-"A process which is placed inside a simulation of the machine. It means that "
+"A process which is placed inside a simulation of the machine. It means that "
"someone who is able to break into the process may believe that he can break "
"into the wider machine but is, in fact, only breaking into a simulation of "
"that machine and not modifying any real data."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2552
+#: documentation/content/en/books/faq/_index.adoc:2512
msgid ""
"The most common way to accomplish this is to build a simulated environment "
"in a subdirectory and then run the processes in that directory chrooted so "
"that [.filename]#/# for that process is this directory, not the real [."
"filename]#/# of the system)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2555
+#: documentation/content/en/books/faq/_index.adoc:2515
msgid ""
"Another common use is to mount an underlying file system read-only and then "
"create a file system layer on top of it that gives a process a seemingly "
"writeable view into that file system. The process may believe it is able to "
"write to those files, but only the process sees the effects - other "
"processes in the system do not, necessarily."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2557
+#: documentation/content/en/books/faq/_index.adoc:2517
msgid ""
"An attempt is made to make this sort of sandbox so transparent that the user "
"(or hacker) does not realize that he is sitting in it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2560
+#: documentation/content/en/books/faq/_index.adoc:2520
msgid ""
"UNIX(R) implements two core sandboxes. One is at the process level, and one "
"is at the userid level."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2563
+#: documentation/content/en/books/faq/_index.adoc:2523
msgid ""
"Every UNIX(R) process is completely firewalled off from every other UNIX(R) "
"process. One process cannot modify the address space of another."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2567
+#: documentation/content/en/books/faq/_index.adoc:2527
msgid ""
"A UNIX(R) process is owned by a particular userid. If the user ID is not "
"the `root` user, it serves to firewall the process off from processes owned "
"by other users. The user ID is also used to firewall off on-disk data."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2569
+#: documentation/content/en/books/faq/_index.adoc:2529
#, no-wrap
msgid "What is securelevel?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2575
+#: documentation/content/en/books/faq/_index.adoc:2535
msgid ""
"`securelevel` is a security mechanism implemented in the kernel. When the "
"securelevel is positive, the kernel restricts certain tasks; not even the "
"superuser (`root`) is allowed to do them. The securelevel mechanism limits "
"the ability to:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2577
+#: documentation/content/en/books/faq/_index.adoc:2537
msgid "Unset certain file flags, such as `schg` (the system immutable flag)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2578
+#: documentation/content/en/books/faq/_index.adoc:2538
msgid ""
"Write to kernel memory via [.filename]#/dev/mem# and [.filename]#/dev/kmem#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2579
+#: documentation/content/en/books/faq/_index.adoc:2539
msgid "Load kernel modules."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2580
+#: documentation/content/en/books/faq/_index.adoc:2540
msgid "Alter firewall rules."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2582
+#: documentation/content/en/books/faq/_index.adoc:2542
msgid "To check the status of the securelevel on a running system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2586
+#: documentation/content/en/books/faq/_index.adoc:2546
#, no-wrap
msgid "# sysctl -n kern.securelevel\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2590
+#: documentation/content/en/books/faq/_index.adoc:2550
msgid ""
"The output contains the current value of the securelevel. If it is greater "
"than 0, at least some of the securelevel's protections are enabled."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2594
+#: documentation/content/en/books/faq/_index.adoc:2553
msgid ""
"The securelevel of a running system cannot be lowered as this would defeat "
"its purpose. If a task requires that the securelevel be non-positive, "
"change the `kern_securelevel` and `kern_securelevel_enable` variables in [."
"filename]#/etc/rc.conf# and reboot."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2596
+#: documentation/content/en/books/faq/_index.adoc:2555
msgid ""
"For more information on securelevel and the specific things all the levels "
"do, consult man:init[8]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2601
+#: documentation/content/en/books/faq/_index.adoc:2560
msgid ""
"Securelevel is not a silver bullet; it has many known deficiencies. More "
"often than not, it provides a false sense of security."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2606
+#: documentation/content/en/books/faq/_index.adoc:2564
msgid ""
"One of its biggest problems is that in order for it to be at all effective, "
"all files used in the boot process up until the securelevel is set must be "
"protected. If an attacker can get the system to execute their code prior to "
"the securelevel being set (which happens quite late in the boot process "
"since some things the system must do at start-up cannot be done at an "
"elevated securelevel), its protections are invalidated. While this task of "
"protecting all files used in the boot process is not technically impossible, "
"if it is achieved, system maintenance will become a nightmare since one "
"would have to take the system down, at least to single-user mode, to modify "
"a configuration file."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2610
+#: documentation/content/en/books/faq/_index.adoc:2568
msgid ""
"This point and others are often discussed on the mailing lists, particularly "
"the {freebsd-security}. Search the archives link:https://www.FreeBSD.org/"
"search/[here] for an extensive discussion. A more fine-grained mechanism is "
"preferred."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2613
+#: documentation/content/en/books/faq/_index.adoc:2571
#, no-wrap
msgid "What is this UID 0 toor account? Have I been compromised?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2621
+#: documentation/content/en/books/faq/_index.adoc:2578
msgid ""
"Do not worry. `toor` is an \"alternative\" superuser account, where toor is "
"root spelled backwards. It is intended to be used with a non-standard shell "
"so the default shell for `root` does not need to change. This is important "
"as shells which are not part of the base distribution, but are instead "
"installed from ports or packages, are installed in [.filename]#/usr/local/"
"bin# which, by default, resides on a different file system. If ``root``'s "
"shell is located in [.filename]#/usr/local/bin# and the file system "
"containing [.filename]#/usr/local/bin#) is not mounted, `root` will not be "
"able to log in to fix a problem and will have to reboot into single-user "
"mode in order to enter the path to a shell."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2626
+#: documentation/content/en/books/faq/_index.adoc:2581
msgid ""
"Some people use `toor` for day-to-day `root` tasks with a non-standard "
"shell, leaving `root`, with a standard shell, for single-user mode or "
"emergencies. By default, a user cannot log in using `toor` as it does not "
"have a password, so log in as `root` and set a password for `toor` before "
"using it to login."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:2628
+#: documentation/content/en/books/faq/_index.adoc:2583
#, no-wrap
msgid "Serial Communications"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2631
+#: documentation/content/en/books/faq/_index.adoc:2586
msgid ""
"This section answers common questions about serial communications with "
"FreeBSD."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2633
+#: documentation/content/en/books/faq/_index.adoc:2588
#, no-wrap
msgid "How do I get the boot: prompt to show on the serial console?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2636
+#: documentation/content/en/books/faq/_index.adoc:2591
msgid ""
"See extref:{handbook}serialcomms/[this section of the Handbook, "
"serialconsole-setup]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2638
+#: documentation/content/en/books/faq/_index.adoc:2593
#, no-wrap
msgid "How do I tell if FreeBSD found my serial ports or modem cards?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2642
+#: documentation/content/en/books/faq/_index.adoc:2597
msgid ""
"As the FreeBSD kernel boots, it will probe for the serial ports for which "
"the kernel is configured. Either watch the boot messages closely or run "
"this command after the system is up and running:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2649
+#: documentation/content/en/books/faq/_index.adoc:2604
#, no-wrap
msgid ""
"% grep -E '^(sio|uart)[0-9]' < /var/run/dmesg.boot\n"
"uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0\n"
"uart0: console (115200,n,8,1)\n"
"uart1: <16550 or compatible> port 0x2f8-2x3ff irq 3 on acpi0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2655
+#: documentation/content/en/books/faq/_index.adoc:2610
msgid ""
"This example shows two serial ports. The first is on IRQ4, port address "
"`0x3f8`, and has a 16550-type UART chip. The second uses the same kind of "
"chip but is on IRQ3 and is at port address `0x2f8`. Internal modem cards "
"are treated just like serial ports, except that they always have a modem "
"attached to the port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2658
+#: documentation/content/en/books/faq/_index.adoc:2613
msgid ""
"The [.filename]#GENERIC# kernel includes support for two serial ports using "
"the same IRQ and port address settings in the above example. If these "
"settings are not right for the system, or if there are more modem cards or "
"serial ports than the kernel is configured for, reconfigure using the "
"instructions in <<make-kernel,building a kernel>> for more details."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2660
+#: documentation/content/en/books/faq/_index.adoc:2615
#, no-wrap
msgid "How do I access the serial ports on FreeBSD? (x86-specific)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2664
+#: documentation/content/en/books/faq/_index.adoc:2619
msgid ""
"The third serial port, [.filename]#sio2#, or [.filename]#COM3#, is on [."
"filename]#/dev/cuad2# for dial-out devices, and on [.filename]#/dev/ttyd2# "
"for dial-in devices. What is the difference between these two classes of "
"devices?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2670
+#: documentation/content/en/books/faq/_index.adoc:2625
msgid ""
"When opening [.filename]#/dev/ttydX# in blocking mode, a process will wait "
"for the corresponding [.filename]#cuadX# device to become inactive, and then "
"wait for the carrier detect line to go active. When the [.filename]#cuadX# "
"device is opened, it makes sure the serial port is not already in use by the "
"[.filename]#ttydX# device. If the port is available, it steals it from the "
"[.filename]#ttydX# device. Also, the [.filename]#cuadX# device does not "
"care about carrier detect. With this scheme and an auto-answer modem, "
"remote users can log in and local users can still dial out with the same "
"modem and the system will take care of all the conflicts."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2672
+#: documentation/content/en/books/faq/_index.adoc:2627
#, no-wrap
msgid "How do I enable support for a multi-port serial card?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2680
+#: documentation/content/en/books/faq/_index.adoc:2635
msgid ""
"The section on kernel configuration provides information about configuring "
"the kernel. For a multi-port serial card, place an man:sio[4] line for each "
"serial port on the card in the man:device.hints[5] file. But place the IRQ "
"specifiers on only one of the entries. All of the ports on the card should "
"share one IRQ. For consistency, use the last serial port to specify the "
"IRQ. Also, specify the following option in the kernel configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2684
+#: documentation/content/en/books/faq/_index.adoc:2639
#, no-wrap
msgid "options COM_MULTIPORT\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2687
+#: documentation/content/en/books/faq/_index.adoc:2642
msgid ""
"The following [.filename]#/boot/device.hints# example is for an AST 4-port "
"serial card on IRQ 12:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2703
+#: documentation/content/en/books/faq/_index.adoc:2658
#, no-wrap
msgid ""
"hint.sio.4.at=\"isa\"\n"
"hint.sio.4.port=\"0x2a0\"\n"
"hint.sio.4.flags=\"0x701\"\n"
"hint.sio.5.at=\"isa\"\n"
"hint.sio.5.port=\"0x2a8\"\n"
"hint.sio.5.flags=\"0x701\"\n"
"hint.sio.6.at=\"isa\"\n"
"hint.sio.6.port=\"0x2b0\"\n"
"hint.sio.6.flags=\"0x701\"\n"
"hint.sio.7.at=\"isa\"\n"
"hint.sio.7.port=\"0x2b8\"\n"
"hint.sio.7.flags=\"0x701\"\n"
"hint.sio.7.irq=\"12\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2706
+#: documentation/content/en/books/faq/_index.adoc:2661
msgid ""
"The flags indicate that the master port has minor number `7` (`0x700`), and "
"all the ports share an IRQ (`0x001`)."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2708
+#: documentation/content/en/books/faq/_index.adoc:2663
#, no-wrap
msgid "Can I set the default serial parameters for a port?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2711
+#: documentation/content/en/books/faq/_index.adoc:2666
msgid ""
"See the extref:{handbook}serialcomms/[Serial Communications, serial-hw-"
"config] section in the FreeBSD Handbook."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2713
+#: documentation/content/en/books/faq/_index.adoc:2668
#, no-wrap
msgid "Why can I not run tip or cu?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2717
+#: documentation/content/en/books/faq/_index.adoc:2672
msgid ""
"The built-in man:tip[1] and man:cu[1] utilities can only access the [."
"filename]#/var/spool/lock# directory via user `uucp` and group `dialer`. "
"Use the `dialer` group to control who has access to the modem or remote "
"systems by adding user accounts to `dialer`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2719
+#: documentation/content/en/books/faq/_index.adoc:2674
msgid ""
"Alternatively, everyone can be configured to run man:tip[1] and man:cu[1] by "
"typing:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2724
+#: documentation/content/en/books/faq/_index.adoc:2679
#, no-wrap
msgid ""
"# chmod 4511 /usr/bin/cu\n"
"# chmod 4511 /usr/bin/tip\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:2727
+#: documentation/content/en/books/faq/_index.adoc:2682
#, no-wrap
msgid "Miscellaneous Questions"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2730
+#: documentation/content/en/books/faq/_index.adoc:2685
#, no-wrap
msgid "FreeBSD uses a lot of swap space even when the computer has free memory left. Why?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2734
+#: documentation/content/en/books/faq/_index.adoc:2689
msgid ""
"FreeBSD will proactively move entirely idle, unused pages of main memory "
"into swap in order to make more main memory available for active use. This "
"heavy use of swap is balanced by using the extra free memory for caching."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2737
+#: documentation/content/en/books/faq/_index.adoc:2692
msgid ""
"Note that while FreeBSD is proactive in this regard, it does not arbitrarily "
"decide to swap pages when the system is truly idle. Thus, the system will "
"not be all paged out after leaving it idle overnight."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2739
+#: documentation/content/en/books/faq/_index.adoc:2694
#, no-wrap
msgid "Why does top show very little free memory even when I have very few programs running?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2746
+#: documentation/content/en/books/faq/_index.adoc:2701
msgid ""
"The simple answer is that free memory is wasted memory. Any memory that "
"programs do not actively allocate is used within the FreeBSD kernel as disk "
"cache. The values shown by man:top[1] labeled as `Inact` and `Laundry` are "
"cached data at different aging levels. This cached data means the system "
"does not have to access a slow disk again for data it has accessed recently, "
"thus increasing overall performance. In general, a low value shown for "
"`Free` memory in man:top[1] is good, provided it is not _very_ low."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2748
+#: documentation/content/en/books/faq/_index.adoc:2703
#, no-wrap
msgid "Why will `chmod` not change the permissions on symlinks?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2752
+#: documentation/content/en/books/faq/_index.adoc:2707
msgid ""
"Symlinks do not have permissions, and by default, man:chmod[1] will follow "
"symlinks to change the permissions on the source file, if possible. For the "
"file, [.filename]#foo# with a symlink named [.filename]#bar#, this command "
"will always succeed."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2756
+#: documentation/content/en/books/faq/_index.adoc:2711
#, no-wrap
msgid "% chmod g-w bar\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2759
+#: documentation/content/en/books/faq/_index.adoc:2714
msgid "However, the permissions on [.filename]#bar# will not have changed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2762
+#: documentation/content/en/books/faq/_index.adoc:2717
msgid ""
"When changing modes of the file hierarchies rooted in the files instead of "
"the files themselves, use either `-H` or `-L` together with `-R` to make "
"this work. See man:chmod[1] and man:symlink[7] for more information."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2769
+#: documentation/content/en/books/faq/_index.adoc:2724
msgid ""
"`-R` does a _recursive_ man:chmod[1]. Be careful about specifying "
"directories or symlinks to directories to man:chmod[1]. To change the "
"permissions of a directory referenced by a symlink, use man:chmod[1] without "
"any options and follow the symlink with a trailing slash ([.filename]#/#). "
"For example, if [.filename]#foo# is a symlink to directory [.filename]#bar#, "
"to change the permissions of [.filename]#foo# (actually [.filename]#bar#), "
"do something like:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:2773
+#: documentation/content/en/books/faq/_index.adoc:2728
#, no-wrap
msgid "% chmod 555 foo/\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2776
+#: documentation/content/en/books/faq/_index.adoc:2731
msgid ""
"With the trailing slash, man:chmod[1] will follow the symlink, [."
"filename]#foo#, to change the permissions of the directory, [.filename]#bar#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2779
+#: documentation/content/en/books/faq/_index.adoc:2734
#, no-wrap
msgid "Can I run DOS binaries under FreeBSD?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2782
+#: documentation/content/en/books/faq/_index.adoc:2738
msgid ""
-"Yes. A DOS emulation program, package:emulators/doscmd[], is available in "
+"Yes. A DOS emulation program, package:emulators/doscmd[], is available in "
"the FreeBSD Ports Collection."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2785
+#: documentation/content/en/books/faq/_index.adoc:2741
msgid ""
"If doscmd will not suffice, package:emulators/pcemu[] emulates an 8088 and "
"enough BIOS services to run many DOS text-mode applications. It requires "
"the X Window System."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2788
+#: documentation/content/en/books/faq/_index.adoc:2744
msgid ""
"The Ports Collection also has package:emulators/dosbox[]. The main focus of "
"this application is emulating old DOS games using the local file system for "
"files."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2790
+#: documentation/content/en/books/faq/_index.adoc:2746
#, no-wrap
msgid "What do I need to do to translate a FreeBSD document into my native language?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2793
+#: documentation/content/en/books/faq/_index.adoc:2749
msgid ""
"See the extref:{fdp-primer}[Translation FAQ, translations] in the FreeBSD "
"Documentation Project Primer."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2795
+#: documentation/content/en/books/faq/_index.adoc:2751
#, no-wrap
msgid "Why does my email to any address at FreeBSD.org bounce?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2799
+#: documentation/content/en/books/faq/_index.adoc:2755
msgid ""
"The `FreeBSD.org` mail system implements some Postfix checks on incoming "
"mail and rejects mail that is either from misconfigured relays or otherwise "
"appears likely to be spam. Some of the specific requirements are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2801
+#: documentation/content/en/books/faq/_index.adoc:2757
msgid ""
"The IP address of the SMTP client must \"reverse-resolve\" to a forward "
"confirmed hostname."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2802
+#: documentation/content/en/books/faq/_index.adoc:2758
msgid ""
"The fully-qualified hostname given in the SMTP conversation (either HELO or "
"EHLO) must resolve to the IP address of the client."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2804
+#: documentation/content/en/books/faq/_index.adoc:2760
msgid "Other advice to help mail reach its destination include:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2806
+#: documentation/content/en/books/faq/_index.adoc:2762
msgid ""
"Mail should be sent in plain text, and messages sent to mailing lists should "
"generally be no more than 200KB in length."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2807
+#: documentation/content/en/books/faq/_index.adoc:2764
msgid ""
-"Avoid excessive cross posting. Choose _one_ mailing list which seems most "
+"Avoid excessive cross posting. Choose _one_ mailing list which seems most "
"relevant and send it there."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2811
+#: documentation/content/en/books/faq/_index.adoc:2768
msgid ""
"If you still have trouble with email infrastructure at `FreeBSD.org`, send a "
"note with the details to mailto:postmaster@freebsd.org[postmaster@freebsd."
"org]; Include a date/time interval so that logs may be reviewed - and note "
"that we only keep one week's worth of mail logs. (Be sure to specify the "
"time zone or offset from UTC.)"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2813
+#: documentation/content/en/books/faq/_index.adoc:2770
#, no-wrap
msgid "Where can I find a free FreeBSD account?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2817
+#: documentation/content/en/books/faq/_index.adoc:2774
msgid ""
"While FreeBSD does not provide open access to any of their servers, others "
"do provide open access UNIX(R) systems. The charge varies and limited "
"services may be available."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2824
+#: documentation/content/en/books/faq/_index.adoc:2781
msgid ""
"http://www.arbornet.org/[Arbornet, Inc], also known as _M-Net_, has been "
"providing open access to UNIX(R) systems since 1983. Starting on an Altos "
"running System III, the site switched to BSD/OS in 1991. In June of 2000, "
"the site switched again to FreeBSD. _M-Net_ can be accessed via telnet and "
"SSH and provides basic access to the entire FreeBSD software suite. "
"However, network access is limited to members and patrons who donate to the "
"system, which is run as a non-profit organization. _M-Net_ also provides an "
"bulletin board system and interactive chat."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2826
+#: documentation/content/en/books/faq/_index.adoc:2783
#, no-wrap
msgid "What is the cute little red guy's name?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2830
+#: documentation/content/en/books/faq/_index.adoc:2788
msgid ""
"He does not have one, and is just called \"the BSD daemon\". If you insist "
-"upon using a name, call him \"beastie\". Note that \"beastie\" is pronounced "
-"\"BSD\"."
+"upon using a name, call him \"beastie\". Note that \"beastie\" is "
+"pronounced \"BSD\"."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2832
+#: documentation/content/en/books/faq/_index.adoc:2790
msgid ""
"More about the BSD daemon is available on his http://www.mckusick.com/"
"beastie/index.html[home page]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2834
+#: documentation/content/en/books/faq/_index.adoc:2792
#, no-wrap
msgid "Can I use the BSD daemon image?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2838
+#: documentation/content/en/books/faq/_index.adoc:2797
msgid ""
-"Perhaps. The BSD daemon is copyrighted by Marshall Kirk McKusick. Check his "
-"http://www.mckusick.com/beastie/mainpage/copyright.html[Statement on the Use "
-"of the BSD Daemon Figure] for detailed usage terms."
+"Perhaps. The BSD daemon is copyrighted by Marshall Kirk McKusick. Check "
+"his http://www.mckusick.com/beastie/mainpage/copyright.html[Statement on the "
+"Use of the BSD Daemon Figure] for detailed usage terms."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2842
+#: documentation/content/en/books/faq/_index.adoc:2801
msgid ""
"In summary, the image can be used in a tasteful manner, for personal use, so "
"long as appropriate credit is given. Before using the logo commercially, "
"contact {mckusick} for permission. More details are available on the http://"
"www.mckusick.com/beastie/index.html[BSD Daemon's home page]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2844
+#: documentation/content/en/books/faq/_index.adoc:2803
#, no-wrap
msgid "Do you have any BSD daemon images I could use?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2847
+#: documentation/content/en/books/faq/_index.adoc:2806
msgid ""
"Xfig and eps drawings are available under [.filename]#/usr/share/examples/"
"BSD_daemon/#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2849
+#: documentation/content/en/books/faq/_index.adoc:2808
#, no-wrap
msgid "I have seen an acronym or other term on the mailing lists and I do not understand what it means. Where should I look?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2852
+#: documentation/content/en/books/faq/_index.adoc:2811
msgid "Refer to the extref:{handbook}glossary/[FreeBSD Glossary]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2854
+#: documentation/content/en/books/faq/_index.adoc:2813
#, no-wrap
msgid "Why should I care what color the bikeshed is?"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2860
+#: documentation/content/en/books/faq/_index.adoc:2819
msgid ""
"The really, really short answer is that you should not. The somewhat longer "
"answer is that just because you are capable of building a bikeshed does not "
"mean you should stop others from building one just because you do not like "
"the color they plan to paint it. This is a metaphor indicating that you "
"need not argue about every little feature just because you know enough to do "
"so. Some people have commented that the amount of noise generated by a "
"change is inversely proportional to the complexity of the change."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:2863
+#: documentation/content/en/books/faq/_index.adoc:2822
msgid ""
"The longer and more complete answer is that after a very long argument about "
"whether man:sleep[1] should take fractional second arguments, {phk} posted a "
"long message entitled link:http://www.bikeshed.com[A bike shed (any color "
"will do) on greener grass...]. The appropriate portions of that message are "
"quoted below."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2866
-msgid "“What is it about this bike shed?” Some of you have asked me."
+#: documentation/content/en/books/faq/_index.adoc:2825
+msgid "“What is it about this bike shed?” some of you have asked me."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2870
+#: documentation/content/en/books/faq/_index.adoc:2829
msgid ""
"It is a long story, or rather it is an old story, but it is quite short "
"actually. C. Northcote Parkinson wrote a book in the early 1960s, called "
"“Parkinson's Law”, which contains a lot of insight into the dynamics of "
"management."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2874
+#: documentation/content/en/books/faq/_index.adoc:2833
msgid ""
"In the specific example involving the bike shed, the other vital component "
"is an atomic power-plant, I guess that illustrates the age of the book."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2876
+#: documentation/content/en/books/faq/_index.adoc:2835
msgid ""
"Parkinson shows how you can go into the board of directors and get approval "
"for building a multi-million or even billion dollar atomic power plant, but "
"if you want to build a bike shed you will be tangled up in endless "
"discussions."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2879
+#: documentation/content/en/books/faq/_index.adoc:2838
msgid ""
"Parkinson explains that this is because an atomic plant is so vast, so "
"expensive and so complicated that people cannot grasp it, and rather than "
"try, they fall back on the assumption that somebody else checked all the "
"details before it got this far. Richard P. Feynmann gives a couple of "
"interesting, and very much to the point, examples relating to Los Alamos in "
"his books."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2884
+#: documentation/content/en/books/faq/_index.adoc:2843
msgid ""
"A bike shed on the other hand. Anyone can build one of those over a "
"weekend, and still have time to watch the game on TV. So no matter how well "
"prepared, no matter how reasonable you are with your proposal, somebody will "
"seize the chance to show that he is doing his job, that he is paying "
"attention, that he is here."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2889
+#: documentation/content/en/books/faq/_index.adoc:2849
msgid ""
"In Denmark we call it “setting your fingerprint”. It is about personal "
"pride and prestige, it is about being able to point somewhere and say "
-"“There! I did that.” It is a strong trait in politicians, but present in "
+"“There! I did that.”. It is a strong trait in politicians, but present in "
"most people given the chance. Just think about footsteps in wet cement."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/faq/_index.adoc:2891
+#: documentation/content/en/books/faq/_index.adoc:2851
msgid ""
"--Poul-Henning Kamp <phk@FreeBSD.org> on freebsd-hackers, October 2, 1999"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:2894
+#: documentation/content/en/books/faq/_index.adoc:2854
#, no-wrap
msgid "The FreeBSD Funnies"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2897
+#: documentation/content/en/books/faq/_index.adoc:2857
#, no-wrap
msgid "How cool is FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2900
+#: documentation/content/en/books/faq/_index.adoc:2862
msgid ""
"_Q._ Has anyone done any temperature testing while running FreeBSD? I know "
-"Linux(R) runs cooler than DOS, but have never seen a mention of FreeBSD. It "
+"Linux(R) runs cooler than DOS, but have never seen a mention of FreeBSD. It "
"seems to run really hot."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2902
+#: documentation/content/en/books/faq/_index.adoc:2869
msgid ""
"_A._ No, but we have done numerous taste tests on blindfolded volunteers who "
-"have also had 250 micrograms of LSD-25 administered beforehand. 35% of the "
+"have also had 250 micrograms of LSD-25 administered beforehand. 35% of the "
"volunteers said that FreeBSD tasted sort of orange, whereas Linux(R) tasted "
-"like purple haze. Neither group mentioned any significant variances in "
-"temperature. We eventually had to throw the results of this survey out "
+"like purple haze. Neither group mentioned any significant variances in "
+"temperature. We eventually had to throw the results of this survey out "
"entirely anyway when we found that too many volunteers were wandering out of "
-"the room during the tests, thus skewing the results. We think most of the "
-"volunteers are at Apple now, working on their new \"scratch and sniff\" GUI. "
-"It is a funny old business we are in!"
+"the room during the tests, thus skewing the results. We think most of the "
+"volunteers are at Apple now, working on their new \"scratch and sniff\" "
+"GUI. It is a funny old business we are in!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2904
+#: documentation/content/en/books/faq/_index.adoc:2872
msgid ""
"Seriously, FreeBSD uses the HLT (halt) instruction when the system is idle "
-"thus lowering its energy consumption and therefore the heat it generates. "
+"thus lowering its energy consumption and therefore the heat it generates. "
"Also if you have ACPI (Advanced Configuration and Power Interface) "
"configured, then FreeBSD can also put the CPU into a low power mode."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2906
+#: documentation/content/en/books/faq/_index.adoc:2874
#, no-wrap
msgid "Who is scratching in my memory banks??"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2909
+#: documentation/content/en/books/faq/_index.adoc:2878
msgid ""
"_Q._ Is there anything \"odd\" that FreeBSD does when compiling the kernel "
"which would cause the memory to make a scratchy sound? When compiling (and "
"for a brief moment after recognizing the floppy drive upon startup, as "
"well), a strange scratchy sound emanates from what appears to be the memory "
"banks."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2911
+#: documentation/content/en/books/faq/_index.adoc:2882
msgid ""
"_A._ Yes! You will see frequent references to \"daemons\" in the BSD "
"documentation, and what most people do not know is that this refers to "
-"genuine, non-corporeal entities that now possess your computer. The scratchy "
-"sound coming from your memory is actually high-pitched whispering exchanged "
-"among the daemons as they best decide how to deal with various system "
-"administration tasks."
+"genuine, non-corporeal entities that now possess your computer. The "
+"scratchy sound coming from your memory is actually high-pitched whispering "
+"exchanged among the daemons as they best decide how to deal with various "
+"system administration tasks."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2913
+#: documentation/content/en/books/faq/_index.adoc:2887
msgid ""
"If the noise gets to you, a good `fdisk /mbr` from DOS will get rid of them, "
-"but do not be surprised if they react adversely and try to stop you. In "
+"but do not be surprised if they react adversely and try to stop you. In "
"fact, if at any point during the exercise you hear the satanic voice of Bill "
"Gates coming from the built-in speaker, take off running and do not ever "
"look back! Freed from the counterbalancing influence of the BSD daemons, the "
"twin demons of DOS and Windows(R) are often able to re-assert total control "
-"over your machine to the eternal damnation of your soul. Now that you know, "
+"over your machine to the eternal damnation of your soul. Now that you know, "
"given a choice you would probably prefer to get used to the scratchy noises, "
"no?"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2915
+#: documentation/content/en/books/faq/_index.adoc:2889
#, no-wrap
msgid "How many FreeBSD hackers does it take to change a lightbulb?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2918
+#: documentation/content/en/books/faq/_index.adoc:2892
msgid "One thousand, one hundred and sixty-nine:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2920
+#: documentation/content/en/books/faq/_index.adoc:2894
msgid "Twenty-three to complain to -CURRENT about the lights being out;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2922
+#: documentation/content/en/books/faq/_index.adoc:2896
msgid ""
"Four to claim that it is a configuration problem, and that such matters "
"really belong on -questions;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2924
+#: documentation/content/en/books/faq/_index.adoc:2898
msgid ""
"Three to submit PRs about it, one of which is misfiled under doc and "
"consists only of \"it's dark\";"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2926
+#: documentation/content/en/books/faq/_index.adoc:2900
msgid ""
"One to commit an untested lightbulb which breaks buildworld, then back it "
"out five minutes later;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2928
+#: documentation/content/en/books/faq/_index.adoc:2902
msgid ""
"Eight to flame the PR originators for not including patches in their PRs;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2930
+#: documentation/content/en/books/faq/_index.adoc:2904
msgid "Five to complain about buildworld being broken;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2932
+#: documentation/content/en/books/faq/_index.adoc:2906
msgid ""
"Thirty-one to answer that it works for them, and they must have updated at a "
"bad time;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2934
+#: documentation/content/en/books/faq/_index.adoc:2908
msgid "One to post a patch for a new lightbulb to -hackers;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2936
+#: documentation/content/en/books/faq/_index.adoc:2910
msgid ""
"One to complain that he had patches for this three years ago, but when he "
"sent them to -CURRENT they were just ignored, and he has had bad experiences "
"with the PR system; besides, the proposed new lightbulb is non-reflexive;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2938
+#: documentation/content/en/books/faq/_index.adoc:2912
msgid ""
"Thirty-seven to scream that lightbulbs do not belong in the base system, "
"that committers have no right to do things like this without consulting the "
"Community, and WHAT IS -CORE DOING ABOUT IT!?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2940
+#: documentation/content/en/books/faq/_index.adoc:2914
msgid "Two hundred to complain about the color of the bicycle shed;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2942
+#: documentation/content/en/books/faq/_index.adoc:2916
msgid "Three to point out that the patch breaks man:style[9];"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2944
+#: documentation/content/en/books/faq/_index.adoc:2918
msgid "Seventeen to complain that the proposed new lightbulb is under GPL;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2946
+#: documentation/content/en/books/faq/_index.adoc:2920
msgid ""
"Five hundred and eighty-six to engage in a flame war about the comparative "
"advantages of the GPL, the BSD license, the MIT license, the NPL, and the "
"personal hygiene of unnamed FSF founders;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2948
+#: documentation/content/en/books/faq/_index.adoc:2922
msgid "Seven to move various portions of the thread to -chat and -advocacy;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2950
+#: documentation/content/en/books/faq/_index.adoc:2924
msgid ""
"One to commit the suggested lightbulb, even though it shines dimmer than the "
"old one;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2952
+#: documentation/content/en/books/faq/_index.adoc:2926
msgid ""
"Two to back it out with a furious flame of a commit message, arguing that "
"FreeBSD is better off in the dark than with a dim lightbulb;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2954
+#: documentation/content/en/books/faq/_index.adoc:2928
msgid ""
"Forty-six to argue vociferously about the backing out of the dim lightbulb "
"and demanding a statement from -core;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2956
+#: documentation/content/en/books/faq/_index.adoc:2930
msgid ""
"Eleven to request a smaller lightbulb so it will fit their Tamagotchi if we "
"ever decide to port FreeBSD to that platform;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2958
+#: documentation/content/en/books/faq/_index.adoc:2932
msgid ""
"Seventy-three to complain about the SNR on -hackers and -chat and "
"unsubscribe in protest;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2960
+#: documentation/content/en/books/faq/_index.adoc:2934
msgid ""
"Thirteen to post \"unsubscribe\", \"How do I unsubscribe?\", or \"Please "
"remove me from the list\", followed by the usual footer;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2962
+#: documentation/content/en/books/faq/_index.adoc:2936
msgid ""
"One to commit a working lightbulb while everybody is too busy flaming "
"everybody else to notice;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2964
+#: documentation/content/en/books/faq/_index.adoc:2938
msgid ""
"Thirty-one to point out that the new lightbulb would shine 0.364% brighter "
"if compiled with TenDRA (although it will have to be reshaped into a cube), "
"and that FreeBSD should therefore switch to TenDRA instead of GCC;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2966
+#: documentation/content/en/books/faq/_index.adoc:2940
msgid "One to complain that the new lightbulb lacks fairings;"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2968
+#: documentation/content/en/books/faq/_index.adoc:2942
msgid "Nine (including the PR originators) to ask \"what is MFC?\";"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2970
+#: documentation/content/en/books/faq/_index.adoc:2944
msgid ""
"Fifty-seven to complain about the lights being out two weeks after the bulb "
"has been changed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2972
+#: documentation/content/en/books/faq/_index.adoc:2946
msgid "_{nik} adds:_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2974
+#: documentation/content/en/books/faq/_index.adoc:2948
msgid "_I was laughing quite hard at this._"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2976
+#: documentation/content/en/books/faq/_index.adoc:2950
msgid ""
"_And then I thought, \"Hang on, shouldn't there be '1 to document it.' in "
"that list somewhere?\"_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2978
+#: documentation/content/en/books/faq/_index.adoc:2952
msgid "_And then I was enlightened :-)_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2980
+#: documentation/content/en/books/faq/_index.adoc:2954
msgid ""
"_{tabthorpe}_ says: \"None, _real_ FreeBSD hackers are not afraid of the "
"dark!\""
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:2982
+#: documentation/content/en/books/faq/_index.adoc:2956
#, no-wrap
msgid "Where does data written to [.filename]#/dev/null# go?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2988
+#: documentation/content/en/books/faq/_index.adoc:2962
msgid ""
"It goes into a special data sink in the CPU where it is converted to heat "
"which is vented through the heatsink / fan assembly. This is why CPU "
"cooling is increasingly important; as people get used to faster processors, "
"they become careless with their data and more and more of it ends up in [."
"filename]#/dev/null#, overheating their CPUs. If you delete [.filename]#/"
"dev/null# (which effectively disables the CPU data sink) your CPU may run "
"cooler but your system will quickly become constipated with all that excess "
"data and start to behave erratically. If you have a fast network connection "
"you can cool down your CPU by reading data out of [.filename]#/dev/random# "
"and sending it off somewhere; however you run the risk of overheating your "
"network connection and [.filename]#/# or angering your ISP, as most of the "
"data will end up getting converted to heat by their equipment, but they "
"generally have good cooling, so if you do not overdo it you should be OK."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2990
+#: documentation/content/en/books/faq/_index.adoc:2964
msgid "_Paul Robinson adds:_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:2996
+#: documentation/content/en/books/faq/_index.adoc:2970
msgid ""
"There are other methods. As every good sysadmin knows, it is part of "
"standard practice to send data to the screen of interesting variety to keep "
"all the pixies that make up your picture happy. Screen pixies (commonly mis-"
"typed or re-named as \"pixels\") are categorized by the type of hat they "
"wear (red, green or blue) and will hide or appear (thereby showing the color "
"of their hat) whenever they receive a little piece of food. Video cards "
"turn data into pixie-food, and then send them to the pixies - the more "
"expensive the card, the better the food, so the better behaved the pixies "
"are. They also need constant stimulation - this is why screen savers exist."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3000
+#: documentation/content/en/books/faq/_index.adoc:2974
msgid ""
"To take your suggestions further, you could just throw the random data to "
"console, thereby letting the pixies consume it. This causes no heat to be "
"produced at all, keeps the pixies happy and gets rid of your data quite "
"quickly, even if it does make things look a bit messy on your screen."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3004
+#: documentation/content/en/books/faq/_index.adoc:2978
msgid ""
"Incidentally, as an ex-admin of a large ISP who experienced many problems "
"attempting to maintain a stable temperature in a server room, I would "
"strongly discourage people sending the data they do not want out to the "
"network. The fairies who do the packet switching and routing get annoyed by "
"it as well."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3006
+#: documentation/content/en/books/faq/_index.adoc:2980
#, no-wrap
msgid "My colleague sits at the computer too much, how can I prank her?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3009
+#: documentation/content/en/books/faq/_index.adoc:2983
msgid "Install package:games/sl[] and wait for her to mistype `sl` for `ls`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:3011
+#: documentation/content/en/books/faq/_index.adoc:2985
#, no-wrap
msgid "Advanced Topics"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3014
+#: documentation/content/en/books/faq/_index.adoc:2988
#, no-wrap
msgid "How can I learn more about FreeBSD's internals?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3017
+#: documentation/content/en/books/faq/_index.adoc:2991
msgid "See the extref:{arch-handbook}[FreeBSD Architecture Handbook]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3019
+#: documentation/content/en/books/faq/_index.adoc:2993
msgid ""
"Additionally, much general UNIX(R) knowledge is directly applicable to "
"FreeBSD."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3021
+#: documentation/content/en/books/faq/_index.adoc:2995
#, no-wrap
msgid "How can I contribute to FreeBSD? What can I do to help?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3025
+#: documentation/content/en/books/faq/_index.adoc:2999
msgid ""
"We accept all types of contributions: documentation, code, and even art. "
"See the article on extref:{contributing}[Contributing to FreeBSD] for "
"specific advice on how to do this."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3027
+#: documentation/content/en/books/faq/_index.adoc:3001
msgid "And thanks for the thought!"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3029
+#: documentation/content/en/books/faq/_index.adoc:3003
#, no-wrap
msgid "What are snapshots and releases?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3033
+#: documentation/content/en/books/faq/_index.adoc:3007
msgid ""
"There are currently {rel-numbranch} active/semi-active branches in the "
"FreeBSD http://svnweb.FreeBSD.org/base/[Subversion Repository]. (Earlier "
"branches are only changed very rarely, which is why there are only {rel-"
"numbranch} active branches of development):"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3035
+#: documentation/content/en/books/faq/_index.adoc:3009
msgid "{rel2-releng} AKA {rel2-stable}"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3036
+#: documentation/content/en/books/faq/_index.adoc:3010
msgid "{rel-releng} AKA {rel-stable}"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3037
+#: documentation/content/en/books/faq/_index.adoc:3011
msgid "{rel-head-releng} AKA _-CURRENT_ AKA {rel-head}"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3040
+#: documentation/content/en/books/faq/_index.adoc:3014
msgid ""
"`HEAD` is not an actual branch tag. It is a symbolic constant for the "
"current, non-branched development stream known as _-CURRENT_."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3042
+#: documentation/content/en/books/faq/_index.adoc:3016
msgid ""
"Right now, _-CURRENT_ is the {rel-head-relx} development stream; the {rel-"
"stable} branch, {rel-releng}, forked off from _-CURRENT_ in {rel-relengdate} "
"and the {rel2-stable} branch, {rel2-releng}, forked off from _-CURRENT_ in "
"{rel2-relengdate}."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3044
+#: documentation/content/en/books/faq/_index.adoc:3018
#, no-wrap
msgid "How can I make the most of the data I see when my kernel panics?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3047
+#: documentation/content/en/books/faq/_index.adoc:3021
msgid "Here is typical kernel panic:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3063
+#: documentation/content/en/books/faq/_index.adoc:3037
#, no-wrap
msgid ""
"Fatal trap 12: page fault while in kernel mode\n"
"fault virtual address = 0x40\n"
"fault code = supervisor read, page not present\n"
"instruction pointer = 0x8:0xf014a7e5\n"
"stack pointer = 0x10:0xf4ed6f24\n"
"frame pointer = 0x10:0xf4ed6f28\n"
"code segment = base 0x0, limit 0xfffff, type 0x1b\n"
" = DPL 0, pres 1, def32 1, gran 1\n"
"processor eflags = interrupt enabled, resume, IOPL = 0\n"
"current process = 80 (mount)\n"
"interrupt mask =\n"
"trap number = 12\n"
"panic: page fault\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3069
+#: documentation/content/en/books/faq/_index.adoc:3042
msgid ""
"This message is not enough. While the instruction pointer value is "
"important, it is also configuration dependent as it varies depending on the "
"kernel image. If it is a [.filename]#GENERIC# kernel image from one of the "
"snapshots, it is possible for somebody else to track down the offending "
"function, but for a custom kernel, only you can tell us where the fault "
"occurred."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3071
+#: documentation/content/en/books/faq/_index.adoc:3044
msgid "To proceed:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3075
+#: documentation/content/en/books/faq/_index.adoc:3049
msgid ""
-"Write down the instruction pointer value. Note that the `0x8:` part at the "
+"Write down the instruction pointer value. Note that the `0x8:` part at the "
"beginning is not significant in this case: it is the `0xf0xxxxxx` part that "
"we want."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3076
+#: documentation/content/en/books/faq/_index.adoc:3050
msgid "When the system reboots, do the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3080
+#: documentation/content/en/books/faq/_index.adoc:3054
#, no-wrap
msgid "% nm -n kernel.that.caused.the.panic | grep f0xxxxxx\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3085
+#: documentation/content/en/books/faq/_index.adoc:3059
msgid ""
"where `f0xxxxxx` is the instruction pointer value. The odds are you will "
"not get an exact match since the symbols in the kernel symbol table are for "
"the entry points of functions and the instruction pointer address will be "
"somewhere inside a function, not at the start. If you do not get an exact "
"match, omit the last digit from the instruction pointer value and try again:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3089
+#: documentation/content/en/books/faq/_index.adoc:3063
#, no-wrap
msgid "% nm -n kernel.that.caused.the.panic | grep f0xxxxx\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3095
+#: documentation/content/en/books/faq/_index.adoc:3069
msgid ""
"If that does not yield any results, chop off another digit. Repeat until "
"there is some sort of output. The result will be a possible list of "
"functions which caused the panic. This is a less than exact mechanism for "
"tracking down the point of failure, but it is better than nothing."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3099
+#: documentation/content/en/books/faq/_index.adoc:3073
msgid ""
"However, the best way to track down the cause of a panic is by capturing a "
"crash dump, then using man:kgdb[1] to generate a stack trace on the crash "
"dump."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3101
+#: documentation/content/en/books/faq/_index.adoc:3075
msgid "In any case, the method is this:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3105
+#: documentation/content/en/books/faq/_index.adoc:3079
msgid ""
"Make sure that the following line is included in the kernel configuration "
"file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3109
+#: documentation/content/en/books/faq/_index.adoc:3083
#, no-wrap
msgid "makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3112
+#: documentation/content/en/books/faq/_index.adoc:3086
msgid "Change to the [.filename]#/usr/src# directory:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3116
+#: documentation/content/en/books/faq/_index.adoc:3090
#, no-wrap
msgid "# cd /usr/src\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3119
+#: documentation/content/en/books/faq/_index.adoc:3093
msgid "Compile the kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3123
+#: documentation/content/en/books/faq/_index.adoc:3097
#, no-wrap
msgid "# make buildkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3126
+#: documentation/content/en/books/faq/_index.adoc:3100
msgid "Wait for man:make[1] to finish compiling."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3130
+#: documentation/content/en/books/faq/_index.adoc:3104
#, no-wrap
msgid "# make installkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3133
+#: documentation/content/en/books/faq/_index.adoc:3107
msgid "Reboot."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3138
+#: documentation/content/en/books/faq/_index.adoc:3112
msgid ""
"If `KERNCONF` is not included, the [.filename]#GENERIC# kernel will instead "
"be built and installed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3142
+#: documentation/content/en/books/faq/_index.adoc:3117
msgid ""
"The man:make[1] process will have built two kernels. [.filename]#/usr/obj/"
"usr/src/sys/MYKERNEL/kernel# and [.filename]#/usr/obj/usr/src/sys/MYKERNEL/"
-"kernel.debug#. [.filename]#kernel# was installed as [.filename]#/boot/kernel/"
-"kernel#, while [.filename]#kernel.debug# can be used as the source of "
+"kernel.debug#. [.filename]#kernel# was installed as [.filename]#/boot/"
+"kernel/kernel#, while [.filename]#kernel.debug# can be used as the source of "
"debugging symbols for man:kgdb[1]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3148
+#: documentation/content/en/books/faq/_index.adoc:3122
msgid ""
"To capture a crash dump, edit [.filename]#/etc/rc.conf# and set `dumpdev` to "
"point to either the swap partition or `AUTO`. This will cause the man:rc[8] "
"scripts to use the man:dumpon[8] command to enable crash dumps. This "
"command can also be run manually. After a panic, the crash dump can be "
"recovered using man:savecore[8]; if `dumpdev` is set in [.filename]#/etc/rc."
"conf#, the man:rc[8] scripts will run man:savecore[8] automatically and put "
"the crash dump in [.filename]#/var/crash#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3156
+#: documentation/content/en/books/faq/_index.adoc:3130
msgid ""
"FreeBSD crash dumps are usually the same size as physical RAM. Therefore, "
"make sure there is enough space in [.filename]#/var/crash# to hold the "
"dump. Alternatively, run man:savecore[8] manually and have it recover the "
"crash dump to another directory with more room. It is possible to limit the "
"size of the crash dump by using `options MAXMEM=N` where _N_ is the size of "
"kernel's memory usage in KBs. For example, for 1 GB of RAM, limit the "
"kernel's memory usage to 128 MB, so that the crash dump size will be 128 MB "
"instead of 1 GB."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3159
+#: documentation/content/en/books/faq/_index.adoc:3133
msgid "Once the crash dump has been recovered , get a stack trace as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3164
+#: documentation/content/en/books/faq/_index.adoc:3138
#, no-wrap
msgid ""
"% kgdb /usr/obj/usr/src/sys/MYKERNEL/kernel.debug /var/crash/vmcore.0\n"
"(kgdb) backtrace\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3171
+#: documentation/content/en/books/faq/_index.adoc:3145
msgid ""
"Note that there may be several screens worth of information. Ideally, use "
"man:script[1] to capture all of them. Using the unstripped kernel image "
"with all the debug symbols should show the exact line of kernel source code "
"where the panic occurred. The stack trace is usually read from the bottom "
"up to trace the exact sequence of events that lead to the crash. man:"
"kgdb[1] can also be used to print out the contents of various variables or "
"structures to examine the system state at the time of the crash."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3176
+#: documentation/content/en/books/faq/_index.adoc:3149
msgid ""
"If a second computer is available, man:kgdb[1] can be configured to do "
"remote debugging, including setting breakpoints and single-stepping through "
"the kernel code."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/faq/_index.adoc:3183
+#: documentation/content/en/books/faq/_index.adoc:3156
msgid ""
"If `DDB` is enabled and the kernel drops into the debugger, a panic and a "
"crash dump can be forced by typing `panic` at the `ddb` prompt. It may stop "
"in the debugger again during the panic phase. If it does, type `continue` "
"and it will finish the crash dump."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3186
+#: documentation/content/en/books/faq/_index.adoc:3159
#, no-wrap
msgid "Why has dlsym() stopped working for ELF executables?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3190
+#: documentation/content/en/books/faq/_index.adoc:3163
msgid ""
"The ELF toolchain does not, by default, make the symbols defined in an "
"executable visible to the dynamic linker. Consequently `dlsym()` searches "
"on handles obtained from calls to `dlopen(NULL, flags)` will fail to find "
"such symbols."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3192
+#: documentation/content/en/books/faq/_index.adoc:3165
msgid ""
"To search, using `dlsym()`, for symbols present in the main executable of a "
"process, link the executable using the `--export-dynamic` option to the ELF "
"linker (man:ld[1])."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/faq/_index.adoc:3194
+#: documentation/content/en/books/faq/_index.adoc:3167
#, no-wrap
msgid "How can I increase or reduce the kernel address space on i386?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3198
+#: documentation/content/en/books/faq/_index.adoc:3171
msgid ""
"By default, the kernel address space is 1 GB (2 GB for PAE) for i386. When "
"running a network-intensive server or using ZFS, this will probably not be "
"enough."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3200
+#: documentation/content/en/books/faq/_index.adoc:3173
msgid ""
"Add the following line to the kernel configuration file to increase "
"available space and rebuild the kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/faq/_index.adoc:3204
+#: documentation/content/en/books/faq/_index.adoc:3177
#, no-wrap
msgid "options KVA_PAGES=N\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3207
+#: documentation/content/en/books/faq/_index.adoc:3181
msgid ""
"To find the correct value of _N_, divide the desired address space size (in "
-"megabytes) by four. (For example, it is `512` for 2 GB.)"
+"megabytes) by four. (For example, it is `512` for 2 GB.)"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/faq/_index.adoc:3209
+#: documentation/content/en/books/faq/_index.adoc:3183
#, no-wrap
msgid "Acknowledgments"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3212
+#: documentation/content/en/books/faq/_index.adoc:3187
msgid ""
"This innocent little Frequently Asked Questions document has been written, "
"rewritten, edited, folded, spindled, mutilated, eviscerated, contemplated, "
"discombobulated, cogitated, regurgitated, rebuilt, castigated, and "
-"reinvigorated over the last decade, by a cast of hundreds if not thousands. "
+"reinvigorated over the last decade, by a cast of hundreds if not thousands. "
"Repeatedly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/faq/_index.adoc:3213
+#: documentation/content/en/books/faq/_index.adoc:3188
msgid ""
"We wish to thank every one of the people responsible, and we encourage you "
"to extref:{contributing}[join them] in making this FAQ even better."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/doc-build/_index.po b/documentation/content/en/books/fdp-primer/doc-build/_index.po
index c4f7376c3d..81ef0896f6 100644
--- a/documentation/content/en/books/fdp-primer/doc-build/_index.po
+++ b/documentation/content/en/books/fdp-primer/doc-build/_index.po
@@ -1,1178 +1,1178 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:1
#, no-wrap
msgid "Describes the FreeBSD Documentation Build Process"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:1
#, no-wrap
msgid "Chapter 5. The FreeBSD Documentation Build Process"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:13
#, no-wrap
msgid "The FreeBSD Documentation Build Process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:51
msgid ""
"This chapter covers organization of the documentation build process and how "
"man:make[1] is used to control it."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:53
#, no-wrap
msgid "Rendering AsciiDoc into Output"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:56
msgid ""
"Different types of output can be produced from a single AsciiDoc source file."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:60
#, no-wrap
msgid "Formats"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:61
#, no-wrap
msgid "File Type"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:63
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:64
#, no-wrap
msgid "`html`"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:65
#, no-wrap
msgid "HTML"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:67
#, no-wrap
msgid "An `article` or `book` chapter."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:68
#, no-wrap
msgid "`pdf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:69
#, no-wrap
msgid "PDF"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:71
#, no-wrap
msgid "Portable Document Format."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:72
#, no-wrap
msgid "`epub`"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:73
#, no-wrap
msgid "EPUB"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:75
#, no-wrap
msgid ""
"Electronic Publication.\n"
"ePub file format."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:78
#, no-wrap
msgid "Rendering to html"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:81
msgid ""
"To render the documentation and the website to `html` use one of the "
"following examples."
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:83
#, no-wrap
msgid "Build the documentation"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:90
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:94
#, no-wrap
msgid "Build the website"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:101
#, no-wrap
msgid ""
"% cd ~/doc/website\n"
"% make\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:105
#, no-wrap
msgid "Build the entire documentation project"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:112
#, no-wrap
msgid ""
"% cd ~/doc\n"
"% make -j2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:116
msgid "Advanced build examples are given below:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:118
#, no-wrap
-msgid "Build the documentation with verbose and debug messages"
+msgid "Build English and Spanish documentation with verbose and debug messages"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:125
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
-"% make HUGO_ARGS=\"--verbose --debug --path-warnings\"\n"
+"% make DOC_LANG=\"en es\" HUGO_ARGS=\"--verbose --debug\"\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:129
#, no-wrap
msgid "Build and serve the content with Hugo’s internal webserver"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:136
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make run\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:138
msgid "This webserver runs on `localhost`, port `1313` by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:140
msgid ""
"To serve the content with Hugo’s internal webserver binding a specific IP "
"address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:144
#, no-wrap
msgid "% make run BIND=192.168.15.10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:147
msgid "A `hostname` can also be set as base url to Hugo’s internal webserver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:151
#, no-wrap
msgid "% make run BIND=192.168.15.10 HOSTNAME=example.com\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:155
#, no-wrap
msgid "Rendering to pdf"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:158
msgid ""
"To render the documentation to `pdf`, use one of the following examples."
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:160
#, no-wrap
msgid "Build all documents in pdf"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:167
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make pdf\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:171
#, no-wrap
msgid "Build all articles in pdf"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:178
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make pdf-articles\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:182
#, no-wrap
msgid "Build all books in pdf"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:189
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make pdf-books\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:193
#, no-wrap
msgid "Build documents in pdf for specific languages"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:200
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make DOC_LANG=\"en\" pdf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:202
msgid "This will build all English documents in pdf."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:207
#, no-wrap
msgid ""
"% cd ~/doc/documentation\n"
"% make DOC_LANG=\"en fr\" pdf-books\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:209
msgid "This will build all English and French books in pdf."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:212
#, no-wrap
msgid "The FreeBSD Documentation Build Toolset"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:215
msgid "These are the tools used to build and install the FDP documentation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:217
msgid "The primary build tool is man:make[1], specifically Berkeley Make."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:218
msgid "Hugo"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:219
msgid "AsciiDoctor"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:220
msgid "Git"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:222
#, no-wrap
msgid "Understanding the Makefile in the Documentation Tree"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:225
msgid ""
"There are three [.filename]#Makefile# files for building some or all of the "
"documentation project."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:227
msgid ""
"The [.filename]#Makefile# in the [.filename]#documentation# directory will "
"build only the documentation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:228
msgid ""
"The [.filename]#Makefile# in the [.filename]#website# directory will build "
"only the website."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:229
msgid ""
"The [.filename]#Makefile# at the top of the tree will build both the "
"documentation and the website."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:232
msgid ""
"The [.filename]#Makefile# appearing in subdirectories also support `make "
"run` to serve built content with Hugo's internal webserver. This webserver "
"runs on port 1313 by default."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:234
#, no-wrap
msgid "Documentation Makefile"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:237
msgid "This [.filename]#Makefile# takes the following form:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:262
#, no-wrap
msgid ""
"# Generate the FreeBSD documentation\n"
"#\n"
"# Copyright (c) 2020-2021, The FreeBSD Documentation Project\n"
"# Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>\n"
"#\n"
"# Targets intended for use on the command line\n"
"#\n"
"# all (default)\t-\tgenerate the books TOC and compile all the documentation\n"
"# clean\t\t- \tremoves generated files\n"
"# run\t\t-\tserves the built documentation site for local browsing\n"
"# pdf\t\t-\tbuild PDF versions of the articles and books.\n"
"# html\t\t-\tbuild HTML versions of the articles and books for\n"
"#\t\t\toffline use.\n"
"#\t\t\tIf variable DOC_HTML_ARCHIVE is set, all documents will be\n"
"#\t\t\tarchived/compressed, and only these files will be kept in the public\n"
"#\t\t\tdirectory.\n"
"# epub\t\t-\tbuild EPUB versions of the articles and books (Experimental).\n"
"#\n"
"# The run target uses hugo's built-in webserver to make the documentation site\n"
"# available for local browsing. The documentation should have been built prior\n"
"# to attempting to use the `run` target. By default, hugo will start its\n"
"# webserver on port 1313.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:264
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:546
#, no-wrap
msgid "MAINTAINER=carlavilla@FreeBSD.org <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:269
#, no-wrap
msgid ""
"# List of languages without book translations\n"
"ARTICLEONLY_LANGS=\tbn-bd da ko tr\n"
"# List of languages without article translations\n"
"BOOKONLY_LANGS=\t\tmn\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:272
#, no-wrap
msgid ""
"# List of all languages we have content for\n"
"ALL_LANGUAGES=\tbn-bd da de el en es fr hu it ja ko mn nl pl pt-br ru tr zh-cn zh-tw <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:274
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:551
#, no-wrap
msgid "LOCALBASE?=\t/usr/local\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:281
#, no-wrap
msgid ""
"RUBY_CMD =\t${LOCALBASE}/bin/ruby <.>\n"
"HUGO_CMD =\t${LOCALBASE}/bin/hugo <.>\n"
"HUGO_ARGS?=\t--verbose --minify\n"
"HUGO_OFFLINE_ARGS?= \t--environment offline --verbose --minify\n"
"ASCIIDOCTOR_CMD=\t${LOCALBASE}/bin/asciidoctor\n"
"ASCIIDOCTORPDF_CMD=\t${LOCALBASE}/bin/asciidoctor-pdf\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:291
#, no-wrap
msgid ""
".if defined(DOC_LANG) && !empty(DOC_LANG)\n"
"LANGUAGES=\t${DOC_LANG:S/,/ /g}\n"
".if ${LANGUAGES:Men} == \"\" && ${.TARGETS:Mpdf*} == \"\" && ${.TARGETS:Mhtml*} == \"\"\n"
".warning \"Warning: cannot skip 'en'; adding it back\"\n"
"LANGUAGES+=\ten\n"
".endif\n"
".else\n"
"LANGUAGES=\t${ALL_LANGUAGES}\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:294
#, no-wrap
msgid ""
"RUBYLIB =\t../shared/lib\n"
".export\tRUBYLIB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:298
#, no-wrap
msgid ""
"RUN_DEPENDS=\t${HUGO_CMD} \\\n"
"\t\t${LOCALBASE}/bin/asciidoctor \\\n"
"\t\t${LOCALBASE}/bin/rougify\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:308
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:567
#, no-wrap
msgid ""
".ifndef HOSTNAME\n"
". ifdef BIND\n"
".HOST=$(BIND)\n"
". else\n"
".HOST=localhost\n"
". endif\n"
".else\n"
".HOST=$(HOSTNAME)\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:315
#, no-wrap
msgid ""
"# Strip the languages with only articles from the list of languages we\n"
"# will use to build books.\n"
"BOOK_LANGS= ${LANGUAGES}\n"
".for a in ${ARTICLEONLY_LANGS}\n"
"BOOK_LANGS:=\t${BOOK_LANGS:N${a}}\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:322
#, no-wrap
msgid ""
"# Strip the languages with only books from the list of languages we\n"
"# will use to build articles.\n"
"ARTICLE_LANGS= ${LANGUAGES}\n"
".for a in ${BOOKONLY_LANGS}\n"
"ARTICLE_LANGS:=\t${ARTICLE_LANGS:N${a}}\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:331
#, no-wrap
msgid ""
"# Take the list of all languages, and take out the ones we have been\n"
"# asked for. We'll feed this to hugo.\n"
"SKIP_LANGS=\n"
".for a in ${ALL_LANGUAGES}\n"
".if ${LANGUAGES:M${a}} == \"\"\n"
"SKIP_LANGS+= ${a}\n"
".endif\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:333
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:588
#, no-wrap
msgid ".ORDER: all run <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:338
#, no-wrap
msgid ""
".ORDER: requirements <.>\n"
".ORDER: starting-message\n"
".ORDER: starting-message build\n"
".ORDER: build\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:341
#, no-wrap
msgid ""
"all: requirements starting-message generate-pgpkeys-txt build\n"
"run: requirements starting-message generate-pgpkeys-txt run-local\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:344
#, no-wrap
msgid ""
"# clean does not call pdf-clean as that is a subset of hugo-clean\n"
"clean: hugo-clean pgp-clean\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:351
#, no-wrap
msgid ""
"requirements:\n"
".for dep in ${RUN_DEPENDS}\n"
".if !exists(${dep})\n"
"\t@(echo ${dep} not found, please run 'pkg install docproj'; exit 1)\n"
".endif\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:356
#, no-wrap
msgid ""
"requirements-pdf:\n"
".if !exists(${LOCALBASE}/bin/asciidoctor-pdf)\n"
"\t@(echo ${LOCALBASE}/bin/asciidoctor-pdf not found, please run 'pkg install rubygem-asciidoctor-pdf'; exit 1)\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:361
#, no-wrap
msgid ""
"requirements-epub:\n"
".if !exists(${LOCALBASE}/bin/asciidoctor-epub3)\n"
"\t@(echo ${LOCALBASE}/bin/asciidoctor-epub3 not found, please run 'pkg install rubygem-asciidoctor-epub3'; exit 1)\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:368
#, no-wrap
msgid ""
"starting-message: .PHONY <.>\n"
"\t@echo ---------------------------------------------------------------\n"
"\t@echo Building the documentation\n"
"\t@echo included languages: ${LANGUAGES}\n"
"\t@echo excluded languages: ${SKIP_LANGS}\n"
"\t@echo ---------------------------------------------------------------\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:370
#, no-wrap
msgid "generate-pgpkeys-txt: static/pgpkeys/pgpkeys.txt\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:373
#, no-wrap
msgid ""
"static/pgpkeys/pgpkeys.txt: static/pgpkeys/*key\n"
"\t${RUBY_CMD} ./tools/global-pgpkeys-creator.rb\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:377
#, no-wrap
msgid ""
"run-local: .PHONY <.>\n"
"\tHUGO_DISABLELANGUAGES=\"${SKIP_LANGS}\" ${HUGO_CMD} server \\\n"
"\t\t${HUGO_ARGS} -D $(BIND:D--bind=$(BIND)) --baseURL=\"http://$(.HOST):1313\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:380
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:622
#, no-wrap
msgid ""
"build: .PHONY <.>\n"
"\tHUGO_DISABLELANGUAGES=\"${SKIP_LANGS}\" ${HUGO_CMD} ${HUGO_ARGS}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:383
#, no-wrap
msgid ""
"build-offline: .PHONY\n"
"\tHUGO_DISABLELANGUAGES=\"${SKIP_LANGS}\" ${HUGO_CMD} ${HUGO_OFFLINE_ARGS}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:386
#, no-wrap
msgid ""
"pgp-clean: .PHONY\n"
"\trm -f static/pgpkeys/pgpkeys.txt\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:389
#, no-wrap
msgid ""
"hugo-clean: .PHONY\n"
"\trm -rf resources public\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:395
#, no-wrap
msgid ""
"#\n"
"# PDF targets\n"
"# Use DOC_LANG to choose the language, e.g., make DOC_LANG=\"en fr\" pdf-books\n"
"#\n"
"pdf: pdf-articles pdf-books\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:400
#, no-wrap
msgid ""
"pdf-books: requirements-pdf\n"
".for _lang in ${BOOK_LANGS}\n"
"\t./tools/asciidoctor.sh books ${_lang} pdf\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:405
#, no-wrap
msgid ""
"pdf-articles: requirements-pdf\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\t./tools/asciidoctor.sh articles ${_lang} pdf\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:407
#, no-wrap
msgid "pdf-clean: pdf-articles-clean pdf-books-clean\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:414
#, no-wrap
msgid ""
"pdf-books-clean:\n"
".for _lang in ${BOOK_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/books\n"
"\t-rmdir ${.CURDIR}/public/${_lang}\n"
".endfor\n"
"\t-rmdir ${.CURDIR}/public/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:423
#, no-wrap
msgid ""
"pdf-articles-clean:\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/articles\n"
".if !exists(${.CURDIR}/public/${_lang}/books)\n"
"\trm -fr ${.CURDIR}/public/${_lang}\n"
".endif\n"
".endfor\n"
"\t-rmdir ${.CURDIR}/public\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:428
#, no-wrap
msgid ""
"#\n"
"# HTML targets\n"
"#\n"
"html: build-offline html-clean-global html-clean-articles html-clean-books html-archive html-archive-clean-files\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:430
#, no-wrap
msgid "html-clean: hugo-clean\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:434
#, no-wrap
msgid ""
"html-clean-global:\n"
"\trm -fr ${.CURDIR}/public/index.html\n"
"\trm -rf pgpkeys js\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:440
#, no-wrap
msgid ""
"html-clean-articles:\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/index.html\n"
"\trm -fr ${.CURDIR}/public/${_lang}/articles/index.html\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:445
#, no-wrap
msgid ""
"html-clean-books:\n"
".for _lang in ${BOOK_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/books/index.html\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:455
#, no-wrap
msgid ""
"html-archive:\n"
".if defined(DOC_HTML_ARCHIVE)\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\t./tools/asciidoctor.sh articles ${_lang} archive\n"
".endfor\n"
".for _lang in ${BOOK_LANGS}\n"
"\t./tools/asciidoctor.sh books ${_lang} archive\n"
".endfor\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:461
#, no-wrap
msgid ""
"html-archive-clean-files:\n"
".if defined(DOC_HTML_ARCHIVE)\n"
"\tfind ${.CURDIR}/public/ ! -name '*.pdf' ! -name '*.tar.gz' -type f -delete\n"
"\tfind ${.CURDIR}/public/ -type d -empty -delete\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:467
#, no-wrap
msgid ""
"#\n"
"# EPUB targets\n"
"# Use DOC_LANG to choose the language, e.g., make DOC_LANG=\"en fr\" epub-books\n"
"#\n"
"epub: epub-articles epub-books\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:480
#, no-wrap
msgid ""
"epub-books: requirements-epub\n"
"\t@echo ---------------------------------------------------------------\n"
"\t@echo !!! EPUB output is experimental !!!\n"
"\t@echo\n"
"\t@echo Asciidoctor EPUB3 is currently alpha software. Use accordingly. Although the\n"
"\t@echo bulk of AsciiDoc content is converted, there’s still work needed to fill in\n"
"\t@echo gaps where conversion is incomplete or unstyled.\n"
"\t@echo https://docs.asciidoctor.org/epub3-converter/latest/#project-status\n"
"\t@echo ---------------------------------------------------------------\n"
".for _lang in ${BOOK_LANGS}\n"
"\t./tools/asciidoctor.sh books ${_lang} epub\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:493
#, no-wrap
msgid ""
"epub-articles: requirements-epub\n"
"\t@echo ---------------------------------------------------------------\n"
"\t@echo !!! EPUB output is experimental !!!\n"
"\t@echo\n"
"\t@echo Asciidoctor EPUB3 is currently alpha software. Use accordingly. Although the\n"
"\t@echo bulk of AsciiDoc content is converted, there’s still work needed to fill in\n"
"\t@echo gaps where conversion is incomplete or unstyled.\n"
"\t@echo https://docs.asciidoctor.org/epub3-converter/latest/#project-status\n"
"\t@echo ---------------------------------------------------------------\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\t./tools/asciidoctor.sh articles ${_lang} epub\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:495
#, no-wrap
msgid "epub-clean: epub-articles-clean epub-books-clean\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:502
#, no-wrap
msgid ""
"epub-books-clean:\n"
".for _lang in ${BOOK_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/books\n"
"\t-rmdir ${.CURDIR}/public/${_lang}\n"
".endfor\n"
"\t-rmdir ${.CURDIR}/public/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:511
#, no-wrap
msgid ""
"epub-articles-clean:\n"
".for _lang in ${ARTICLE_LANGS}\n"
"\trm -fr ${.CURDIR}/public/${_lang}/articles\n"
".if !exists(${.CURDIR}/public/${_lang}/books)\n"
"\trm -fr ${.CURDIR}/public/${_lang}\n"
".endif\n"
".endfor\n"
"\t-rmdir ${.CURDIR}/public\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:514
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:636
msgid "The `MAINTAINER` flag specifies who is the maintainer of this Makefile."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:515
msgid ""
"`ALL_LANGUAGES` flag specifies in which languages the table of contents has "
"to be generated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:516
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:637
msgid "`RUBY_CMD` flag specifies the location of the Ruby binary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:517
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:638
msgid "`HUGO_CMD` flag specifies the location of the Hugo binary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:518
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:639
msgid ""
"`.ORDER` directives are used to ensure multiple make jobs may run without "
"problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:519
msgid ""
"`all` target builds the documentation and puts the result in *~/doc/"
"documentation/public*."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:520
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:641
msgid ""
"`starting-message` shows a message in the CLI to show the user that the "
"process is running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:521
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:644
msgid ""
"`run-local` runs hugo webserver on port 1313, or a random free port if that "
"is already in use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:522
msgid ""
"`build` builds the documentation and puts the result in the *~/doc/"
"documentation/public*."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:524
#, no-wrap
msgid "Website Makefile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:527
msgid "This [.filename]#Makefile# takes the form of:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:544
#, no-wrap
msgid ""
"# Generate the FreeBSD website\n"
"#\n"
"# Copyright (c) 2020-2021, The FreeBSD Documentation Project\n"
"# Copyright (c) 2020-2021, Sergio Carlavilla <carlavilla@FreeBSD.org>\n"
"#\n"
"# Targets intended for use on the command line\n"
"#\n"
"# all (default)\t-\tgenerate the releases.toml and compile all the website\n"
"# run\t-\t\t\tserves the built website for local browsing\n"
"#\n"
"# The run target uses hugo's built-in webserver to make the built website\n"
"# available for local browsing. The website should have been built prior\n"
"# to attempting to use the `run` target. By default, hugo will start its\n"
"# webserver on port 1313.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:549
#, no-wrap
msgid ""
"# List of all languages we have content for\n"
"ALL_LANGUAGES=\tde el en es fr hu it ja nl ru tr zh-cn zh-tw\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:557
#, no-wrap
msgid ""
"RUBY_CMD =\t${LOCALBASE}/bin/ruby <.>\n"
"HUGO_CMD =\t${LOCALBASE}/bin/hugo <.>\n"
"HUGO_ARGS?=\t--verbose\n"
"RUBYLIB =\t../shared/lib\n"
".export\tRUBYLIB\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:577
#, no-wrap
msgid ""
".if defined(DOC_LANG) && !empty(DOC_LANG)\n"
"LANGUAGES= ${DOC_LANG:S/,/ /g}\n"
".if ${LANGUAGES:Men} == \"\"\n"
".warning \"Warning: cannot skip 'en'; adding it back\"\n"
"LANGUAGES+=\ten\n"
".endif\n"
".else\n"
"LANGUAGES=\t${ALL_LANGUAGES}\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:586
#, no-wrap
msgid ""
"# Take the list of all languages, and take out the ones we have been\n"
"# asked for via DOC_LANG. We'll feed this to hugo.\n"
"SKIP_LANGS=\n"
".for a in ${ALL_LANGUAGES}\n"
".if ${LANGUAGES:M${a}} == \"\"\n"
"SKIP_LANGS+=\t${a}\n"
".endif\n"
".endfor\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:594
#, no-wrap
msgid ""
".ORDER: starting-message generate-releases\n"
".ORDER: starting-message build\n"
".ORDER: generate-releases build\n"
".ORDER: build post-build\n"
".ORDER: post-build end-message\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:598
#, no-wrap
msgid ""
"all: starting-message generate-releases build post-build end-message <.>\n"
"run: starting-message generate-releases run-local\n"
"clean: hugo-clean releases-clean\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:605
#, no-wrap
msgid ""
"starting-message: .PHONY <.>\n"
"\t@echo \"---------------------------------------------------------------\"\n"
"\t@echo \"Building the website started on $$(date)\"\n"
"\t@echo \" included languages: ${LANGUAGES}\"\n"
"\t@echo \" excluded languages: ${SKIP_LANGS}\"\n"
"\t@echo \"---------------------------------------------------------------\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:610
#, no-wrap
msgid ""
"end-message: .PHONY\n"
"\t@echo \"---------------------------------------------------------------\"\n"
"\t@echo \"Building the website completed on $$(date)\"\n"
"\t@echo \"---------------------------------------------------------------\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:612
#, no-wrap
msgid "generate-releases: data/releases.toml <.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:615
#, no-wrap
msgid ""
"data/releases.toml:\n"
"\t${RUBY_CMD} ./tools/releases-toml.rb\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:619
#, no-wrap
msgid ""
"run-local: .PHONY <.>\n"
"\tHUGO_DISABLELANGUAGES=\"${SKIP_LANGS}\" ${HUGO_CMD} server \\\n"
"\t ${HUGO_ARGS} -D $(BIND:D--bind=$(BIND)) --baseURL=\"http://$(.HOST):1313\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:624
#, no-wrap
msgid "post-build: cgi-permissions\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:627
#, no-wrap
msgid ""
"cgi-permissions:\n"
"\t@chmod 555 ./public/cgi/*.cgi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:630
#, no-wrap
msgid ""
"hugo-clean:\n"
"\trm -fr public resources\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:633
#, no-wrap
msgid ""
"releases-clean:\n"
"\trm -f data/releases.toml\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:640
msgid ""
"`all` target builds the website and puts the result in *~/doc/website/"
"public*."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:643
msgid ""
"`generate-releases` calls the script used to convert from AsciiDoc variables "
"to TOML variables. With this conversion, the releases variables can be used "
"in AsciiDoc and in the Hugo custom templates."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/doc-build/_index.adoc:644
msgid ""
"`build` builds the website and puts the result in the *~/doc/website/public*."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/editor-config/_index.po b/documentation/content/en/books/fdp-primer/editor-config/_index.po
index 4da5ca9cd8..98dce2722d 100644
--- a/documentation/content/en/books/fdp-primer/editor-config/_index.po
+++ b/documentation/content/en/books/fdp-primer/editor-config/_index.po
@@ -1,456 +1,555 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:1
#, no-wrap
msgid "Configuration used in the texts editors in the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:1
#, no-wrap
msgid "Chapter 12. Editor Configuration"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:13
#, no-wrap
msgid "Editor Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:51
msgid ""
"Adjusting your text editor configuration can make working on document files "
"quicker and easier, and help documents conform to FDP guidelines."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:53
#, no-wrap
msgid "Vim"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:57
msgid ""
"Install from package:editors/vim[], or package:editors/vim-console[], then "
"follow the configuration instructions in <<editor-config-vim-config>>. More "
"advanced users can use a proper linter like link:https://github.com/dense-"
"analysis/ale[Ale] which can also act as a Vim link:https://langserver.org/"
"[Language Server Protocol] client."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:59
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:273
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:326
#, no-wrap
msgid "Use"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:62
msgid ""
"Manual page writers can use the following keyboard shortcuts to reformat:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:63
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:64
msgid ""
"Press kbd:[P] to reformat paragraphs or text that has been selected in "
"Visual mode."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:64
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:65
msgid "Press kbd:[T] to replace groups of eight spaces with a tab."
msgstr ""
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:68
+msgid ""
+"A linter named link:https://vale.sh[Vale] has been introduced to check "
+"grammatical and cosmetic errors on the documents. Vale has support for "
+"various editors and IDEs."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:71
+msgid ""
+"Vale may already be installed as a dependency of the package:textproc/"
+"docproj[] meta-port. If not, install package:textproc/vale[] with:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:75
+#, no-wrap
+msgid "$ pkg install vale\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:78
+msgid ""
+"Install link:https://github.com/dense-analysis/ale[Ale] to integrate into "
+"package:editors/vim[], for using package:textproc/vale[]"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:83
+#, no-wrap
+msgid ""
+"% mkdir -p ~/.vim/pack/vendor/start\n"
+"% git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/vendor/start/ale\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:86
+msgid ""
+"Users who are using plugin managers for package:editors/vim[] do not need "
+"the above and should follow the instructions of that plugin manager to "
+"install link:https://github.com/dense-analysis/ale[Ale]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:89
+msgid ""
+"At this moment due to a bug in link:https://vale.sh[Vale] it is necessary to "
+"copy the link:https://vale.sh[Vale] configuration to the home directory. "
+"Considering the repository was cloned into [.filename]#~/doc# copy as "
+"following:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:93
+#, no-wrap
+msgid "% cp -R ~/doc/.vale* ~/\n"
+msgstr ""
+
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:66
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:210
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:96
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:260
#, no-wrap
msgid "Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:69
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:99
msgid "Edit [.filename]#~/.vimrc#, adding these lines to the end of the file:"
msgstr ""
+#. type: Block title
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:101
+#, no-wrap
+msgid "`~/.vimrc`"
+msgstr ""
+
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:76
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:107
#, no-wrap
msgid ""
"if has(\"autocmd\")\n"
" au BufNewFile,BufRead *.adoc call Set_ADOC()\n"
" au BufNewFile,BufRead *.[1-9] call Set_MAN()\n"
"endif \" has(autocmd)\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:81
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:112
#, no-wrap
msgid ""
"function Set_Highlights()\n"
" \"match ExtraWhitespace /^\\s* \\s*\\|\\s\\+$/\n"
" return 0\n"
"endfunction \" Set_Highlights_Adoc()\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:87
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:118
#, no-wrap
msgid ""
"function Set_Highlights_MAN()\n"
" highlight default link OverLength ErrorMsg\n"
" match OverLength /\\%71v.\\+/\n"
" return 0\n"
"endfunction \" Set_Highlights_MAN()\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:93
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:124
#, no-wrap
msgid ""
"function ShowSpecial()\n"
" setlocal list listchars=tab:>>,trail:*,eol:$\n"
" hi def link nontext ErrorMsg\n"
" return 0\n"
"endfunction \" ShowSpecial()\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:106
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:137
#, no-wrap
msgid ""
"function Set_COMMON()\n"
" setlocal number\n"
" setlocal shiftwidth=2\n"
" setlocal tabstop=8\n"
" setlocal softtabstop=2\n"
" setlocal formatprg=\"fmt -p\"\n"
" setlocal autoindent\n"
" setlocal smartindent\n"
" call ShowSpecial()\n"
" call Set_Highlights()\n"
" return 0\n"
"endfunction \" Set_COMMON()\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:113
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:144
#, no-wrap
msgid ""
"function Set_ADOC()\n"
" setlocal syntax=asciidoc\n"
" setlocal filetype=asciidoc\n"
" call Set_COMMON()\n"
" return 0\n"
"endfunction \" Set_ADOC()\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:126
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:157
#, no-wrap
msgid ""
"function Set_MAN()\n"
" setlocal syntax=man\n"
" setlocal filetype=man\n"
" setlocal textwidth=70\n"
" \" Rewrap paragraphs\n"
" noremap P gqj\n"
" \" Replace spaces with tabs\n"
" noremap T :s/ /\\t/<CR>\n"
" call Set_COMMON()\n"
" call Set_Highlights_MAN()\n"
" return 0\n"
"endfunction \" Set_Man()\n"
msgstr ""
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:165
+#, no-wrap
+msgid ""
+"let g:ale_fixers = {\n"
+"\\ '*': ['remove_trailing_lines', 'trim_whitespace'],\n"
+"\\}\n"
+"let g:ale_linters = {\n"
+"\\ 'asciidoc': ['vale'],\n"
+"\\}\n"
+"let g:ale_fix_on_save = 1\n"
+msgstr ""
+
+#. type: delimited block = 6
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:171
+msgid ""
+"Above configuration will automatically remove trailing line, trailing space "
+"and multiple spaces which might display additional unwanted changes in `git "
+"diff` output. In such cases properly mention that in the commit log."
+msgstr ""
+
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:129
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:174
#, no-wrap
msgid "Emacs"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:132
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:177
msgid "Install from package:editors/emacs[] or package:editors/emacs-devel[]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:134
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:179
#, no-wrap
msgid "Validation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:139
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:184
msgid ""
"Emacs's nxml-mode uses compact relax NG schemas for validating XML. A "
"compact relax NG schema for FreeBSD's extension to DocBook 5.0 is included "
"in the documentation repository. To configure nxml-mode to validate using "
"this schema, create [.filename]#~/.emacs.d/schema/schemas.xml# and add these "
"lines to the file:"
msgstr ""
+#. type: Block title
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:186
+#, no-wrap
+msgid "`~/.emacs.d/schema/schemas.xml`"
+msgstr ""
+
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:148
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:195
#, no-wrap
msgid ""
-"locatingRules xmlns=\"http://thaiopensource.com/ns/locating-rules/1.0\"\n"
-" documentElement localName=\"section\" typeId=\"DocBook\"\n"
-" documentElement localName=\"chapter\" typeId=\"DocBook\"\n"
-" documentElement localName=\"article\" typeId=\"DocBook\"\n"
-" documentElement localName=\"book\" typeId=\"DocBook\"\n"
-" typeId id=\"DocBook\" uri=\"/usr/local/share/xml/docbook/5.0/rng/docbook.rnc\"\n"
-"locatingRules\n"
+"<locatingRules xmlns=\"http://thaiopensource.com/ns/locating-rules/1.0\">\n"
+" <documentElement localName=\"section\" typeId=\"DocBook\" />\n"
+" <documentElement localName=\"chapter\" typeId=\"DocBook\" />\n"
+" <documentElement localName=\"article\" typeId=\"DocBook\" />\n"
+" <documentElement localName=\"book\" typeId=\"DocBook\" />\n"
+" <typeId id=\"DocBook\" uri=\"/usr/local/share/xml/docbook/5.0/rng/docbook.rnc\" />\n"
+"</locatingRules>\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:151
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:198
#, no-wrap
msgid "Automated Proofreading with Flycheck and Igor"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:155
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:202
msgid ""
-"The Flycheck package is available from Milkypostman's Emacs Lisp Package "
-"Archive (MELPA). If MELPA is not already in Emacs's packages-archives, it "
-"can be added by evaluating"
+"The link:https://www.flycheck.org/[Flycheck] package is available from link:"
+"https://melpa.org/[Milkypostman's Emacs Lisp Package Archive] (MELPA). If "
+"MELPA is not already in Emacs's packages-archives, it can be added by "
+"evaluating"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:158
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:206
#, no-wrap
msgid "(add-to-list 'package-archives '(\"melpa\" . \"http://stable.melpa.org/packages/\") t)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:161
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:209
msgid ""
"Add the line to Emacs's initialization file (one of [.filename]#~/.emacs#, [."
"filename]#~/.emacs.el#, or [.filename]#~.emacs.d/init.el#) to make this "
"change permanent."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:163
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:211
msgid "To install Flycheck, evaluate"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:166
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:215
#, no-wrap
msgid "(package-install 'flycheck)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:169
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:218
msgid "Create a Flycheck checker for package:textproc/igor[] by evaluating"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:173
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:223
#, no-wrap
msgid ""
"(flycheck-define-checker igor\n"
" \"FreeBSD Documentation Project sanity checker.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:180
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:230
#, no-wrap
msgid ""
"See URLs https://www.freebsd.org/docproj/ and\n"
"http://www.freshports.org/textproc/igor/.\"\n"
" :command (\"igor\" \"-X\" source-inplace)\n"
" :error-parser flycheck-parse-checkstyle\n"
" :modes (nxml-mode)\n"
" :standard-input t)\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:182
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:232
#, no-wrap
msgid " (add-to-list 'flycheck-checkers 'igor 'append)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:185
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:235
msgid ""
"Again, add these lines to Emacs's initialization file to make the changes "
"permanent."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:187
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:237
#, no-wrap
msgid "FreeBSD Documentation Specific Settings"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:190
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:240
msgid ""
"To apply settings specific to the FreeBSD documentation project, create [."
"filename]#.dir-locals.el# in the root directory of the documentation "
"repository and add these lines to the file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:194
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:244
#, no-wrap
msgid ""
";;; Directory Local Variables\n"
";;; For more information see (info \"(emacs) Directory Variables\")\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:202
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:252
#, no-wrap
msgid ""
"((nxml-mode\n"
" (eval . (turn-on-auto-fill))\n"
" (fill-column . 70)\n"
" (eval . (require 'flycheck))\n"
" (eval . (flycheck-mode 1))\n"
" (flycheck-checker . igor)\n"
" (eval . (add-to-list 'rng-schema-locating-files \"~/.emacs.d/schema/schemas.xml\"))))\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:205
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:255
#, no-wrap
msgid "nano"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:208
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:258
msgid "Install from package:editors/nano[] or package:editors/nano-devel[]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:213
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:264
msgid ""
"Currently there is no adoc/asciidoc syntax highlight file with nano "
-"distribution. So let's create one from scratch and use an editor to create "
+"distribution. So let's create one from scratch and use an editor to create "
"new file or add lines in the [.filename]#~/.nanorc# with these contents:"
msgstr ""
+#. type: Block title
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:266
+#, no-wrap
+msgid "`~/.nanorc`"
+msgstr ""
+
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:263
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:316
#, no-wrap
msgid ""
"syntax \"asciidoc\" \"\\.(adoc|asc|asciidoc)$\"\n"
"# main header\n"
"color red \"^====+$\"\n"
"# h1\n"
"color red \"^==[[:space:]].*$\"\n"
"color red \"^----+$\"\n"
"# h2\n"
"color magenta \"^===[[:space:]].*$\"\n"
"color magenta \"^~~~~+$\"\n"
"# h4\n"
"color green \"^====[[:space:]].*$\"\n"
"color green \"^\\^\\^\\^\\^+$\"\n"
"# h5\n"
"color brightblue \"^=====[[:space:]].*$\"\n"
"color brightblue \"^\\+\\+\\+\\++$\"\n"
"# attributes\n"
"color brightgreen \":.*:\"\n"
"color brightred \"\\{[a-z0-9]*\\}\"\n"
"color red \"\\\\\\{[a-z0-9]*\\}\"\n"
"color red \"\\+\\+\\+\\{[a-z0-9]*\\}\\+\\+\\+\"\n"
"# Paragraph Title\n"
"color yellow \"^\\..*$\"\n"
"# source\n"
"color magenta \"^\\[(source,.+|NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]\"\n"
"# Other markup\n"
"color yellow \".*[[:space:]]\\+$\"\n"
"color yellow \"_[^_]+_\"\n"
"color yellow \"\\*[^\\*]+\\*\"\n"
"color yellow \"\\+[^\\+]+\\+\"\n"
"color yellow \"`[^`]+`\"\n"
"color yellow \"\\^[^\\^]+\\^\"\n"
"color yellow \"~[^~]+~\"\n"
"color yellow \"'[^']+'\"\n"
"color cyan \"`{1,2}[^']+'{1,2}\"\n"
"# bullets\n"
"color brightmagenta \"^[[:space:]]*[\\*\\.-]{1,5}[[:space:]]\"\n"
"# anchors\n"
"color brightwhite \"\\[\\[.*\\]\\]\"\n"
"color brightwhite \"<<.*>>\"\n"
"# trailing whitespace\n"
"color ,blue \"[[:space:]]+$\"\n"
"# multiples of eight spaces at the start a line\n"
"# (after zero or more tabs) should be a tab\n"
"color ,blue \"^([TAB]*[ ]{8})+\"\n"
"# tabs after spaces\n"
"color ,yellow \"( )+TAB\"\n"
"# highlight indents that have an odd number of spaces\n"
"color ,red \"^(([ ]{2})+|(TAB+))*[ ]{1}[^ ]{1}\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:266
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:319
msgid "Process the file to create embedded tabs:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:270
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:323
#, no-wrap
msgid "% perl -i'' -pe 's/TAB/\\t/g' ~/.nanorc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:276
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:329
msgid "Specify additional helpful options when running the editor:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:280
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:333
#, no-wrap
msgid "% nano -AKipwz -T8 _index.adoc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:283
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:336
msgid ""
"Users of man:csh[1] can define an alias in [.filename]#~/.cshrc# to automate "
"these options:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:286
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:340
#, no-wrap
msgid "alias nano \"nano -AKipwz -r 70 -T8\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:289
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:343
msgid "After the alias is defined, the options will be added automatically:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:293
+#: documentation/content/en/books/fdp-primer/editor-config/_index.adoc:347
#, no-wrap
msgid "% nano _index.adoc\n"
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/overview/_index.po b/documentation/content/en/books/fdp-primer/overview/_index.po
index 2cfa9d67c8..d1d5080dce 100644
--- a/documentation/content/en/books/fdp-primer/overview/_index.po
+++ b/documentation/content/en/books/fdp-primer/overview/_index.po
@@ -1,569 +1,572 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:1
#, no-wrap
msgid "Overview about the FreeBSD Documentation Process"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:1
#, no-wrap
msgid "Chapter 1. Overview"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:13
#, no-wrap
msgid "Overview"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:52
msgid ""
"Welcome to the FreeBSD Documentation Project (FDP). Quality documentation "
"is crucial to the success of FreeBSD, and we value your contributions very "
"highly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:54
msgid ""
"This document describes how the FDP is organized, how to write and submit "
"documentation, and how to effectively use the available tools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:57
msgid ""
"Everyone is welcome to contribute to the FDP. Willingness to contribute is "
"the only membership requirement."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:59
msgid "This primer shows how to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:61
msgid "Understand the role of documentation and its place in the ecosystem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:62
msgid "Identify which parts of FreeBSD are maintained by the FDP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:63
msgid "Install the required documentation tools and files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:64
msgid "Make changes to the documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:65
msgid ""
"Submit changes back for review and inclusion in the FreeBSD documentation."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:67
#, no-wrap
msgid "Documentation in the FreeBSD Ecosystem"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:71
msgid ""
"All documents are for the benefit of their readers, not their writers or "
"caretakers. They should adapt to the reader and not expect the reader to "
"adapt to them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:73
msgid "Never blame the reader for:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:75
msgid "being unable to make use of a document easily or at all"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:76
msgid "finding a document confusing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:77
msgid "not understanding a document or how to apply it"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:78
msgid ""
"not finding an explicit answer or successfully bridging gaps (or connecting "
"dots) to reason their way to one"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:80
msgid "Instead, acknowledge that the document is:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:82
msgid "inaccessible"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:83
msgid "confusing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:84
msgid "hard to understand or apply"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:85
msgid "incomplete"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:87
msgid "Then, make the document:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:89
msgid "more accessible"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:90
msgid "less confusing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:91
msgid "clearer"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:92
msgid "more complete"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:94
msgid "Use the following methods:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:96
msgid ""
"apply link:https://webaim.org/intro/#principles[accessibility best "
"practices] to correct the problem reported and any similar ones you find"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:97
msgid "rework or clarify the confusing structure or language"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:98
msgid "add relevant examples to the part that is hard to understand or apply"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:99
msgid "fill in the gaps or add the missing stepping stones"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:101
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:107
msgid ""
"Some preparatory steps must be taken before editing the FreeBSD "
"documentation. First, subscribe to the {freebsd-doc}. Some team members "
"also interact on the `#bsddocs` IRC channel on http://www.efnet.org/"
"[EFnet]. These people can help with questions or problems involving the "
"documentation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:109
#, no-wrap
msgid "FreeBSD installation process"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:114
msgid ""
"Install these packages. The `docproj` _meta-port_ installs all the "
"applications required to do useful work with the FreeBSD documentation."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:118
#, no-wrap
msgid "# pkg install docproj\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:121
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:189
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:272
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:274
msgid ""
"Install a local working copy of the documentation from the FreeBSD "
"repository in [.filename]#~/doc# (see crossref:working-copy[working-copy,The "
"Working Copy])."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:125
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:193
#, no-wrap
msgid "% git clone https://git.FreeBSD.org/doc.git ~/doc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:128
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:196
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:279
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:281
msgid ""
"Edit the documentation files that require changes. If a file needs major "
"changes, consult the mailing list for input."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:131
msgid ""
"Review the output and edit the file to fix any problems shown, then rerun "
"the command to find any remaining problems. Repeat until all of the errors "
"are resolved."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:133
#, no-wrap
msgid "*_Always_* build and test the changes before submitting them. Running `make` in the top-level directory of the documentation will generate that documentation in HTML format.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:137
#, no-wrap
msgid "% make\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:140
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:208
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:290
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:292
msgid ""
"Add all the files with `git add .`, then review the diff with `git diff`. "
"For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:145
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:213
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:295
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:297
#, no-wrap
msgid ""
"% git add .\n"
"% git diff --staged\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:148
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:216
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:298
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:300
msgid ""
"Make sure that all required files are included, then commit the change to "
"your local branch and generate a patch with `git format-patch`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:153
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:221
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:303
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:305
#, no-wrap
msgid ""
"% git commit\n"
"% git format-patch origin/main\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:157
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:225
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:307
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:309
msgid ""
"Patch generated with `git format-patch` will include author identity and "
"email addresses, making it easier for developers to apply (with `git am`) "
"and give proper credit."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:162
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:230
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:312
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:314
msgid ""
"To make it easier for committers to apply the patch on their working copy of "
"the documentation tree, please generate the [.filename]#.diff# from the base "
"of your documentation tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:165
msgid ""
"In the example above, changes have been made to the *bsdinstall* portion of "
"the Handbook."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:167
msgid ""
"Submit the patch or diff file using the web-based https://bugs.FreeBSD.org/"
"bugzilla/enter_bug.cgi?product=Documentation[Problem Report] system. If "
"using the web form, enter a Summary of _[patch] short description of "
"problem_. Select the Component `Documentation`. In the Description field, "
"enter a short description of the changes and any important details about "
"them. Use the btn:[Add an attachment] button to attach the patch or diff "
"file. Finally, use the btn:[Submit Bug] button to submit your diff to the "
"problem report system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:170
#, no-wrap
msgid "GNU/Linux installation process"
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:177
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:248
msgid "Hugo version 0.90 or higher must be used"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:182
msgid ""
"Install these packages in apt-based systems like Debian or Ubuntu. On other "
"GNU/Linux distributions the package names may change. Consult your "
"distribution's package manager if in doubt."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:186
#, no-wrap
msgid "# apt install hugo ruby-asciidoctor ruby-asciidoctor-pdf ruby-rouge git bmake\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:199
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:282
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:284
msgid ""
"Review the output and edit the files to fix any problems shown, then rerun "
"the command to find any remaining problems. Repeat until all of the errors "
"are resolved."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:201
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:284
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:286
msgid ""
"Always build and test the changes before submitting them. Running `bmake` in "
"the top-level directory of the documentation will generate that "
"documentation in HTML format."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:205
#, no-wrap
msgid "% bmake run LOCALBASE=/usr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:238
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:320
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:322
msgid ""
"Submit the patch or diff file using the web-based https://bugs.FreeBSD.org/"
"bugzilla/enter_bug.cgi?product=Documentation[Problem Report] system. If "
"using the web form, enter a Summary of _short description of problem_. "
"Select the Component `Documentation`. In the Description field, enter a "
"short description of the problem in the _Summary_ field and add _patch_ to "
"the _Keywords_ field. Use the btn:[Add an attachment] button to attach the "
"patch or diff file. Finally, use the btn:[Submit Bug] button to submit your "
"diff to the problem report system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:241
#, no-wrap
msgid "macOS(R) installation process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:251
msgid ""
"Install these packages using link:https://brew.sh/[Homebrew] and link:"
"https://rubygems.org/[RubyGem]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:255
#, no-wrap
-msgid "$ brew install hugo ruby git bmake asciidoctor\n"
+msgid "$ brew install hugo ruby git bmake\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/overview/_index.adoc:258
msgid "Add Ruby to the Path."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:262
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:264
#, no-wrap
-msgid "$ echo 'export PATH=\"/usr/local/opt/ruby/bin:$PATH\"' >> ~/.zshrc\n"
+msgid ""
+"$ echo 'export GEM_PATH=\"/usr/local/lib/ruby/gems/3.1.0\"' >> ~/.zshrc\n"
+"$ echo 'export PATH=\"$(brew --prefix ruby)/bin:$PATH\"' >> ~/.zshrc\n"
+"$ source ~/.zshrc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:265
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:267
msgid "Install the rouge package using RubyGem."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:269
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:271
#, no-wrap
-msgid "$ sudo gem install rouge\n"
+msgid "$ sudo gem install rouge asciidoctor asciidoctor-pdf asciidoctor-epub3\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:276
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:278
#, no-wrap
msgid "$ git clone https://git.FreeBSD.org/doc.git ~/doc\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:288
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:290
#, no-wrap
-msgid "$ bmake run LOCALBASE=/usr\n"
+msgid "$ bmake run LOCALBASE=/usr USE_RUBYGEMS=YES\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:323
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:325
#, no-wrap
msgid "The FreeBSD Documentation Set"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:326
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:328
msgid "The FDP is responsible for four categories of FreeBSD documentation."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:328
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:330
msgid ""
"_Handbook_: The Handbook is the comprehensive online resource and reference "
"for FreeBSD users."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:329
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:331
msgid ""
"_FAQ_: The FAQ uses a short question and answer format to address questions "
"that are frequently asked on the various mailing lists and forums devoted to "
"FreeBSD. This format does not permit long and comprehensive answers."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:330
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:332
msgid ""
"_Manual pages_: The English language system manual pages are usually not "
"written by the FDP, as they are part of the base system. However, the FDP "
"can reword parts of existing manual pages to make them clearer or to correct "
"inaccuracies."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:331
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:333
msgid ""
"_Web site_: This is the main FreeBSD presence on the web, visible at https://"
"www.freebsd.org/[https://www.FreeBSD.org/] and many mirrors around the "
"world. The web site is typically a new user's first exposure to FreeBSD."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:334
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:336
msgid ""
"Translation teams are responsible for translating the Handbook and web site "
"into different languages. Manual pages are not translated at present."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:336
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:338
msgid ""
"Documentation source for the FreeBSD web site, Handbook, and FAQ is "
"available in the documentation repository at `https://cgit.freebsd.org/doc/`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:338
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:340
msgid ""
"Source for manual pages is available in a separate source repository located "
"at `https://cgit.freebsd.org/src/`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:341
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:343
msgid ""
"Documentation commit messages are visible with `git log`. Commit messages "
"are also archived at link:{dev-commits-doc-all}."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:343
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:345
msgid ""
"Web frontends to both of these repositories are available at https://cgit."
"freebsd.org/doc/[] and https://cgit.freebsd.org/src/[]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/overview/_index.adoc:347
+#: documentation/content/en/books/fdp-primer/overview/_index.adoc:349
msgid ""
"Many people have written tutorials or how-to articles about FreeBSD. Some "
"are stored as part of the FDP files. In other cases, the author has decided "
"to keep the documentation separate. The FDP endeavors to provide links to "
"as much of this external documentation as possible."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/structure/_index.po b/documentation/content/en/books/fdp-primer/structure/_index.po
index 73f89af3a5..5168195a5d 100644
--- a/documentation/content/en/books/fdp-primer/structure/_index.po
+++ b/documentation/content/en/books/fdp-primer/structure/_index.po
@@ -1,546 +1,579 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 10:28-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:1
#, no-wrap
msgid "Documentation Directory Structure explanation used in the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:1
#, no-wrap
msgid "Chapter 4. Documentation Directory Structure"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:13
#, no-wrap
msgid "Documentation Directory Structure"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:51
msgid "Files and directories in the *doc/* tree follow a structure meant to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:53
msgid "Make it easy to automate converting the document to other formats."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:54
msgid ""
"Promote consistency between the different documentation organizations, to "
"make it easier to switch between working on different documents."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:55
msgid ""
"Make it easy to decide where in the tree new documentation should be placed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:58
msgid ""
"In addition, the documentation tree must accommodate documents in many "
"different languages. It is important that the documentation tree structure "
"does not enforce any particular defaults or cultural preferences."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:60
#, no-wrap
msgid "The Top Level, doc/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:63
msgid ""
"There are three sections under *doc/*, documentation and website share the "
"same structure."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:67
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:96
#, no-wrap
msgid "Directory"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:69
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:99
#, no-wrap
msgid "Usage"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:70
#, no-wrap
msgid "*documentation*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:73
#, no-wrap
msgid ""
"Contains all the articles and books in AsciiDoc format.\n"
"Contains subdirectories to further categorize the information by languages."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:74
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:127
#, no-wrap
msgid "*tools*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:77
#, no-wrap
msgid ""
"Contains a set of tools used to translate the documentation and the website using link:https://weblate.org/en/[Weblate].\n"
"The Weblate instance can be found link:https://translate-dev.freebsd.org[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:78
#, no-wrap
msgid "*shared*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:82
#, no-wrap
msgid ""
"Contains files that are not specific to the various translations of the documentation.\n"
"Contains subdirectories to further categorize the information by languages and three files to store the authors, releases and mirrors information.\n"
"This directory is shared between `documentation` and the `website`."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:83
#, no-wrap
msgid "*website*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:85
#, no-wrap
msgid ""
"Contains the link:https://www.FreeBSD.org[FreeBSD website] in AsciiDoc format.\n"
"Contains subdirectories to further categorize the information by languages."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:88
#, no-wrap
msgid "The Directories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:92
msgid ""
"These directories contain the documentation and the website. The "
"documentation is organized into subdirectories below this level, following "
"the link:https://gohugo.io/getting-started/directory-structure/[Hugo "
"directory structure]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:100
#, no-wrap
msgid "*archetypes*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:103
#, no-wrap
msgid ""
"Contain templates to create new articles, books and webpages.\n"
"For more information take a look link:https://gohugo.io/content-management/archetypes/[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:104
#, no-wrap
msgid "*config*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:108
#, no-wrap
msgid ""
"Contain the Hugo configuration files.\n"
"One main file and one file per language.\n"
"For more information take a look link:https://gohugo.io/getting-started/configuration/[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:109
#, no-wrap
msgid "*content*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:112
#, no-wrap
msgid ""
"Contain the books, articles and webpages.\n"
"One directory exists for each available translation of the documentation, for example `en` and `zh-tw`."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:113
#, no-wrap
msgid "*data*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:117
#, no-wrap
msgid ""
"Contain custom data for build the website in link:https://en.wikipedia.org/wiki/TOML[TOML] format.\n"
"This directory is used to store the events, news, press, etc.\n"
"For more information take a look link:https://gohugo.io/templates/data-templates/[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:118
#, no-wrap
msgid "*static*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:122
#, no-wrap
msgid ""
"Contain static assets.\n"
"Images, security advisories, the pgpkeys, etc.\n"
"For more information take a look link:https://gohugo.io/content-management/static-files/[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:123
#, no-wrap
msgid "*themes*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:126
#, no-wrap
msgid ""
"Contain the templates in the form of `.html` files that specify how the website looks.\n"
"For more information take a look link:https://gohugo.io/templates/[here]."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:130
#, no-wrap
msgid ""
"Contain tools used to enhance the documentation build.\n"
"For example to generate the Table of Contents of the books, etc."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:131
#, no-wrap
msgid "*beastie.png*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:133
#, no-wrap
msgid "This image doesn't need an introduction ;)"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:134
#, no-wrap
msgid "*LICENSE*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:136
#, no-wrap
msgid "License of the documentation, shared and website. BSD 2-Clause License."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:137
#, no-wrap
msgid "*Makefile*"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:138
#, no-wrap
msgid "The *Makefile* defines the build process of the documentation and the website."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:141
#, no-wrap
msgid "Document-Specific Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:144
msgid ""
"This section contains specific notes about particular documents managed by "
"the FDP."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:146
#, no-wrap
msgid "The Books: books/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/structure/_index.adoc:149
msgid "The books are written in AsciiDoc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:153
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:152
msgid ""
-"The books are organized as an AsciiDoc `book`. The books are divided into "
-"``part``s, each of which contains several ``chapter``s. ``chapter``s are "
-"further subdivided into sections (`=`) and subsections (`==`, `===`) and so "
-"on."
+"For each FreeBSD book, the AsciiDoc document type (aka doctype) is `book`. "
+"Books have ``part``s, each of which contains several ``chapter``s."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:154
+msgid ""
+"When the document is converted to HTML 5 (using the built-in `html5` "
+"backend):"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:156
+msgid ""
+"AsciiDoc section level 0 (`=`) at the beginning of a ``chapter`` of a `book` "
+"will be `<h1>`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:157
+msgid ""
+"AsciiDoc section level 1 (`==`) must be used for the first logical section "
+"of a chapter, and will be `<h2>`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:158
+msgid ""
+"AsciiDoc section level 2 (`===`) must be used for the first logical "
+"subsection, and will be `<h3>`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:160
+msgid ""
+"– and so on. Reference: link:https://docs.asciidoctor.org/asciidoc/latest/"
+"sections/titles-and-levels/[Section Titles and Levels | Asciidoctor Docs]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:155
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:215
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:162
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:222
#, no-wrap
msgid "Physical Organization"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:158
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:165
msgid ""
"There are a number of files and directories within the books directory, all "
"with the same structure."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:160
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:220
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:167
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:227
#, no-wrap
msgid "_index.adoc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:163
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:170
msgid ""
-"The *_index.adoc* defines some AsciiDoc variables that affect how the "
+"The *_index.adoc* file defines some AsciiDoc variables that affect how the "
"AsciiDoc source is converted to other formats and list the Table of "
"Contents, Table of Examples, Table of Figures, Table of Tables and the "
"abstract section."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:165
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:172
#, no-wrap
msgid "book.adoc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:169
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:176
msgid ""
-"The *_index.adoc* defines some AsciiDoc variables that affect how the "
+"The *book.adoc* file defines some AsciiDoc variables that affect how the "
"AsciiDoc source is converted to other formats and list the Table of "
"Contents, Table of Examples, Table of Figures, Table of Tables, the abstract "
"section and all the chapters. This file is used to generate the PDF with "
"`asciidoctor-pdf` and to generate the book in one `html` page."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:171
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:178
#, no-wrap
msgid "part*.adoc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:173
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:180
msgid ""
-"The *part*.adoc* files stores a brief introduction of one part of the book."
+"The **part*.adoc** files store a brief introduction of one part of the book."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:175
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:182
#, no-wrap
msgid "directory/_index.adoc"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:178
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:185
msgid ""
"Each chapter in the Handbook is stored in a file called *_index.adoc* in a "
"separate directory from the other chapters."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:180
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:187
msgid "For example, this is an example of the header of one chapter:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:183
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:228
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:190
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:235
#, no-wrap
msgid "---\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:188
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:195
#, no-wrap
msgid ""
"title: Chapter 8. Configuring the FreeBSD Kernel\n"
"part: Part II. Common Tasks\n"
"prev: books/handbook/multimedia\n"
"next: books/handbook/printing\n"
"---\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:191
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:198
msgid "[[kernelconfig]]"
msgstr ""
#. type: Title =
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:191
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:198
#, no-wrap
msgid "Configuring the FreeBSD Kernel"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:193
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:200
msgid "..."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:196
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:203
msgid ""
"When the HTML5 version of the Handbook is produced, this will yield "
"*kernelconfig/index.html*."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:198
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:205
msgid ""
"A brief look will show that there are many directories with individual "
"*_index.adoc* files, including *basics/_index.adoc*, *introduction/_index."
"adoc*, and *printing/_index.adoc*."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:204
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:211
msgid ""
"Do not name chapters or directories after their ordering within the "
"Handbook. This ordering can change as the content within the Handbook is "
"reorganized. Reorganization should be possible without renaming files, "
"unless entire chapters are being promoted or demoted within the hierarchy."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:207
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:214
#, no-wrap
msgid "The Articles: articles/"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:210
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:217
msgid "The articles are written in AsciiDoc."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:213
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:220
msgid ""
"The articles are organized as an AsciiDoc `article`. The articles are "
"divided into sections (`=`) and subsections (`==`, `===`) and so on."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:218
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:225
msgid "There is one *_index.adoc* file per article."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:223
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:230
msgid ""
"The *_index.adoc* file contains all the AsciiDoc variables and the content."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:225
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:232
msgid ""
"For example, this is an example of one article, the structure is pretty "
"similar to one book chapter:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:234
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:241
#, no-wrap
msgid ""
"title: Why you should use a BSD style license for your Open Source Project\n"
"authors:\n"
" - author: Bruce Montague\n"
" email: brucem@alumni.cse.ucsc.edu\n"
"trademarks: [\"freebsd\", \"intel\", \"general\"]\n"
"---\n"
msgstr ""
#. type: Title =
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:236
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:243
#, no-wrap
msgid "Why you should use a BSD style license for your Open Source Project"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:245
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:252
msgid ""
":doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :"
"sectnumlevels: 6 :source-highlighter: rouge :experimental:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:247
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:254
msgid "'''"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:249
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:256
msgid "toc::[]"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:251
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:258
msgid "[[intro]]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/structure/_index.adoc:251
+#: documentation/content/en/books/fdp-primer/structure/_index.adoc:258
#, no-wrap
msgid "Introduction"
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/trademarks/_index.po b/documentation/content/en/books/fdp-primer/trademarks/_index.po
index d14e960561..d5788e45d2 100644
--- a/documentation/content/en/books/fdp-primer/trademarks/_index.po
+++ b/documentation/content/en/books/fdp-primer/trademarks/_index.po
@@ -1,163 +1,157 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-08-07 10:35-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:1
#, no-wrap
msgid "Guidelines for trademarks in the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:1
#, no-wrap
msgid "Chapter 13. Trademarks"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:13
#, no-wrap
msgid "Trademarks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:51
msgid ""
-"For all documents on the FreeBSD Documentation Project, it is necessary to "
-"cite registered trademarks, and that is a duty of every writer and "
-"contributor."
+"For all documents on the FreeBSD Documentation Project, citing registered "
+"trademarks is necessary and other trademarks is customary, and that is a "
+"requirement for every writer and contributor."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:53
#, no-wrap
msgid "Trademark Symbols"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:57
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:58
msgid ""
-"Add a registered trademark symbol (TM), (R), or other symbols in the first "
-"occurrence of the company or software name, and always when using logos. "
-"Also, write the company or software name following its trademark guidelines."
+"Append a trademark symbol ((TM), (R), or other) to the first occurrence of "
+"the trademarked name, and always when using logos. Use the extref:{fdp-"
+"primer}/writing-style/#writing-style-special-characters[equivalent ASCII "
+"sequence], which will be rendered as the actual Unicode character. Also, "
+"write the trademarked name following its trademark guidelines."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:59
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:60
msgid ""
-"When in doubt, research the company on the Internet or the software's "
-"website in addition to the link:https://www.uspto.gov/trademarks[United "
-"States Patent and Trademark Office site]."
+"When in doubt, research the trademark owner's website, the product's "
+"website, and or the link:https://www.uspto.gov/trademarks[United States "
+"Patent and Trademark Office trademark search website]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:61
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:62
#, no-wrap
msgid "Trademark Citing"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:64
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:65
msgid ""
-"It is customary to cite trademarks in technical documentation, and the "
-"FreeBSD Documentation Project provides a template for it, which also avoids "
-"duplicating trademarks in the documents."
+"The FreeBSD Documentation Project provides a template for citing trademarks, "
+"which also avoids duplicating trademarks in the documents."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:66
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:67
msgid ""
-"First, check the project's "
-"link:https://cgit.freebsd.org/doc/tree/documentation/themes/beastie/i18n/en.toml#n197[template] "
-"for the trademark and then add it to the trademarks tag on the `Front "
-"Matter` section of the document, placed at the beginning of each document."
+"First, look for the trademark in the link:https://cgit.freebsd.org/doc/tree/"
+"documentation/themes/beastie/i18n/en.toml#n328[Copyright section in the "
+"project's template], then add it to the trademarks tag on the `Front Matter` "
+"section of the document, located at the beginning of each document."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:68
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:69
msgid ""
-"The following is an example of the `Front Matter` of the "
-"extref:{contributing}[Contributing to FreeBSD] article:"
+"The following is an example of the `Front Matter` of the extref:"
+"{contributing}[Contributing to FreeBSD] article:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:70
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:71
#, no-wrap
msgid "---\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:80
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:81
#, no-wrap
msgid ""
"title: Contributing to FreeBSD\n"
"authors:\n"
" - author: Jordan Hubbard\n"
" - author: Sam Lawrance\n"
" - author: Mark Linimon\n"
"description: How to contribute to the FreeBSD Project\n"
"trademarks: [\"freebsd\", \"ieee\", \"general\"]\n"
"weight: 15\n"
-"tags: [\"Contributing\", \"FreeBSD\", \"Non-Programmer Tasks\", \"Programmer "
-"Tasks\"]\n"
+"tags: [\"Contributing\", \"FreeBSD\", \"Non-Programmer Tasks\", \"Programmer Tasks\"]\n"
"---\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:84
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:85
msgid ""
"The trademark tags `freebsd`, `ieee`, and `general` will be automatically "
"rendered when building the document like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:87
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:88
#, no-wrap
msgid "FreeBSD is a registered trademark of the FreeBSD Foundation.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:89
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:90
#, no-wrap
-msgid ""
-"IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical "
-"and Electronics Engineers, Inc. in the United States.\n"
+msgid "IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:91
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:92
#, no-wrap
-msgid ""
-"Many of the designations used by manufacturers and sellers to distinguish "
-"their products are claimed as trademarks. Where those designations appear in "
-"this document, and the FreeBSD Project was aware of the trademark claim, the "
-"designations have been followed by the “™” or the “®” symbol.\n"
+msgid "Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:95
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:96
msgid ""
"If a trademark is not present in the project's template, it must be "
"submitted. Any developer or contributor can update the trademarks."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:96
+#: documentation/content/en/books/fdp-primer/trademarks/_index.adoc:97
msgid ""
"The `freebsd` and `general` trademark tags are usually present in all "
"documents."
msgstr ""
diff --git a/documentation/content/en/books/fdp-primer/writing-style/_index.po b/documentation/content/en/books/fdp-primer/writing-style/_index.po
index 3e7dd5eaca..93538b0986 100644
--- a/documentation/content/en/books/fdp-primer/writing-style/_index.po
+++ b/documentation/content/en/books/fdp-primer/writing-style/_index.po
@@ -1,578 +1,857 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 10:28-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:1
#, no-wrap
msgid "Writing Style and some conventions used in the FreeBSD Documentation Project"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:1
#, no-wrap
msgid "Chapter 11. Writing Style"
msgstr ""
#. type: Title =
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:13
#, no-wrap
msgid "Writing Style"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:51
#, no-wrap
msgid "Tips"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:56
msgid ""
"Technical documentation can be improved by consistent use of several "
"principles. Most of these can be classified into three goals: _be clear_, "
"_be complete_, and _be concise_. These goals can conflict with each other. "
"Good writing consists of a balance between them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:58
#, no-wrap
msgid "Be Clear"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:63
msgid ""
"Clarity is extremely important. The reader may be a novice, or reading the "
"document in a second language. Strive for simple, uncomplicated text that "
"clearly explains the concepts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:67
msgid ""
"Avoid flowery or embellished speech, jokes, or colloquial expressions. "
"Write as simply and clearly as possible. Simple text is easier to "
"understand and translate."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:72
msgid ""
"Keep explanations as short, simple, and clear as possible. Avoid empty "
"phrases like \"in order to\", which usually just means \"to\". Avoid "
"potentially patronizing words like \"basically\". Avoid Latin terms like "
"\"i.e.,\" or \"cf.\", which may be unknown outside of academic or scientific "
"groups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:76
msgid ""
"Write in a formal style. Avoid addressing the reader as \"you\". For "
"example, say \"copy the file to [.filename]#/tmp#\" rather than \"you can "
"copy the file to [.filename]#/tmp#\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:84
msgid ""
"Give clear, correct, _tested_ examples. A trivial example is better than no "
"example. A good example is better yet. Do not give bad examples, "
"identifiable by apologies or sentences like \"but really it should never be "
"done that way\". Bad examples are worse than no examples. Give good "
"examples, because _even when warned not to use the example as shown_, the "
"reader will usually just use the example as shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:87
msgid ""
"Avoid _weasel words_ like \"should\", \"might\", \"try\", or \"could\". "
"These words imply that the speaker is unsure of the facts, and create doubt "
"in the reader."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:89
msgid ""
-"Similarly, give instructions as imperative commands: not \"you should do this"
-"\", but merely \"do this\"."
+"Similarly, give instructions as imperative commands: not \"you should do "
+"this\", but merely \"do this\"."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:91
#, no-wrap
msgid "Be Complete"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:97
msgid ""
"Do not make assumptions about the reader's abilities or skill level. Tell "
"them what they need to know. Give links to other documents to provide "
"background information without having to recreate it. Put yourself in the "
"reader's place, anticipate the questions they will ask, and answer them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:99
#, no-wrap
msgid "Be Concise"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:107
msgid ""
"While features should be documented completely, sometimes there is so much "
"information that the reader cannot easily find the specific detail needed. "
"The balance between being complete and being concise is a challenge. One "
"approach is to have an introduction, then a \"quick start\" section that "
"describes the most common situation, followed by an in-depth reference "
"section."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:109
#, no-wrap
msgid "Guidelines"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:113
msgid ""
"To promote consistency between the myriad authors of the FreeBSD "
"documentation, some guidelines have been drawn up for authors to follow."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:114
#, no-wrap
msgid "Use American English Spelling"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:118
msgid ""
"There are several variants of English, with different spellings for the same "
"word. Where spellings differ, use the American English variant. \"color\", "
"not \"colour\", \"rationalize\", not \"rationalise\", and so on."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:124
msgid ""
"The use of British English may be accepted in the case of a contributed "
"article, however the spelling must be consistent within the whole document. "
"The other documents such as books, web site, manual pages, etc. will have to "
"use American English."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:126
#, no-wrap
msgid "Do not use contractions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:130
msgid ""
"Do not use contractions. Always spell the phrase out in full. \"Don't use "
"contractions\" is wrong."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:132
msgid ""
"Avoiding contractions makes for a more formal tone, is more precise, and is "
"slightly easier for translators."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:133
#, no-wrap
msgid "Use the serial comma"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:136
msgid ""
"In a list of items within a paragraph, separate each item from the others "
"with a comma. Separate the last item from the others with a comma and the "
"word \"and\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:138
msgid "For example:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:140
msgid "This is a list of one, two and three items."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:142
msgid ""
"Is this a list of three items, \"one\", \"two\", and \"three\", or a list of "
"two items, \"one\" and \"two and three\"?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:144
msgid "It is better to be explicit and include a serial comma:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:146
msgid "This is a list of one, two, and three items."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:146
#, no-wrap
msgid "Avoid redundant phrases"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:149
msgid ""
"Do not use redundant phrases. In particular, \"the command\", \"the file\", "
"and \"man command\" are often redundant."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:151
msgid "For example, commands:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:153
msgid "Wrong: Use the `git` command to update sources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:155
msgid "Right: Use `git` to update sources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:157
msgid "Filenames:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:159
msgid "Wrong: ... in the filename [.filename]#/etc/rc.local#..."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:161
msgid "Right: ... in [.filename]#/etc/rc.local#..."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:163
msgid ""
"Manual page references (the second example uses `citerefentry` with the man:"
"csh[1] entity):."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:165
msgid "Wrong: See `man csh` for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:167
msgid "Right: See man:csh[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:169
msgid ""
"For more information about writing style, see http://www.bartleby.com/141/"
"[Elements of Style], by William Strunk."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:171
#, no-wrap
msgid "Style Guide"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:174
msgid ""
"To keep the source for the documentation consistent when many different "
"people are editing it, please follow these style conventions."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:176
#, no-wrap
msgid "One sentence per line"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:181
msgid ""
"Use Semantic Line Breaks in the documentation, a technique called \"one "
"sentence per line\". The idea of this technique is to help the users to "
"write and read documentation. To get more information about this technique "
"read the link:https://sembr.org/[Semantic Line Breaks] page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:183
-msgid "This is an example which don't use \"one sentence per line\"."
+msgid "This is an example which does not use \"one sentence per line\"."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:186
#, no-wrap
msgid "All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:189
msgid "And this is an example which uses the technique."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:193
#, no-wrap
msgid ""
"All human beings are born free and equal in dignity and rights.\n"
"They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:196
#, no-wrap
msgid "Acronyms"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:201
msgid ""
"Acronyms should be defined the first time they appear in a document, as in: "
"\"Network Time Protocol (NTP)\". After the acronym has been defined, use "
"the acronym alone unless it makes more sense contextually to use the whole "
"term. Acronyms are usually defined only once per chapter or per document."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:203
msgid "All acronyms should be enclosed using the ` character."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:205
#, no-wrap
msgid "Special Character List"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:209
msgid ""
"This list of special characters shows the correct syntax and the output when "
"used in FreeBSD documentation. If a character is not on this list, ask "
"about it on the {freebsd-doc}."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:214
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:269
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:215
#, no-wrap
msgid "Syntax"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:218
#, no-wrap
msgid "Rendered"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:219
#, no-wrap
msgid "Copyright"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:220
#, no-wrap
msgid "+(C)+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:222
#, no-wrap
msgid "(C)"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:223
#, no-wrap
msgid "Registered"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:224
#, no-wrap
msgid "+(R)+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:226
#, no-wrap
msgid "(R)"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:227
#, no-wrap
msgid "Trademark"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:228
#, no-wrap
msgid "+(TM)+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:230
#, no-wrap
msgid "(TM)"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:231
#, no-wrap
msgid "Em dash"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:232
#, no-wrap
msgid "+--+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:234
#, no-wrap
msgid "--"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:235
#, no-wrap
msgid "Ellipses"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:236
#, no-wrap
msgid "+...+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:238
#, no-wrap
msgid "..."
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:239
#, no-wrap
msgid "Single right arrow"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:240
#, no-wrap
msgid "+->+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:242
#, no-wrap
msgid "->"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:243
#, no-wrap
msgid "Double right arrow"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:244
#, no-wrap
msgid "+=>+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:246
#, no-wrap
msgid "=>"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:247
#, no-wrap
msgid "Single left arrow"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:248
#, no-wrap
msgid "+<-+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:250
#, no-wrap
msgid "<-"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:251
#, no-wrap
msgid "Double left arrow"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:252
#, no-wrap
msgid "+<=+"
msgstr ""
#. type: Table
#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:254
#, no-wrap
msgid "<="
msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:257
+#, no-wrap
+msgid "Linting with Vale"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:262
+msgid ""
+"To maintain clarity and consistency across all documentation and website "
+"pages, link:https://vale.sh[Vale] styles have been introduced in the "
+"documentation tree. link:https://vale.sh[Vale] is a powerful linter for "
+"writing customized rules and can be used in multiple scenarios. At this "
+"moment link:https://vale.sh[Vale] can be used as a command line tool, for CI/"
+"CD pipeline and integrated into editor of choice."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:264
+msgid ""
+"The following table describes the current rule names and respective severity."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:271
+#, no-wrap
+msgid "Severity"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:272
+#, no-wrap
+msgid "BrandTerms"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:274
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:295
+#, no-wrap
+msgid "error"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:275
+#, no-wrap
+msgid "ConsciousLanguage"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:277
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:283
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:286
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:289
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:292
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:298
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:301
+#, no-wrap
+msgid "warning"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:278
+#, no-wrap
+msgid "Contractions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:280
+#, no-wrap
+msgid "suggestions"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:281
+#, no-wrap
+msgid "EOLSpacing"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:284
+#, no-wrap
+msgid "Hang"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:287
+#, no-wrap
+msgid "Hyphens"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:290
+#, no-wrap
+msgid "Repetition"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:293
+#, no-wrap
+msgid "Spacing"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:296
+#, no-wrap
+msgid "Spelling"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:299
+#, no-wrap
+msgid "Weasel"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:304
+#, no-wrap
+msgid "Current Vale Rules"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:309
+msgid ""
+"BrandTerms: Like The FreeBSD Project every major vendors and Companies have "
+"specific rules on writing their Brand Name. according to the Copyright rules "
+"of The FreeBSD Foundation *freebsd* should be written as *FreeBSD*. Similar "
+"to that care should be taken to be respective to other's brand value and "
+"write PostgreSQL, Node.js, Let's Encrypt etc. Missing brand names should be "
+"added to the [.filename]#.vale/styles/FreeBSD/BrandTerms.yml#\" in the `doc` "
+"repository."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:311
+msgid ""
+"Contractions: Contracted words should not be used. This rule avoids all "
+"contractions and suggests full words."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:314
+msgid ""
+"Hang: `Hang` is often used to convey the meaning that the application has "
+"stopped responding. This rule proposes better wording."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:317
+msgid ""
+"Repetition: Same words are often typed twice when leaving the keyboard and "
+"rejoining the work again. This rule finds repeated words and warns the "
+"users."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:321
+msgid ""
+"Weasel: This rule handles avoiding weasel words. The uses of weasel words "
+"is controversial so at the moment the list of words are being evaluated and "
+"the severity level is marked as warning on. In case a frequently used word "
+"is marked as weasel word it should be removed from [.filename]#.vale/styles/"
+"FreeBSD/Weasel.yml#\" in the `doc` repository."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:323
+msgid ""
+"ConsciousLanguage: This rule proposes uses of conscious languages like "
+"avoiding the words white/black/master/slave."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:325
+msgid ""
+"EOLSpacing: In most of the documents EOL spacing is present which is not the "
+"desirable situation."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:327
+msgid ""
+"Hyphens: Often adverbs ending with 'ly' are being added with a hyphen which "
+"is wrong."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:329
+msgid ""
+"Spacing: Often double spaces are hard to catch on plain eye which is "
+"addressed here."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:334
+msgid ""
+"Spelling: At the moment there is a mix of en_US and en_UK spellings in the "
+"documentation and website. A custom dictionary from link:https://wordlist."
+"aspell.net[Aspell] has been added which uses strictly en_US and do not "
+"accept the en_UK variant of any words. It has also an exception list to "
+"ignore the FreeBSD specific terms. At the moment the list is a basic one "
+"with minimal words just as a proof of concept but if any word is found to be "
+"correct and not available in the dictionary the word should be added to the "
+"[.filename]#.vale/styles/FreeBSD/spelling-exceptions.txt#\" in the `doc` "
+"repository."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:336
+msgid ""
+"More rules will be introduced in the upcoming days when and where required."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:338
+#, no-wrap
+msgid "Using Vale"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:342
+msgid ""
+"link:https://vale.sh[Vale] can be used from command line and from within "
+"editor or IDE. package:textproc/vale[] can be installed as following:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:346
+#, no-wrap
+msgid "$ pkg install vale\n"
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:349
+#, no-wrap
+msgid "Using Vale in command line"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:352
+msgid ""
+"Considering the fact that `doc` repository was cloned into [.filename]#~/"
+"doc#\" the following commands are required to run:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:357
+#, no-wrap
+msgid ""
+"% cd ~/doc\n"
+"% vale .\n"
+msgstr ""
+
+#. type: delimited block = 6
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:363
+msgid ""
+"link:https://vale.sh[Vale] is a CPU and memory intensive program due to the "
+"nature of the application and can take a while to show any output on the "
+"screen. Better way to run the application is on specific folders or files "
+"rather than the entire `doc` repository as that is already done in the CI "
+"pipeline."
+msgstr ""
+
+#. type: Title ====
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:366
+#, no-wrap
+msgid "Using Vale in editors"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/fdp-primer/writing-style/_index.adoc:370
+msgid ""
+"link:https://vale.sh[Vale] works with major mainstream editors like package:"
+"editors/vim[], package:editors/emacs[], package:editors/vscode[]. At the "
+"moment the necessary configurations for package:editors/vim[] is described "
+"in crossref:editor-config[editor-config-vim, Vim]. Necessary configurations "
+"for package:editors/emacs[] is being worked on."
+msgstr ""
diff --git a/documentation/content/en/books/handbook/advanced-networking/_index.po b/documentation/content/en/books/handbook/advanced-networking/_index.po
index a54519b71b..c5acaaaa16 100644
--- a/documentation/content/en/books/handbook/advanced-networking/_index.po
+++ b/documentation/content/en/books/handbook/advanced-networking/_index.po
@@ -1,6431 +1,6431 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1
#, no-wrap
msgid "Advanced networking in FreeBSD: basics of gateways and routes, CARP, how to configure multiple VLANs on FreeBSD, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1
#, no-wrap
-msgid "Chapter 32. Advanced Networking"
+msgid "Chapter 33. Advanced Networking"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:15
#, no-wrap
msgid "Advanced Networking"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:56
msgid "This chapter covers a number of advanced networking topics."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:58
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:60
msgid "The basics of gateways and routes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:61
msgid "How to set up USB tethering."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:62
msgid "How to set up IEEE(R) 802.11 and Bluetooth(R) devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:63
msgid "How to make FreeBSD act as a bridge."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:64
msgid "How to set up network PXE booting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:65
msgid "How to set up IPv6 on a FreeBSD machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:66
msgid ""
"How to enable and utilize the features of the Common Address Redundancy "
"Protocol (CARP) in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:67
msgid "How to configure multiple VLANs on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:68
msgid "Configure bluetooth headset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:70
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:72
msgid "Understand the basics of the [.filename]#/etc/rc# scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:73
msgid "Be familiar with basic network terminology."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:74
msgid ""
"Know how to configure and install a new FreeBSD kernel (crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:75
msgid ""
"Know how to install additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:77
#, no-wrap
msgid "Gateways and Routes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:86
msgid ""
"_Routing_ is the mechanism that allows a system to find the network path to "
"another system. A _route_ is a defined pair of addresses which represent "
"the \"destination\" and a \"gateway\". The route indicates that when trying "
"to get to the specified destination, send the packets through the specified "
"gateway. There are three types of destinations: individual hosts, subnets, "
"and \"default\". The \"default route\" is used if no other routes apply. "
"There are also three types of gateways: individual hosts, interfaces, also "
"called links, and Ethernet hardware (MAC) addresses. Known routes are "
"stored in a routing table."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:89
msgid ""
"This section provides an overview of routing basics. It then demonstrates "
"how to configure a FreeBSD system as a router and offers some "
"troubleshooting tips."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:91
#, no-wrap
msgid "Routing Basics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:94
msgid "To view the routing table of a FreeBSD system, use man:netstat[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:99
#, no-wrap
msgid ""
"% netstat -r\n"
"Routing tables\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:111
#, no-wrap
msgid ""
"Internet:\n"
"Destination Gateway Flags Refs Use Netif Expire\n"
"default outside-gw UGS 37 418 em0\n"
"localhost localhost UH 0 181 lo0\n"
"test0 0:e0:b5:36:cf:4f UHLW 5 63288 re0 77\n"
"10.20.30.255 link#1 UHLW 1 2421\n"
"example.com link#1 UC 0 0\n"
"host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0\n"
"host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>\n"
"host2.example.com link#1 UC 0 0\n"
"224 link#1 UC 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:114
msgid "The entries in this example are as follows:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:115
#, no-wrap
msgid "default"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:119
msgid ""
"The first route in this table specifies the `default` route. When the local "
"system needs to make a connection to a remote host, it checks the routing "
"table to determine if a known path exists. If the remote host matches an "
"entry in the table, the system checks to see if it can connect using the "
"interface specified in that entry."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:123
msgid ""
"If the destination does not match an entry, or if all known paths fail, the "
"system uses the entry for the default route. For hosts on a local area "
"network, the `Gateway` field in the default route is set to the system which "
"has a direct connection to the Internet. When reading this entry, verify "
"that the `Flags` column indicates that the gateway is usable (`UG`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:125
msgid ""
"The default route for a machine which itself is functioning as the gateway "
"to the outside world will be the gateway machine at the Internet Service "
"Provider (ISP)."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:126
#, no-wrap
msgid "localhost"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:130
msgid ""
"The second route is the `localhost` route. The interface specified in the "
"`Netif` column for `localhost` is [.filename]#lo0#, also known as the "
"loopback device. This indicates that all traffic for this destination "
"should be internal, rather than sending it out over the network."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:131
#, no-wrap
msgid "MAC address"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:137
msgid ""
"The addresses beginning with `0:e0:` are MAC addresses. FreeBSD will "
"automatically identify any hosts, `test0` in the example, on the local "
"Ethernet and add a route for that host over the Ethernet interface, [."
"filename]#re0#. This type of route has a timeout, seen in the `Expire` "
"column, which is used if the host does not respond in a specific amount of "
"time. When this happens, the route to this host will be automatically "
"deleted. These hosts are identified using the Routing Information Protocol "
"(RIP), which calculates routes to local hosts based upon a shortest path "
"determination."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:138
#, no-wrap
msgid "subnet"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:142
msgid ""
"FreeBSD will automatically add subnet routes for the local subnet. In this "
"example, `10.20.30.255` is the broadcast address for the subnet `10.20.30` "
"and `example.com` is the domain name associated with that subnet. The "
"designation `link#1` refers to the first Ethernet card in the machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:145
msgid ""
"Local network hosts and local subnets have their routes automatically "
"configured by a daemon called man:routed[8]. If it is not running, only "
"routes which are statically defined by the administrator will exist."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:146
#, no-wrap
msgid "host"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:149
msgid ""
"The `host1` line refers to the host by its Ethernet address. Since it is "
"the sending host, FreeBSD knows to use the loopback interface ([."
"filename]#lo0#) rather than the Ethernet interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:153
msgid ""
"The two `host2` lines represent aliases which were created using man:"
"ifconfig[8]. The `=>` symbol after the [.filename]#lo0# interface says that "
"an alias has been set in addition to the loopback address. Such routes only "
"show up on the host that supports the alias and all other hosts on the local "
"network will have a `link#1` line for such routes."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:154
#, no-wrap
msgid "224"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:156
msgid "The final line (destination subnet `224`) deals with multicasting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:159
msgid ""
"Various attributes of each route can be seen in the `Flags` column. "
"<<routeflags>> summarizes some of these flags and their meanings:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:161
#, no-wrap
msgid "Commonly Seen Routing Table Flags"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:165
#, no-wrap
msgid "Command"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:167
#, no-wrap
msgid "Purpose"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:168
#, no-wrap
msgid "U"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:170
#, no-wrap
msgid "The route is active (up)."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:171
#, no-wrap
msgid "H"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:173
#, no-wrap
msgid "The route destination is a single host."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:174
#, no-wrap
msgid "G"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:176
#, no-wrap
msgid "Send anything for this destination on to this gateway, which will figure out from there where to send it."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:177
#, no-wrap
msgid "S"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:179
#, no-wrap
msgid "This route was statically configured."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:180
#, no-wrap
msgid "C"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:182
#, no-wrap
msgid "Clones a new route based upon this route for machines to connect to. This type of route is normally used for local networks."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:183
#, no-wrap
msgid "W"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:185
#, no-wrap
msgid "The route was auto-configured based upon a local area network (clone) route."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:186
#, no-wrap
msgid "L"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:187
#, no-wrap
msgid "Route involves references to Ethernet (link) hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:190
msgid ""
"On a FreeBSD system, the default route can defined in [.filename]#/etc/rc."
"conf# by specifying the IP address of the default gateway:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:194
#, no-wrap
msgid "defaultrouter=\"10.20.30.1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:197
msgid "It is also possible to manually add the route using `route`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:201
#, no-wrap
msgid "# route add default 10.20.30.1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:205
msgid ""
"Note that manually added routes will not survive a reboot. For more "
"information on manual manipulation of network routing tables, refer to man:"
"route[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:207
#, no-wrap
msgid "Configuring a Router with Static Routes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:212
msgid ""
"A FreeBSD system can be configured as the default gateway, or router, for a "
"network if it is a dual-homed system. A dual-homed system is a host which "
"resides on at least two different networks. Typically, each network is "
"connected to a separate network interface, though IP aliasing can be used to "
"bind multiple addresses, each on a different subnet, to one physical "
"interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:215
msgid ""
"In order for the system to forward packets between interfaces, FreeBSD must "
"be configured as a router. Internet standards and good engineering practice "
"prevent the FreeBSD Project from enabling this feature by default, but it "
"can be configured to start at boot by adding this line to [.filename]#/etc/"
"rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:219
#, no-wrap
msgid "gateway_enable=\"YES\" # Set to YES if this host will be a gateway\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:223
msgid ""
"To enable routing now, set the man:sysctl[8] variable `net.inet.ip."
"forwarding` to `1`. To stop routing, reset this variable to `0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:227
msgid ""
"The routing table of a router needs additional routes so it knows how to "
"reach other networks. Routes can be either added manually using static "
"routes or routes can be automatically learned using a routing protocol. "
"Static routes are appropriate for small networks and this section describes "
"how to add a static routing entry for a small network."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:233
msgid ""
"For large networks, static routes quickly become unscalable. FreeBSD comes "
"with the standard BSD routing daemon man:routed[8], which provides the "
"routing protocols RIP, versions 1 and 2, and IRDP. Support for the BGP and "
-"OSPF routing protocols can be installed using the package:net/zebra[] "
+"OSPF routing protocols can be installed using the package:net/quagga[] "
"package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:236
msgid "Consider the following network:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:237
#, no-wrap
msgid "static-routes.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:242
msgid ""
"In this scenario, `RouterA` is a FreeBSD machine that is acting as a router "
"to the rest of the Internet. It has a default route set to `10.0.0.1` which "
"allows it to connect with the outside world. `RouterB` is already "
"configured to use `192.168.1.1` as its default gateway."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:244
msgid ""
"Before adding any static routes, the routing table on `RouterA` looks like "
"this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:249
#, no-wrap
msgid ""
"% netstat -nr\n"
"Routing tables\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:256
#, no-wrap
msgid ""
"Internet:\n"
"Destination Gateway Flags Refs Use Netif Expire\n"
"default 10.0.0.1 UGS 0 49378 xl0\n"
"127.0.0.1 127.0.0.1 UH 0 6 lo0\n"
"10.0.0.0/24 link#1 UC 0 0 xl0\n"
"192.168.1.0/24 link#2 UC 0 0 xl1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:260
msgid ""
"With the current routing table, `RouterA` does not have a route to the "
"`192.168.2.0/24` network. The following command adds the `Internal Net 2` "
"network to ``RouterA``'s routing table using `192.168.1.2` as the next hop:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:264
#, no-wrap
msgid "# route add -net 192.168.2.0/24 192.168.1.2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:269
msgid ""
"Now, `RouterA` can reach any host on the `192.168.2.0/24` network. However, "
"the routing information will not persist if the FreeBSD system reboots. If "
"a static route needs to be persistent, add it to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:275
#, no-wrap
msgid ""
"# Add Internal Net 2 as a persistent static route\n"
"static_routes=\"internalnet2\"\n"
"route_internalnet2=\"-net 192.168.2.0/24 192.168.1.2\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:279
msgid ""
"The `static_routes` configuration variable is a list of strings separated by "
"a space, where each string references a route name. The variable "
"`route_internalnet2` contains the static route for that route name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:282
msgid ""
"Using more than one string in `static_routes` creates multiple static "
"routes. The following shows an example of adding static routes for the "
"`192.168.0.0/24` and `192.168.1.0/24` networks:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:288
#, no-wrap
msgid ""
"static_routes=\"net1 net2\"\n"
"route_net1=\"-net 192.168.0.0/24 192.168.0.1\"\n"
"route_net2=\"-net 192.168.1.0/24 192.168.1.1\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:291
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1366
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1881
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:295
msgid ""
"When an address space is assigned to a network, the service provider "
"configures their routing tables so that all traffic for the network will be "
"sent to the link for the site. But how do external sites know to send their "
"packets to the network's ISP?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:298
msgid ""
"There is a system that keeps track of all assigned address spaces and "
"defines their point of connection to the Internet backbone, or the main "
"trunk lines that carry Internet traffic across the country and around the "
"world. Each backbone machine has a copy of a master set of tables, which "
"direct traffic for a particular network to a specific backbone carrier, and "
"from there down the chain of service providers until it reaches a particular "
"network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:301
msgid ""
"It is the task of the service provider to advertise to the backbone sites "
"that they are the point of connection, and thus the path inward, for a "
"site. This is known as route propagation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:305
msgid ""
"Sometimes, there is a problem with route propagation and some sites are "
"unable to connect. Perhaps the most useful command for trying to figure out "
"where routing is breaking down is `traceroute`. It is useful when `ping` "
"fails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:309
msgid ""
"When using `traceroute`, include the address of the remote host to connect "
"to. The output will show the gateway hosts along the path of the attempt, "
"eventually either reaching the target host, or terminating because of a lack "
"of connection. For more information, refer to man:traceroute[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:311
#, no-wrap
msgid "Multicast Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:316
msgid ""
"FreeBSD natively supports both multicast applications and multicast "
"routing. Multicast applications do not require any special configuration in "
"order to run on FreeBSD. Support for multicast routing requires that the "
"following option be compiled into a custom kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:320
#, no-wrap
msgid "options MROUTING\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:326
msgid ""
"The multicast routing daemon, mrouted can be installed using the package:net/"
"mrouted[] package or port. This daemon implements the DVMRP multicast "
"routing protocol and is configured by editing [.filename]#/usr/local/etc/"
"mrouted.conf# in order to set up the tunnels and DVMRP. The installation of "
"mrouted also installs map-mbone and mrinfo, as well as their associated man "
"pages. Refer to these for configuration examples."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:331
msgid ""
"DVMRP has largely been replaced by the PIM protocol in many multicast "
"installations. Refer to man:pim[4] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:334
#, no-wrap
msgid "Wireless Networking"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:336
#, no-wrap
msgid "Wireless Networking Basics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:340
msgid ""
"Most wireless networks are based on the IEEE(R) 802.11 standards. A basic "
"wireless network consists of multiple stations communicating with radios "
"that broadcast in either the 2.4GHz or 5GHz band, though this varies "
"according to the locale and is also changing to enable communication in the "
"2.3GHz and 4.9GHz ranges."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:346
msgid ""
"802.11 networks are organized in two ways. In _infrastructure mode_, one "
"station acts as a master with all the other stations associating to it, the "
"network is known as a BSS, and the master station is termed an access point "
"(AP). In a BSS, all communication passes through the AP; even when one "
"station wants to communicate with another wireless station, messages must go "
"through the AP. In the second form of network, there is no master and "
"stations communicate directly. This form of network is termed an IBSS and "
"is commonly known as an _ad-hoc network_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:351
msgid ""
"802.11 networks were first deployed in the 2.4GHz band using protocols "
"defined by the IEEE(R) 802.11 and 802.11b standard. These specifications "
"include the operating frequencies and the MAC layer characteristics, "
"including framing and transmission rates, as communication can occur at "
"various rates. Later, the 802.11a standard defined operation in the 5GHz "
"band, including different signaling mechanisms and higher transmission "
"rates. Still later, the 802.11g standard defined the use of 802.11a "
"signaling and transmission mechanisms in the 2.4GHz band in such a way as to "
"be backwards compatible with 802.11b networks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:364
msgid ""
"Separate from the underlying transmission techniques, 802.11 networks have a "
"variety of security mechanisms. The original 802.11 specifications defined "
"a simple security protocol called WEP. This protocol uses a fixed pre-"
"shared key and the RC4 cryptographic cipher to encode data transmitted on a "
"network. Stations must all agree on the fixed key in order to communicate. "
"This scheme was shown to be easily broken and is now rarely used except to "
"discourage transient users from joining networks. Current security practice "
"is given by the IEEE(R) 802.11i specification that defines new cryptographic "
"ciphers and an additional protocol to authenticate stations to an access "
"point and exchange keys for data communication. Cryptographic keys are "
"periodically refreshed and there are mechanisms for detecting and countering "
"intrusion attempts. Another security protocol specification commonly used "
"in wireless networks is termed WPA, which was a precursor to 802.11i. WPA "
"specifies a subset of the requirements found in 802.11i and is designed for "
"implementation on legacy hardware. Specifically, WPA requires only the TKIP "
"cipher that is derived from the original WEP cipher. 802.11i permits use of "
"TKIP but also requires support for a stronger cipher, AES-CCM, for "
"encrypting data. The AES cipher was not required in WPA because it was "
"deemed too computationally costly to be implemented on legacy hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:369
msgid ""
"The other standard to be aware of is 802.11e. It defines protocols for "
"deploying multimedia applications, such as streaming video and voice over IP "
"(VoIP), in an 802.11 network. Like 802.11i, 802.11e also has a precursor "
"specification termed WME (later renamed WMM) that has been defined by an "
"industry group as a subset of 802.11e that can be deployed now to enable "
"multimedia applications while waiting for the final ratification of "
"802.11e. The most important thing to know about 802.11e and WME/WMM is that "
"it enables prioritized traffic over a wireless network through Quality of "
"Service (QoS) protocols and enhanced media access protocols. Proper "
"implementation of these protocols enables high speed bursting of data and "
"prioritized traffic flow."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:372
msgid ""
"FreeBSD supports networks that operate using 802.11a, 802.11b, and 802.11g. "
"The WPA and 802.11i security protocols are likewise supported (in "
"conjunction with any of 11a, 11b, and 11g) and QoS and traffic "
"prioritization required by the WME/WMM protocols are supported for a limited "
"set of wireless devices."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:374
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:378
msgid ""
"Connecting a computer to an existing wireless network is a very common "
"situation. This procedure shows the steps required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:381
msgid ""
"Obtain the SSID (Service Set Identifier) and PSK (Pre-Shared Key) for the "
"wireless network from the network administrator."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:383
msgid ""
"Identify the wireless adapter. The FreeBSD [.filename]#GENERIC# kernel "
"includes drivers for many common wireless adapters. If the wireless adapter "
"is one of those models, it will be listed in the man:sysctl[8] `net.wlan."
"devices` variable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:387
#, no-wrap
msgid "% sysctl net.wlan.devices\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:390
msgid ""
"If a wireless adapter is not listed, an additional kernel module might be "
"required, or it might be a model not supported by FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:392
msgid "This example shows the Atheros `ath0` wireless adapter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:393
msgid ""
"Add an entry for this network to [.filename]#/etc/wpa_supplicant.conf#. If "
"the file does not exist, create it. Replace _myssid_ and _mypsk_ with the "
"SSID and PSK provided by the network administrator."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:400
#, no-wrap
msgid ""
"network={\n"
"\tssid=\"myssid\"\n"
"\tpsk=\"mypsk\"\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:403
msgid ""
"Add entries to [.filename]#/etc/rc.conf# to configure the network on startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:408
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"WPA SYNCDHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:411
msgid ""
"Restart the computer, or restart the network service to connect to the "
"network:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:415
#, no-wrap
msgid "# service netif restart\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:418
#, no-wrap
msgid "Basic Setup"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:420
#, no-wrap
msgid "Kernel Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:424
msgid ""
"To use wireless networking, a wireless networking card is needed and the "
"kernel needs to be configured with the appropriate wireless networking "
"support. The kernel is separated into multiple modules so that only the "
"required support needs to be configured."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:427
msgid ""
"The most commonly used wireless devices are those that use parts made by "
"Atheros. These devices are supported by man:ath[4] and require the "
"following line to be added to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:431
#, no-wrap
msgid "if_ath_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:437
msgid ""
"The Atheros driver is split up into three separate pieces: the driver (man:"
"ath[4]), the hardware support layer that handles chip-specific functions "
"(man:ath_hal[4]), and an algorithm for selecting the rate for transmitting "
"frames. When this support is loaded as kernel modules, any dependencies are "
"automatically handled. To load support for a different type of wireless "
"device, specify the module for that device. This example is for devices "
"based on the Intersil Prism parts (man:wi[4]) driver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:441
#, no-wrap
msgid "if_wi_load=\"YES\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:448
msgid ""
"The examples in this section use an man:ath[4] device and the device name in "
"the examples must be changed according to the configuration. A list of "
"available wireless drivers and supported adapters can be found in the "
"FreeBSD Hardware Notes, available on the https://www.FreeBSD.org/releases/"
"[Release Information] page of the FreeBSD website. If a native FreeBSD "
"driver for the wireless device does not exist, it may be possible to use the "
"Windows(R) driver with the help of the crossref:config[config-network-ndis,"
"NDIS] driver wrapper."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:456
msgid ""
"In addition, the modules that implement cryptographic support for the "
"security protocols to use must be loaded. These are intended to be "
"dynamically loaded on demand by the man:wlan[4] module, but for now they "
"must be manually configured. The following modules are available: man:"
"wlan_wep[4], man:wlan_ccmp[4], and man:wlan_tkip[4]. The man:wlan_ccmp[4] "
"and man:wlan_tkip[4] drivers are only needed when using the WPA or 802.11i "
"security protocols. If the network does not use encryption, man:wlan_wep[4] "
"support is not needed. To load these modules at boot time, add the "
"following lines to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:462
#, no-wrap
msgid ""
"wlan_wep_load=\"YES\"\n"
"wlan_ccmp_load=\"YES\"\n"
"wlan_tkip_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:466
msgid ""
"Once this information has been added to [.filename]#/boot/loader.conf#, "
"reboot the FreeBSD box. Alternately, load the modules by hand using man:"
"kldload[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:470
msgid ""
"For users who do not want to use modules, it is possible to compile these "
"drivers into the kernel by adding the following lines to a custom kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:482
#, no-wrap
msgid ""
"device wlan # 802.11 support\n"
"device wlan_wep # 802.11 WEP support\n"
"device wlan_ccmp # 802.11 CCMP support\n"
"device wlan_tkip # 802.11 TKIP support\n"
"device wlan_amrr # AMRR transmit rate control algorithm\n"
"device ath # Atheros pci/cardbus NIC's\n"
"device ath_hal # pci/cardbus chip support\n"
"options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors\n"
"device ath_rate_sample # SampleRate tx rate control for ath\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:485
msgid ""
"With this information in the kernel configuration file, recompile the kernel "
"and reboot the FreeBSD machine."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:488
msgid ""
"Information about the wireless device should appear in the boot messages, "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:494
#, no-wrap
msgid ""
"ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus1\n"
"ath0: [ITHREAD]\n"
"ath0: AR2413 mac 7.9 RF2413 phy 4.5\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:496
#, no-wrap
msgid "Setting the Correct Region"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:499
msgid ""
"Since the regulatory situation is different in various parts of the world, "
"it is necessary to correctly set the domains that apply to your location to "
"have the correct information about what channels can be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:502
msgid ""
"The available region definitions can be found in [.filename]#/etc/regdomain."
"xml#. To set the data at runtime, use `ifconfig`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:506
#, no-wrap
msgid "# ifconfig wlan0 regdomain ETSI country AT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:509
msgid "To persist the settings, add it to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:513
#, no-wrap
msgid "# sysrc create_args_wlan0=\"country AT regdomain ETSI\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:515
#, no-wrap
msgid "Infrastructure Mode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:521
msgid ""
"Infrastructure (BSS) mode is the mode that is typically used. In this mode, "
"a number of wireless access points are connected to a wired network. Each "
"wireless network has its own name, called the SSID. Wireless clients "
"connect to the wireless access points."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:522
#, no-wrap
msgid "FreeBSD Clients"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:524
#, no-wrap
msgid "How to Find Access Points"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:529
msgid ""
"To scan for available networks, use man:ifconfig[8]. This request may take "
"a few moments to complete as it requires the system to switch to each "
"available wireless frequency and probe for available access points. Only "
"the superuser can initiate a scan:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:537
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0\n"
"# ifconfig wlan0 up scan\n"
"SSID/MESH ID BSSID CHAN RATE S:N INT CAPS\n"
"dlinkap 00:13:46:49:41:76 11 54M -90:96 100 EPS WPA WME\n"
"freebsdap 00:11:95:c3:0d:ac 1 54M -83:96 100 EPS WPA\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:543
msgid ""
"The interface must be `up` before it can scan. Subsequent scan requests do "
"not require the interface to be marked as up again."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:548
msgid ""
"The output of a scan request lists each BSS/IBSS network found. Besides "
"listing the name of the network, the `SSID`, the output also shows the "
"`BSSID`, which is the MAC address of the access point. The `CAPS` field "
"identifies the type of each network and the capabilities of the stations "
"operating there (see the definition of `list scan` in man:ifconfig[8] for "
"more details)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:550
msgid "One can also display the current list of known networks with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:554
#, no-wrap
msgid "# ifconfig wlan0 list scan\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:558
msgid ""
"This information may be updated automatically by the adapter or manually "
"with a `scan` request. Old data is automatically removed from the cache, so "
"over time this list may shrink unless more scans are done."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:559
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1137
#, no-wrap
msgid "Basic Settings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:563
msgid ""
"This section provides a simple example of how to make the wireless network "
"adapter work in FreeBSD without encryption. Once familiar with these "
"concepts, it is strongly recommend to use <<network-wireless-wpa,WPA>> to "
"set up the wireless network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:566
msgid ""
"There are three basic steps to configure a wireless network: select an "
"access point, authenticate the station, and configure an IP address. The "
"following sections discuss each step."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:568
msgid "====== Selecting an Access Point"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:571
msgid ""
"Most of the time, it is sufficient to let the system choose an access point "
"using the builtin heuristics. This is the default behavior when an "
"interface is marked as up or it is listed in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:576
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:646
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:579
msgid ""
"If there are multiple access points, a specific one can be selected by its "
"SSID:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:584
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"ssid your_ssid_here DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:588
msgid ""
"In an environment where there are multiple access points with the same SSID, "
"which is often done to simplify roaming, it may be necessary to associate to "
"one specific device. In this case, the BSSID of the access point can be "
"specified, with or without the SSID:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:593
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"ssid your_ssid_here bssid xx:xx:xx:xx:xx:xx DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:598
msgid ""
"There are other ways to constrain the choice of an access point, such as "
"limiting the set of frequencies the system will scan on. This may be useful "
"for a multi-band wireless card as scanning all the possible channels can be "
"time-consuming. To limit operation to a specific band, use the `mode` "
"parameter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:603
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"mode 11g ssid your_ssid_here DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:608
msgid ""
"This example will force the card to operate in 802.11g, which is defined "
"only for 2.4GHz frequencies so any 5GHz channels will not be considered. "
"This can also be achieved with the `channel` parameter, which locks "
"operation to one specific frequency, and the `chanlist` parameter, to "
"specify a list of channels for scanning. More information about these "
"parameters can be found in man:ifconfig[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:610
msgid "====== Authentication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:618
msgid ""
"Once an access point is selected, the station needs to authenticate before "
"it can pass data. Authentication can happen in several ways. The most "
"common scheme, open authentication, allows any station to join the network "
"and communicate. This is the authentication to use for test purposes the "
"first time a wireless network is setup. Other schemes require cryptographic "
"handshakes to be completed before data traffic can flow, either using pre-"
"shared keys or secrets, or more complex schemes that involve backend "
"services such as RADIUS. Open authentication is the default setting. The "
"next most common setup is WPA-PSK, also known as WPA Personal, which is "
"described in <<network-wireless-wpa-wpa-psk>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:624
msgid ""
"If using an Apple(R) AirPort(R) Extreme base station for an access point, "
"shared-key authentication together with a WEP key needs to be configured. "
"This can be configured in [.filename]#/etc/rc.conf# or by using man:"
"wpa_supplicant[8]. For a single AirPort(R) base station, access can be "
"configured with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:629
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"authmode shared wepmode on weptxkey 1 wepkey 01234567 DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:634
msgid ""
"In general, shared key authentication should be avoided because it uses the "
"WEP key material in a highly-constrained manner, making it even easier to "
"crack the key. If WEP must be used for compatibility with legacy devices, "
"it is better to use WEP with `open` authentication. More information "
"regarding WEP can be found in <<network-wireless-wep>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:637
msgid "====== Getting an IP Address with DHCP"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:641
msgid ""
"Once an access point is selected and the authentication parameters are set, "
"an IP address must be obtained in order to communicate. Most of the time, "
"the IP address is obtained via DHCP. To achieve that, edit [.filename]#/etc/"
"rc.conf# and add `DHCP` to the configuration for the device:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:649
msgid "The wireless interface is now ready to bring up:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:653
#, no-wrap
msgid "# service netif start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:656
msgid ""
"Once the interface is running, use man:ifconfig[8] to see the status of the "
"interface [.filename]#ath0#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:669
#, no-wrap
msgid ""
"# ifconfig wlan0\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255\n"
" media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g\n"
" status: associated\n"
" ssid dlinkap channel 11 (2462 Mhz 11g) bssid 00:13:46:49:41:76\n"
" country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7\n"
" scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7\n"
" roam:rate 5 protmode CTS wme burst\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:673
msgid ""
"The `status: associated` line means that it is connected to the wireless "
"network. The `bssid 00:13:46:49:41:76` is the MAC address of the access "
"point and `authmode OPEN` indicates that the communication is not encrypted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:675
msgid "====== Static IP Address"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:679
msgid ""
"If an IP address cannot be obtained from a DHCP server, set a fixed IP "
"address. Replace the `DHCP` keyword shown above with the address "
"information. Be sure to retain any other parameters for selecting the "
"access point:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:684
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"inet 192.168.1.100 netmask 255.255.255.0 ssid your_ssid_here\"\n"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:687
#, no-wrap
msgid "WPA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:697
msgid ""
"Wi-Fi Protected Access (WPA) is a security protocol used together with "
"802.11 networks to address the lack of proper authentication and the "
"weakness of WEP. WPA leverages the 802.1X authentication protocol and uses "
"one of several ciphers instead of WEP for data integrity. The only cipher "
"required by WPA is the Temporary Key Integrity Protocol (TKIP). TKIP is a "
"cipher that extends the basic RC4 cipher used by WEP by adding integrity "
"checking, tamper detection, and measures for responding to detected "
"intrusions. TKIP is designed to work on legacy hardware with only software "
"modification. It represents a compromise that improves security but is "
"still not entirely immune to attack. WPA also specifies the AES-CCMP cipher "
"as an alternative to TKIP, and that is preferred when possible. For this "
"specification, the term WPA2 or RSN is commonly used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:702
msgid ""
"WPA defines authentication and encryption protocols. Authentication is most "
"commonly done using one of two techniques: by 802.1X and a backend "
"authentication service such as RADIUS, or by a minimal handshake between the "
"station and the access point using a pre-shared secret. The former is "
"commonly termed WPA Enterprise and the latter is known as WPA Personal. "
"Since most people will not set up a RADIUS backend server for their wireless "
"network, WPA-PSK is by far the most commonly encountered configuration for "
"WPA."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:706
msgid ""
"The control of the wireless connection and the key negotiation or "
"authentication with a server is done using man:wpa_supplicant[8]. This "
"program requires a configuration file, [.filename]#/etc/wpa_supplicant."
"conf#, to run. More information regarding this file can be found in man:"
"wpa_supplicant.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:709
msgid "====== WPA-PSK"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:713
msgid ""
"WPA-PSK, also known as WPA Personal, is based on a pre-shared key (PSK) "
"which is generated from a given password and used as the master key in the "
"wireless network. This means every wireless user will share the same key. "
"WPA-PSK is intended for small networks where the use of an authentication "
"server is not possible or desired."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:717
msgid ""
"Always use strong passwords that are sufficiently long and made from a rich "
"alphabet so that they will not be easily guessed or attacked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:720
msgid ""
"The first step is the configuration of [.filename]#/etc/wpa_supplicant.conf# "
"with the SSID and the pre-shared key of the network:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:727
#, no-wrap
msgid ""
"network={\n"
" ssid=\"freebsdap\"\n"
" psk=\"freebsdmall\"\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:730
msgid ""
"Then, in [.filename]#/etc/rc.conf#, indicate that the wireless device "
"configuration will be done with WPA and the IP address will be obtained with "
"DHCP:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:735
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:872
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:934
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1005
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"WPA DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:738
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1008
msgid "Then, bring up the interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:759
#, no-wrap
msgid ""
"# service netif start\n"
"Starting wpa_supplicant.\n"
"DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 5\n"
"DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6\n"
"DHCPOFFER from 192.168.0.1\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67\n"
"DHCPACK from 192.168.0.1\n"
"bound to 192.168.0.254 -- renewal in 300 seconds.\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255\n"
" media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g\n"
" status: associated\n"
" ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
" country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF\n"
" AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan\n"
" bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS\n"
" wme burst roaming MANUAL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:762
msgid ""
"Or, try to configure the interface manually using the information in [."
"filename]#/etc/wpa_supplicant.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:770
#, no-wrap
msgid ""
"# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf\n"
"Trying to associate with 00:11:95:c3:0d:ac (SSID='freebsdap' freq=2412 MHz)\n"
"Associated with 00:11:95:c3:0d:ac\n"
"WPA: Key negotiation completed with 00:11:95:c3:0d:ac [PTK=CCMP GTK=CCMP]\n"
"CTRL-EVENT-CONNECTED - Connection to 00:11:95:c3:0d:ac completed (auth) [id=0 id_str=]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:773
msgid ""
"The next operation is to launch man:dhclient[8] to get the IP address from "
"the DHCP server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:791
#, no-wrap
msgid ""
"# dhclient wlan0\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67\n"
"DHCPACK from 192.168.0.1\n"
"bound to 192.168.0.254 -- renewal in 300 seconds.\n"
"# ifconfig wlan0\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255\n"
" media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g\n"
" status: associated\n"
" ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
" country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF\n"
" AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan\n"
" bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS\n"
" wme burst roaming MANUAL\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:796
msgid ""
"If [.filename]#/etc/rc.conf# has an `ifconfig_wlan0=\"DHCP\"` entry, man:"
"dhclient[8] will be launched automatically after man:wpa_supplicant[8] "
"associates with the access point."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:799
msgid ""
"If DHCP is not possible or desired, set a static IP address after man:"
"wpa_supplicant[8] has authenticated the station:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:814
#, no-wrap
msgid ""
"# ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0\n"
"# ifconfig wlan0\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255\n"
" media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11g\n"
" status: associated\n"
" ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
" country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF\n"
" AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan\n"
" bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS\n"
" wme burst roaming MANUAL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:817
msgid ""
"When DHCP is not used, the default gateway and the nameserver also have to "
"be manually set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:822
#, no-wrap
msgid ""
"# route add default your_default_router\n"
"# echo \"nameserver your_DNS_server\" >> /etc/resolv.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:826
msgid "====== WPA with EAP-TLS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:830
msgid ""
"The second way to use WPA is with an 802.1X backend authentication server. "
"In this case, WPA is called WPA Enterprise to differentiate it from the less "
"secure WPA Personal. Authentication in WPA Enterprise is based on the "
"Extensible Authentication Protocol (EAP)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:834
msgid ""
"EAP does not come with an encryption method. Instead, EAP is embedded "
"inside an encrypted tunnel. There are many EAP authentication methods, but "
"EAP-TLS, EAP-TTLS, and EAP-PEAP are the most common."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:838
msgid ""
"EAP with Transport Layer Security (EAP-TLS) is a well-supported wireless "
"authentication protocol since it was the first EAP method to be certified by "
"the http://www.wi-fi.org/[Wi-Fi Alliance]. EAP-TLS requires three "
"certificates to run: the certificate of the Certificate Authority (CA) "
"installed on all machines, the server certificate for the authentication "
"server, and one client certificate for each wireless client. In this EAP "
"method, both the authentication server and wireless client authenticate each "
"other by presenting their respective certificates, and then verify that "
"these certificates were signed by the organization's CA."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:840
msgid ""
"As previously, the configuration is done via [.filename]#/etc/wpa_supplicant."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:854
#, no-wrap
msgid ""
"network={\n"
" ssid=\"freebsdap\" <.>\n"
" proto=RSN <.>\n"
" key_mgmt=WPA-EAP <.>\n"
" eap=TLS <.>\n"
" identity=\"loader\" <.>\n"
" ca_cert=\"/etc/certs/cacert.pem\" <.>\n"
" client_cert=\"/etc/certs/clientcert.pem\" <.>\n"
" private_key=\"/etc/certs/clientkey.pem\" <.>\n"
" private_key_passwd=\"freebsdmallclient\" <.>\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:857
msgid "This field indicates the network name (SSID)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:858
msgid "This example uses the RSN IEEE(R) 802.11i protocol, also known as WPA2."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:859
msgid ""
"The `key_mgmt` line refers to the key management protocol to use. In this "
"example, it is WPA using EAP authentication."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:860
msgid "This field indicates the EAP method for the connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:861
msgid "The `identity` field contains the identity string for EAP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:862
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:926
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:996
msgid ""
"The `ca_cert` field indicates the pathname of the CA certificate file. This "
"file is needed to verify the server certificate."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:863
msgid ""
"The `client_cert` line gives the pathname to the client certificate file. "
"This certificate is unique to each wireless client of the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:864
msgid ""
"The `private_key` field is the pathname to the client certificate private "
"key file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:865
msgid ""
"The `private_key_passwd` field contains the passphrase for the private key."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:867
msgid "Then, add the following lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:875
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:937
msgid "The next step is to bring up the interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:894
#, no-wrap
msgid ""
"# service netif start\n"
"Starting wpa_supplicant.\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15\n"
"DHCPACK from 192.168.0.20\n"
"bound to 192.168.0.254 -- renewal in 300 seconds.\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255\n"
" media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g\n"
" status: associated\n"
" ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
" country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF\n"
" AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan\n"
" bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS\n"
" wme burst roaming MANUAL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:897
msgid ""
"It is also possible to bring up the interface manually using man:"
"wpa_supplicant[8] and man:ifconfig[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:900
msgid "====== WPA with EAP-TTLS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:905
msgid ""
"With EAP-TLS, both the authentication server and the client need a "
"certificate. With EAP-TTLS, a client certificate is optional. This method "
"is similar to a web server which creates a secure SSL tunnel even if "
"visitors do not have client-side certificates. EAP-TTLS uses an encrypted "
"TLS tunnel for safe transport of the authentication data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:907
msgid ""
"The required configuration can be added to [.filename]#/etc/wpa_supplicant."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:920
#, no-wrap
msgid ""
"network={\n"
" ssid=\"freebsdap\"\n"
" proto=RSN\n"
" key_mgmt=WPA-EAP\n"
" eap=TTLS <.>\n"
" identity=\"test\" <.>\n"
" password=\"test\" <.>\n"
" ca_cert=\"/etc/certs/cacert.pem\" <.>\n"
" phase2=\"auth=MD5\" <.>\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:923
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:993
msgid "This field specifies the EAP method for the connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:924
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:994
msgid ""
"The `identity` field contains the identity string for EAP authentication "
"inside the encrypted TLS tunnel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:925
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:995
msgid ""
"The `password` field contains the passphrase for the EAP authentication."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:927
msgid ""
"This field specifies the authentication method used in the encrypted TLS "
"tunnel. In this example, EAP with MD5-Challenge is used. The \"inner "
"authentication\" phase is often called \"phase2\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:929
msgid "Next, add the following lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:957
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1028
#, no-wrap
msgid ""
"# service netif start\n"
"Starting wpa_supplicant.\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15\n"
"DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21\n"
"DHCPACK from 192.168.0.20\n"
"bound to 192.168.0.254 -- renewal in 300 seconds.\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
" ether 00:11:95:d5:43:62\n"
" inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255\n"
" media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g\n"
" status: associated\n"
" ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
" country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF\n"
" AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan\n"
" bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS\n"
" wme burst roaming MANUAL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:961
msgid "====== WPA with EAP-PEAP"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:966
msgid ""
"PEAPv0/EAP-MSCHAPv2 is the most common PEAP method. In this chapter, the "
"term PEAP is used to refer to that method."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:970
msgid ""
"Protected EAP (PEAP) is designed as an alternative to EAP-TTLS and is the "
"most used EAP standard after EAP-TLS. In a network with mixed operating "
"systems, PEAP should be the most supported standard after EAP-TLS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:974
msgid ""
"PEAP is similar to EAP-TTLS as it uses a server-side certificate to "
"authenticate clients by creating an encrypted TLS tunnel between the client "
"and the authentication server, which protects the ensuing exchange of "
"authentication information. PEAP authentication differs from EAP-TTLS as it "
"broadcasts the username in the clear and only the password is sent in the "
"encrypted TLS tunnel. EAP-TTLS will use the TLS tunnel for both the "
"username and password."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:976
msgid ""
"Add the following lines to [.filename]#/etc/wpa_supplicant.conf# to "
"configure the EAP-PEAP related settings:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:990
#, no-wrap
msgid ""
"network={\n"
" ssid=\"freebsdap\"\n"
" proto=RSN\n"
" key_mgmt=WPA-EAP\n"
" eap=PEAP <.>\n"
" identity=\"test\" <.>\n"
" password=\"test\" <.>\n"
" ca_cert=\"/etc/certs/cacert.pem\" <.>\n"
" phase1=\"peaplabel=0\" <.>\n"
" phase2=\"auth=MSCHAPV2\" <.>\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:997
msgid ""
"This field contains the parameters for the first phase of authentication, "
"the TLS tunnel. According to the authentication server used, specify a "
"specific label for authentication. Most of the time, the label will be "
"\"client EAP encryption\" which is set by using `peaplabel=0`. More "
"information can be found in man:wpa_supplicant.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:998
msgid ""
"This field specifies the authentication protocol used in the encrypted TLS "
"tunnel. In the case of PEAP, it is `auth=MSCHAPV2`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1000
msgid "Add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1031
#, no-wrap
msgid "WEP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1035
msgid ""
"Wired Equivalent Privacy (WEP) is part of the original 802.11 standard. "
"There is no authentication mechanism, only a weak form of access control "
"which is easily cracked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1037
msgid "WEP can be set up using man:ifconfig[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1043
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0\n"
"# ifconfig wlan0 inet 192.168.1.100 netmask 255.255.255.0 \\\n"
"\t ssid my_net wepmode on weptxkey 3 wepkey 3:0x3456789012\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1046
msgid ""
"The `weptxkey` specifies which WEP key will be used in the transmission. "
"This example uses the third key. This must match the setting on the access "
"point. When unsure which key is used by the access point, try `1` (the first "
"key) for this value."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1047
msgid ""
"The `wepkey` selects one of the WEP keys. It should be in the format _index:"
"key_. Key `1` is used by default; the index only needs to be set when using "
"a key other than the first key."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1051
msgid ""
"Replace the `0x3456789012` with the key configured for use on the access "
"point."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1054
msgid "Refer to man:ifconfig[8] for further information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1057
msgid ""
"The man:wpa_supplicant[8] facility can be used to configure a wireless "
"interface with WEP. The example above can be set up by adding the following "
"lines to [.filename]#/etc/wpa_supplicant.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1066
#, no-wrap
msgid ""
"network={\n"
" ssid=\"my_net\"\n"
" key_mgmt=NONE\n"
" wep_key3=3456789012\n"
" wep_tx_keyidx=3\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1069
msgid "Then:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1075
#, no-wrap
msgid ""
"# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf\n"
"Trying to associate with 00:13:46:49:41:76 (SSID='dlinkap' freq=2437 MHz)\n"
"Associated with 00:13:46:49:41:76\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1077
#, no-wrap
msgid "Ad-hoc Mode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1081
msgid ""
"IBSS mode, also called ad-hoc mode, is designed for point to point "
"connections. For example, to establish an ad-hoc network between the "
"machines `A` and `B`, choose two IP addresses and a SSID."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1083
msgid "On `A`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1097
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0 wlanmode adhoc\n"
"# ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap\n"
"# ifconfig wlan0\n"
" wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\t ether 00:11:95:c3:0d:ac\n"
"\t inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255\n"
"\t media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>\n"
"\t status: running\n"
"\t ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac\n"
"\t country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60\n"
"\t protmode CTS wme burst\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1100
msgid ""
"The `adhoc` parameter indicates that the interface is running in IBSS mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1102
msgid "`B` should now be able to detect `A`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1109
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0 wlanmode adhoc\n"
"# ifconfig wlan0 up scan\n"
" SSID/MESH ID BSSID CHAN RATE S:N INT CAPS\n"
" freebsdap 02:11:95:c3:0d:ac 2 54M -64:-96 100 IS WME\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1113
msgid ""
"The `I` in the output confirms that `A` is in ad-hoc mode. Now, configure "
"`B` with a different IP address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1126
#, no-wrap
msgid ""
"# ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap\n"
"# ifconfig wlan0\n"
" wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\t ether 00:11:95:d5:43:62\n"
"\t inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255\n"
"\t media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <adhoc>\n"
"\t status: running\n"
"\t ssid freebsdap channel 2 (2417 Mhz 11g) bssid 02:11:95:c3:0d:ac\n"
"\t country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60\n"
"\t protmode CTS wme burst\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1129
msgid "Both `A` and `B` are now ready to exchange information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1131
#, no-wrap
msgid "FreeBSD Host Access Points"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1135
msgid ""
"FreeBSD can act as an Access Point (AP) which eliminates the need to buy a "
"hardware AP or run an ad-hoc network. This can be particularly useful when "
"a FreeBSD machine is acting as a gateway to another network such as the "
"Internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1141
msgid ""
"Before configuring a FreeBSD machine as an AP, the kernel must be configured "
"with the appropriate networking support for the wireless card as well as the "
"security protocols being used. For more details, see <<network-wireless-"
"basic>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1146
msgid ""
"The NDIS driver wrapper for Windows(R) drivers does not currently support AP "
"operation. Only native FreeBSD wireless drivers support AP mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1149
msgid ""
"Once wireless networking support is loaded, check if the wireless device "
"supports the host-based access point mode, also known as hostap mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1156
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0\n"
"# ifconfig wlan0 list caps\n"
"drivercaps=6f85edc1<STA,FF,TURBOP,IBSS,HOSTAP,AHDEMO,TXPMGT,SHSLOT,SHPREAMBLE,MONITOR,MBSS,WPA1,WPA2,BURST,WME,WDS,BGSCAN,TXFRAG>\n"
"cryptocaps=1f<WEP,TKIP,AES,AES_CCM,TKIPMIC>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1162
msgid ""
"This output displays the card's capabilities. The `HOSTAP` word confirms "
"that this wireless card can act as an AP. Various supported ciphers are "
"also listed: WEP, TKIP, and AES. This information indicates which security "
"protocols can be used on the AP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1164
msgid ""
"The wireless device can only be put into hostap mode during the creation of "
"the network pseudo-device, so a previously created device must be destroyed "
"first:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1168
#, no-wrap
msgid "# ifconfig wlan0 destroy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1171
msgid ""
"then regenerated with the correct option before setting the other parameters:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1176
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0 wlanmode hostap\n"
"# ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1179
msgid ""
"Use man:ifconfig[8] again to see the status of the [.filename]#wlan0# "
"interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1191
#, no-wrap
msgid ""
"# ifconfig wlan0\n"
" wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\t ether 00:11:95:c3:0d:ac\n"
"\t inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255\n"
"\t media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>\n"
"\t status: running\n"
"\t ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
"\t country US ecm authmode OPEN privacy OFF txpower 21.5 scanvalid 60\n"
"\t protmode CTS wme burst dtimperiod 1 -dfs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1194
msgid ""
"The `hostap` parameter indicates the interface is running in the host-based "
"access point mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1196
msgid ""
"The interface configuration can be done automatically at boot time by adding "
"the following lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1202
#, no-wrap
msgid ""
"wlans_ath0=\"wlan0\"\n"
"create_args_wlan0=\"wlanmode hostap\"\n"
"ifconfig_wlan0=\"inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1\"\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1204
#, no-wrap
msgid "Host-based Access Point Without Authentication or Encryption"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1208
msgid ""
"Although it is not recommended to run an AP without any authentication or "
"encryption, this is a simple way to check if the AP is working. This "
"configuration is also important for debugging client issues."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1210
msgid ""
"Once the AP is configured, initiate a scan from another wireless machine to "
"find the AP:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1217
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0\n"
"# ifconfig wlan0 up scan\n"
"SSID/MESH ID BSSID CHAN RATE S:N INT CAPS\n"
"freebsdap 00:11:95:c3:0d:ac 1 54M -66:-96 100 ES WME\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1220
msgid "The client machine found the AP and can be associated with it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1234
#, no-wrap
msgid ""
"# ifconfig wlan0 inet 192.168.0.2 netmask 255.255.255.0 ssid freebsdap\n"
"# ifconfig wlan0\n"
" wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\t ether 00:11:95:d5:43:62\n"
"\t inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255\n"
"\t media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g\n"
"\t status: associated\n"
"\t ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
"\t country US ecm authmode OPEN privacy OFF txpower 21.5 bmiss 7\n"
"\t scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7\n"
"\t roam:rate 5 protmode CTS wme burst\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1237
#, no-wrap
msgid "WPA2 Host-based Access Point"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1241
msgid ""
"This section focuses on setting up a FreeBSD access point using the WPA2 "
"security protocol. More details regarding WPA and the configuration of WPA-"
"based wireless clients can be found in <<network-wireless-wpa>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1243
msgid ""
"The man:hostapd[8] daemon is used to deal with client authentication and key "
"management on the WPA2-enabled AP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1246
msgid ""
"The following configuration operations are performed on the FreeBSD machine "
"acting as the AP. Once the AP is correctly working, man:hostapd[8] can be "
"automatically started at boot with this line in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1250
#, no-wrap
msgid "hostapd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1253
msgid ""
"Before trying to configure man:hostapd[8], first configure the basic "
"settings introduced in <<network-wireless-ap-basic>>."
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1254
#, no-wrap
msgid "WPA2-PSK"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1257
msgid ""
"WPA2-PSK is intended for small networks where the use of a backend "
"authentication server is not possible or desired."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1259
msgid "The configuration is done in [.filename]#/etc/hostapd.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1271
#, no-wrap
msgid ""
"interface=wlan0 <.>\n"
"debug=1 <.>\n"
"ctrl_interface=/var/run/hostapd <.>\n"
"ctrl_interface_group=wheel <.>\n"
"ssid=freebsdap <.>\n"
"wpa=2 <.>\n"
"wpa_passphrase=freebsdmall <.>\n"
"wpa_key_mgmt=WPA-PSK <.>\n"
"wpa_pairwise=CCMP <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1274
msgid "Wireless interface used for the access point."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1275
msgid ""
"Level of verbosity used during the execution of man:hostapd[8]. A value of "
"`1` represents the minimal level."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1276
msgid ""
"Pathname of the directory used by man:hostapd[8] to store domain socket "
"files for communication with external programs such as man:hostapd_cli[8]. "
"The default value is used in this example."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1277
msgid "The group allowed to access the control interface files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1278
msgid "The wireless network name, or SSID, that will appear in wireless scans."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1279
msgid ""
"Enable WPA and specify which WPA authentication protocol will be required. A "
"value of `2` configures the AP for WPA2 and is recommended. Set to `1` only "
"if the obsolete WPA is required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1280
msgid "ASCII passphrase for WPA authentication."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1281
msgid "The key management protocol to use. This example sets WPA-PSK."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1282
msgid ""
"Encryption algorithms accepted by the access point. In this example, only "
"the CCMP (AES) cipher is accepted. CCMP is an alternative to TKIP and is "
"strongly preferred when possible. TKIP should be allowed only when there are "
"stations incapable of using CCMP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1284
msgid "The next step is to start man:hostapd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1288
#, no-wrap
msgid "# service hostapd forcestart\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1305
#, no-wrap
msgid ""
"# ifconfig wlan0\n"
"wlan0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\tether 04:f0:21:16:8e:10\n"
"\tinet6 fe80::6f0:21ff:fe16:8e10%wlan0 prefixlen 64 scopeid 0x9\n"
"\tnd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>\n"
"\tmedia: IEEE 802.11 Wireless Ethernet autoselect mode 11na <hostap>\n"
"\tstatus: running\n"
"\tssid No5ignal channel 36 (5180 MHz 11a ht/40+) bssid 04:f0:21:16:8e:10\n"
"\tcountry US ecm authmode WPA2/802.11i privacy MIXED deftxkey 2\n"
"\tAES-CCM 2:128-bit AES-CCM 3:128-bit txpower 17 mcastrate 6 mgmtrate 6\n"
"\tscanvalid 60 ampdulimit 64k ampdudensity 8 shortgi wme burst\n"
"\tdtimperiod 1 -dfs\n"
"\tgroups: wlan\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1310
msgid ""
"Once the AP is running, the clients can associate with it. See <<network-"
"wireless-wpa>> for more details. It is possible to see the stations "
"associated with the AP using `ifconfig _wlan0_ list sta`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1311
#, no-wrap
msgid "WEP Host-based Access Point"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1315
msgid ""
"It is not recommended to use WEP for setting up an AP since there is no "
"authentication mechanism and the encryption is easily cracked. Some legacy "
"wireless cards only support WEP and these cards will only support an AP "
"without authentication or encryption."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1317
msgid ""
"The wireless device can now be put into hostap mode and configured with the "
"correct SSID and IP address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1323
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0 wlanmode hostap\n"
"# ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 \\\n"
"\tssid freebsdap wepmode on weptxkey 3 wepkey 3:0x3456789012 mode 11g\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1326
msgid ""
"The `weptxkey` indicates which WEP key will be used in the transmission. "
"This example uses the third key as key numbering starts with `1`. This "
"parameter must be specified in order to encrypt the data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1327
msgid ""
"The `wepkey` sets the selected WEP key. It should be in the format _index:"
"key_. If the index is not given, key `1` is set. The index needs to be set "
"when using keys other than the first key."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1329
msgid ""
"Use man:ifconfig[8] to see the status of the [.filename]#wlan0# interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1341
#, no-wrap
msgid ""
"# ifconfig wlan0\n"
" wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\t ether 00:11:95:c3:0d:ac\n"
"\t inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255\n"
"\t media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>\n"
"\t status: running\n"
"\t ssid freebsdap channel 4 (2427 Mhz 11g) bssid 00:11:95:c3:0d:ac\n"
"\t country US ecm authmode OPEN privacy ON deftxkey 3 wepkey 3:40-bit\n"
"\t txpower 21.5 scanvalid 60 protmode CTS wme burst dtimperiod 1 -dfs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1344
msgid ""
"From another wireless machine, it is now possible to initiate a scan to find "
"the AP:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1351
#, no-wrap
msgid ""
"# ifconfig wlan0 create wlandev ath0\n"
"# ifconfig wlan0 up scan\n"
"SSID BSSID CHAN RATE S:N INT CAPS\n"
"freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1355
msgid ""
"In this example, the client machine found the AP and can associate with it "
"using the correct parameters. See <<network-wireless-wep>> for more details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1356
#, no-wrap
msgid "Using Both Wired and Wireless Connections"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1360
msgid ""
"A wired connection provides better performance and reliability, while a "
"wireless connection provides flexibility and mobility. Laptop users "
"typically want to roam seamlessly between the two types of connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1363
msgid ""
"On FreeBSD, it is possible to combine two or even more network interfaces "
"together in a \"failover\" fashion. This type of configuration uses the "
"most preferred and available connection from a group of network interfaces, "
"and the operating system switches automatically when the link state changes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1365
msgid ""
"Link aggregation and failover is covered in <<network-aggregation>> and an "
"example for using both wired and wireless connections is provided at "
"<<networking-lagg-wired-and-wireless>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1369
msgid ""
"This section describes a number of steps to help troubleshoot common "
"wireless networking problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1371
msgid ""
"If the access point is not listed when scanning, check that the "
"configuration has not limited the wireless device to a limited set of "
"channels."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1372
msgid ""
"If the device cannot associate with an access point, verify that the "
"configuration matches the settings on the access point. This includes the "
"authentication scheme and any security protocols. Simplify the configuration "
"as much as possible. If using a security protocol such as WPA or WEP, "
"configure the access point for open authentication and no security to see if "
"traffic will pass."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1374
msgid ""
"Debugging support is provided by man:wpa_supplicant[8]. Try running this "
"utility manually with `-dd` and look at the system logs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1375
msgid ""
"Once the system can associate with the access point, diagnose the network "
"configuration using tools like man:ping[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1376
msgid ""
"There are many lower-level debugging tools. Debugging messages can be "
"enabled in the 802.11 protocol support layer using man:wlandebug[8]. For "
"example, to enable console messages related to scanning for access points "
"and the 802.11 protocol handshakes required to arrange communication:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1381
#, no-wrap
msgid ""
"# wlandebug -i wlan0 +scan+auth+debug+assoc\n"
" net.wlan.0.debug: 0 => 0xc80000<assoc,auth,scan>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1387
msgid ""
"Many useful statistics are maintained by the 802.11 layer and `wlanstats`, "
"found in [.filename]#/usr/src/tools/tools/net80211#, will dump this "
"information. These statistics should display all errors identified by the "
"802.11 layer. However, some errors are identified in the device drivers "
"that lie below the 802.11 layer so they may not show up. To diagnose device-"
"specific problems, refer to the driver documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1389
msgid ""
"If the above information does not help to clarify the problem, submit a "
"problem report and include output from the above tools."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1391
#, no-wrap
msgid "USB Tethering"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1395
msgid ""
"Many cellphones provide the option to share their data connection over USB "
"(often called \"tethering\"). This feature uses one of RNDIS, CDC, or a "
"custom Apple(R) iPhone(R)/iPad(R) protocol."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1397
msgid "Android(TM) devices generally use the man:urndis[4] driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1398
msgid "Apple(R) devices use the man:ipheth[4] driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1399
msgid "Older devices will often use the man:cdce[4] driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1401
msgid "Before attaching a device, load the appropriate driver into the kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1407
#, no-wrap
msgid ""
"# kldload if_urndis\n"
"# kldload if_cdce\n"
"# kldload if_ipheth\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1411
msgid ""
"Once the device is attached ``ue``_0_ will be available for use like a "
"normal network device. Be sure that the \"USB tethering\" option is enabled "
"on the device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1413
msgid ""
"To make this change permanent and load the driver as a module at boot time, "
"place the appropriate line of the following in [.filename]#/boot/loader."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1419
#, no-wrap
msgid ""
"if_urndis_load=\"YES\"\n"
"if_cdce_load=\"YES\"\n"
"if_ipheth_load=\"YES\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1422
#, no-wrap
msgid "Bluetooth"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1427
msgid ""
"Bluetooth is a wireless technology for creating personal networks operating "
"in the 2.4 GHz unlicensed band, with a range of 10 meters. Networks are "
"usually formed ad-hoc from portable devices such as cellular phones, "
"handhelds, and laptops. Unlike Wi-Fi wireless technology, Bluetooth offers "
"higher level service profiles, such as FTP-like file servers, file pushing, "
"voice transport, serial line emulation, and more."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1430
msgid ""
"This section describes the use of a USB Bluetooth dongle on a FreeBSD "
"system. It then describes the various Bluetooth protocols and utilities."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1431
#, no-wrap
msgid "Loading Bluetooth Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1438
msgid ""
"The Bluetooth stack in FreeBSD is implemented using the man:netgraph[4] "
"framework. A broad variety of Bluetooth USB dongles is supported by man:"
"ng_ubt[4]. Broadcom BCM2033 based Bluetooth devices are supported by the "
"man:ubtbcmfw[4] and man:ng_ubt[4] drivers. The 3Com Bluetooth PC Card "
"3CRWB60-A is supported by the man:ng_bt3c[4] driver. Serial and UART based "
"Bluetooth devices are supported by man:sio[4], man:ng_h4[4], and man:"
"hcseriald[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1441
msgid ""
"Before attaching a device, determine which of the above drivers it uses, "
"then load the driver. For example, if the device uses the man:ng_ubt[4] "
"driver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1445
#, no-wrap
msgid "# kldload ng_ubt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1448
msgid ""
"If the Bluetooth device will be attached to the system during system "
"startup, the system can be configured to load the module at boot time by "
"adding the driver to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1452
#, no-wrap
msgid "ng_ubt_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1456
msgid ""
"Once the driver is loaded, plug in the USB dongle. If the driver load was "
"successful, output similar to the following should appear on the console and "
"in [.filename]#/var/log/messages#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1463
#, no-wrap
msgid ""
"ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2\n"
"ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2\n"
"ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,\n"
" wMaxPacketSize=49, nframes=6, buffer size=294\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1468
msgid ""
"To start and stop the Bluetooth stack, use its startup script. It is a good "
"idea to stop the stack before unplugging the device. Starting the bluetooth "
"stack might require man:hcsecd[8] to be started. When starting the stack, "
"the output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1483
#, no-wrap
msgid ""
"# service bluetooth start ubt0\n"
"BD_ADDR: 00:02:72:00:d4:1a\n"
"Features: 0xff 0xff 0xf 00 00 00 00 00\n"
"<3-Slot> <5-Slot> <Encryption> <Slot offset>\n"
"<Timing accuracy> <Switch> <Hold mode> <Sniff mode>\n"
"<Park mode> <RSSI> <Channel quality> <SCO link>\n"
"<HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>\n"
"<Paging scheme> <Power control> <Transparent SCO data>\n"
"Max. ACL packet size: 192 bytes\n"
"Number of ACL packets: 8\n"
"Max. SCO packet size: 64 bytes\n"
"Number of SCO packets: 8\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1485
#, no-wrap
msgid "Finding Other Bluetooth Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1490
msgid ""
"The Host Controller Interface (HCI) provides a uniform method for accessing "
"Bluetooth baseband capabilities. In FreeBSD, a netgraph HCI node is created "
"for each Bluetooth device. For more details, refer to man:ng_hci[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1497
msgid ""
"One of the most common tasks is discovery of Bluetooth devices within RF "
"proximity. This operation is called _inquiry_. Inquiry and other HCI "
"related operations are done using man:hccontrol[8]. The example below shows "
"how to find out which Bluetooth devices are in range. The list of devices "
"should be displayed in a few seconds. Note that a remote device will only "
"answer the inquiry if it is set to _discoverable_ mode."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1510
#, no-wrap
msgid ""
"% hccontrol -n ubt0hci inquiry\n"
"Inquiry result, num_responses=1\n"
"Inquiry result #0\n"
" BD_ADDR: 00:80:37:29:19:a4\n"
" Page Scan Rep. Mode: 0x1\n"
" Page Scan Period Mode: 00\n"
" Page Scan Mode: 00\n"
" Class: 52:02:04\n"
" Clock offset: 0x78ef\n"
"Inquiry complete. Status: No error [00]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1516
msgid ""
"The `BD_ADDR` is the unique address of a Bluetooth device, similar to the "
"MAC address of a network card. This address is needed for further "
"communication with a device and it is possible to assign a human readable "
"name to a `BD_ADDR`. Information regarding the known Bluetooth hosts is "
"contained in [.filename]#/etc/bluetooth/hosts#. The following example shows "
"how to obtain the human readable name that was assigned to the remote device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1522
#, no-wrap
msgid ""
"% hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4\n"
"BD_ADDR: 00:80:37:29:19:a4\n"
"Name: Pav's T39\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1526
msgid ""
"If an inquiry is performed on a remote Bluetooth device, it will find the "
"computer as \"your.host.name (ubt0)\". The name assigned to the local "
"device can be changed at any time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1529
msgid ""
"Remote devices can be assigned aliases in [.filename]#/etc/bluetooth/"
"hosts#. More information about [.filename]#/etc/bluetooth/hosts# file might "
"be found in man:bluetooth.hosts[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1532
msgid ""
"The Bluetooth system provides a point-to-point connection between two "
"Bluetooth units, or a point-to-multipoint connection which is shared among "
"several Bluetooth devices. The following example shows how to create a "
"connection to a remote device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1536
#, no-wrap
msgid "% hccontrol -n ubt0hci create_connection BT_ADDR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1539
msgid ""
"`create_connection` accepts `BT_ADDR` as well as host aliases in [."
"filename]#/etc/bluetooth/hosts#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1541
msgid ""
"The following example shows how to obtain the list of active baseband "
"connections for the local device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1547
#, no-wrap
msgid ""
"% hccontrol -n ubt0hci read_connection_list\n"
"Remote BD_ADDR Handle Type Mode Role Encrypt Pending Queue State\n"
"00:80:37:29:19:a4 41 ACL 0 MAST NONE 0 0 OPEN\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1551
msgid ""
"A _connection handle_ is useful when termination of the baseband connection "
"is required, though it is normally not required to do this by hand. The "
"stack will automatically terminate inactive baseband connections."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1557
#, no-wrap
msgid ""
"# hccontrol -n ubt0hci disconnect 41\n"
"Connection handle: 41\n"
"Reason: Connection terminated by local host [0x16]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1561
msgid ""
"Type `hccontrol help` for a complete listing of available HCI commands. "
"Most of the HCI commands do not require superuser privileges."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1562
#, no-wrap
msgid "Device Pairing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1573
msgid ""
"By default, Bluetooth communication is not authenticated, and any device can "
"talk to any other device. A Bluetooth device, such as a cellular phone, may "
"choose to require authentication to provide a particular service. Bluetooth "
"authentication is normally done with a _PIN code_, an ASCII string up to 16 "
"characters in length. The user is required to enter the same PIN code on "
"both devices. Once the user has entered the PIN code, both devices will "
"generate a _link key_. After that, the link key can be stored either in the "
"devices or in a persistent storage. Next time, both devices will use the "
"previously generated link key. This procedure is called _pairing_. Note "
"that if the link key is lost by either device, the pairing must be repeated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1577
msgid ""
"The man:hcsecd[8] daemon is responsible for handling Bluetooth "
"authentication requests. The default configuration file is [.filename]#/etc/"
"bluetooth/hcsecd.conf#. An example section for a cellular phone with the "
"PIN code set to `1234` is shown below:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1586
#, no-wrap
msgid ""
"device {\n"
" bdaddr 00:80:37:29:19:a4;\n"
" name \"Pav's T39\";\n"
" key nokey;\n"
" pin \"1234\";\n"
" }\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1596
msgid ""
"The only limitation on PIN codes is length. Some devices, such as Bluetooth "
"headsets, may have a fixed PIN code built in. The `-d` switch forces man:"
"hcsecd[8] to stay in the foreground, so it is easy to see what is "
"happening. Set the remote device to receive pairing and initiate the "
"Bluetooth connection to the remote device. The remote device should "
"indicate that pairing was accepted and request the PIN code. Enter the same "
"PIN code listed in [.filename]#hcsecd.conf#. Now the computer and the "
"remote device are paired. Alternatively, pairing can be initiated on the "
"remote device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1598
msgid ""
"The following line can be added to [.filename]#/etc/rc.conf# to configure "
"man:hcsecd[8] to start automatically on system start:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1602
#, no-wrap
msgid "hcsecd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1605
msgid "The following is a sample of the man:hcsecd[8] daemon output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1614
#, no-wrap
msgid ""
"hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4\n"
"hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist\n"
"hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4\n"
"hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4\n"
"hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists\n"
"hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1616
#, no-wrap
msgid "Network Access with PPP Profiles"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1620
msgid ""
"A Dial-Up Networking (DUN) profile can be used to configure a cellular phone "
"as a wireless modem for connecting to a dial-up Internet access server. It "
"can also be used to configure a computer to receive data calls from a "
"cellular phone."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1623
msgid ""
"Network access with a PPP profile can be used to provide LAN access for a "
"single Bluetooth device or multiple Bluetooth devices. It can also provide "
"PC to PC connection using PPP networking over serial cable emulation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1627
msgid ""
"In FreeBSD, these profiles are implemented with man:ppp[8] and the man:"
"rfcomm_pppd[8] wrapper which converts a Bluetooth connection into something "
"PPP can use. Before a profile can be used, a new PPP label must be created "
"in [.filename]#/etc/ppp/ppp.conf#. Consult man:rfcomm_pppd[8] for examples."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1629
msgid ""
"In this example, man:rfcomm_pppd[8] is used to open a connection to a remote "
"device with a `BD_ADDR` of `00:80:37:29:19:a4` on a DUNRFCOMM channel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1633
#, no-wrap
msgid "# rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1638
msgid ""
"The actual channel number will be obtained from the remote device using the "
"SDP protocol. It is possible to specify the RFCOMM channel by hand, and in "
"this case man:rfcomm_pppd[8] will not perform the SDP query. Use man:"
"sdpcontrol[8] to find out the RFCOMM channel on the remote device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1644
msgid ""
"In order to provide network access with the PPPLAN service, man:sdpd[8] must "
"be running and a new entry for LAN clients must be created in [.filename]#/"
"etc/ppp/ppp.conf#. Consult man:rfcomm_pppd[8] for examples. Finally, start "
"the RFCOMMPPP server on a valid RFCOMM channel number. The RFCOMMPPP server "
"will automatically register the Bluetooth LAN service with the local SDP "
"daemon. The example below shows how to start the RFCOMMPPP server."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1648
#, no-wrap
msgid "# rfcomm_pppd -s -C 7 -l rfcomm-server\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1650
#, no-wrap
msgid "Bluetooth Protocols"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1653
msgid ""
"This section provides an overview of the various Bluetooth protocols, their "
"function, and associated utilities."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1654
#, no-wrap
msgid "Logical Link Control and Adaptation Protocol (L2CAP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1658
msgid ""
"The Logical Link Control and Adaptation Protocol (L2CAP) provides connection-"
"oriented and connectionless data services to upper layer protocols. L2CAP "
"permits higher level protocols and applications to transmit and receive "
"L2CAP data packets up to 64 kilobytes in length."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1664
msgid ""
"L2CAP is based around the concept of _channels_. A channel is a logical "
"connection on top of a baseband connection, where each channel is bound to a "
"single protocol in a many-to-one fashion. Multiple channels can be bound to "
"the same protocol, but a channel cannot be bound to multiple protocols. "
"Each L2CAP packet received on a channel is directed to the appropriate "
"higher level protocol. Multiple channels can share the same baseband "
"connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1669
msgid ""
"In FreeBSD, a netgraph L2CAP node is created for each Bluetooth device. "
"This node is normally connected to the downstream Bluetooth HCI node and "
"upstream Bluetooth socket nodes. The default name for the L2CAP node is "
"\"devicel2cap\". For more details refer to man:ng_l2cap[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1672
msgid ""
"A useful command is man:l2ping[8], which can be used to ping other devices. "
"Some Bluetooth implementations might not return all of the data sent to "
"them, so `0 bytes` in the following example is normal."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1680
#, no-wrap
msgid ""
"# l2ping -a 00:80:37:29:19:a4\n"
"0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0\n"
"0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0\n"
"0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0\n"
"0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1684
msgid ""
"The man:l2control[8] utility is used to perform various operations on L2CAP "
"nodes. This example shows how to obtain the list of logical connections "
"(channels) and the list of baseband connections for the local device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1695
#, no-wrap
msgid ""
"% l2control -a 00:02:72:00:d4:1a read_channel_list\n"
"L2CAP channels:\n"
"Remote BD_ADDR SCID/ DCID PSM IMTU/ OMTU State\n"
"00:07:e0:00:0b:ca 66/ 64 3 132/ 672 OPEN\n"
"% l2control -a 00:02:72:00:d4:1a read_connection_list\n"
"L2CAP connections:\n"
"Remote BD_ADDR Handle Flags Pending State\n"
"00:07:e0:00:0b:ca 41 O 0 OPEN\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1700
msgid ""
"Another diagnostic tool is man:btsockstat[1]. It is similar to man:"
"netstat[1], but for Bluetooth network-related data structures. The example "
"below shows the same logical connection as man:l2control[8] above."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1713
#, no-wrap
msgid ""
"% btsockstat\n"
"Active L2CAP sockets\n"
"PCB Recv-Q Send-Q Local address/PSM Foreign address CID State\n"
"c2afe900 0 0 00:02:72:00:d4:1a/3 00:07:e0:00:0b:ca 66 OPEN\n"
"Active RFCOMM sessions\n"
"L2PCB PCB Flag MTU Out-Q DLCs State\n"
"c2afe900 c2b53380 1 127 0 Yes OPEN\n"
"Active RFCOMM sockets\n"
"PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State\n"
"c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1715
#, no-wrap
msgid "Radio Frequency Communication (RFCOMM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1720
msgid ""
"The RFCOMM protocol provides emulation of serial ports over the L2CAP "
"protocol. RFCOMM is a simple transport protocol, with additional provisions "
"for emulating the 9 circuits of RS-232 (EIATIA-232-E) serial ports. It "
"supports up to 60 simultaneous connections (RFCOMM channels) between two "
"Bluetooth devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1724
msgid ""
"For the purposes of RFCOMM, a complete communication path involves two "
"applications running on the communication endpoints with a communication "
"segment between them. RFCOMM is intended to cover applications that make "
"use of the serial ports of the devices in which they reside. The "
"communication segment is a direct connect Bluetooth link from one device to "
"another."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1727
msgid ""
"RFCOMM is only concerned with the connection between the devices in the "
"direct connect case, or between the device and a modem in the network case. "
"RFCOMM can support other configurations, such as modules that communicate "
"via Bluetooth wireless technology on one side and provide a wired interface "
"on the other side."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1729
msgid "In FreeBSD, RFCOMM is implemented at the Bluetooth sockets layer."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1730
#, no-wrap
msgid "Service Discovery Protocol (SDP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1734
msgid ""
"The Service Discovery Protocol (SDP) provides the means for client "
"applications to discover the existence of services provided by server "
"applications as well as the attributes of those services. The attributes of "
"a service include the type or class of service offered and the mechanism or "
"protocol information needed to utilize the service."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1741
msgid ""
"SDP involves communication between a SDP server and a SDP client. The "
"server maintains a list of service records that describe the characteristics "
"of services associated with the server. Each service record contains "
"information about a single service. A client may retrieve information from "
"a service record maintained by the SDP server by issuing a SDP request. If "
"the client, or an application associated with the client, decides to use a "
"service, it must open a separate connection to the service provider in order "
"to utilize the service. SDP provides a mechanism for discovering services "
"and their attributes, but it does not provide a mechanism for utilizing "
"those services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1745
msgid ""
"Normally, a SDP client searches for services based on some desired "
"characteristics of the services. However, there are times when it is "
"desirable to discover which types of services are described by an SDP "
"server's service records without any prior information about the services. "
"This process of looking for any offered services is called _browsing_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1748
msgid ""
"The Bluetooth SDP server, man:sdpd[8], and command line client, man:"
"sdpcontrol[8], are included in the standard FreeBSD installation. The "
"following example shows how to perform a SDP browse query."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1759
#, no-wrap
msgid ""
"% sdpcontrol -a 00:01:03:fc:6e:ec browse\n"
"Record Handle: 00000000\n"
"Service Class ID List:\n"
" Service Discovery Server (0x1000)\n"
"Protocol Descriptor List:\n"
" L2CAP (0x0100)\n"
" Protocol specific parameter #1: u/int/uuid16 1\n"
" Protocol specific parameter #2: u/int/uuid16 1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1763
#, no-wrap
msgid ""
"Record Handle: 0x00000001\n"
"Service Class ID List:\n"
" Browse Group Descriptor (0x1001)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1773
#, no-wrap
msgid ""
"Record Handle: 0x00000002\n"
"Service Class ID List:\n"
" LAN Access Using PPP (0x1102)\n"
"Protocol Descriptor List:\n"
" L2CAP (0x0100)\n"
" RFCOMM (0x0003)\n"
" Protocol specific parameter #1: u/int8/bool 1\n"
"Bluetooth Profile Descriptor List:\n"
" LAN Access Using PPP (0x1102) ver. 1.0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1780
msgid ""
"Note that each service has a list of attributes, such as the RFCOMM "
"channel. Depending on the service, the user might need to make note of some "
"of the attributes. Some Bluetooth implementations do not support service "
"browsing and may return an empty list. In this case, it is possible to "
"search for the specific service. The example below shows how to search for "
"the OBEX Object Push (OPUSH) service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1784
#, no-wrap
msgid "% sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1788
msgid ""
"Offering services on FreeBSD to Bluetooth clients is done with the man:"
"sdpd[8] server. The following line can be added to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1792
#, no-wrap
msgid "sdpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1795
msgid "Then the man:sdpd[8] daemon can be started with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1799
#, no-wrap
msgid "# service sdpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1804
msgid ""
"The local server application that wants to provide a Bluetooth service to "
"remote clients will register the service with the local SDP daemon. An "
"example of such an application is man:rfcomm_pppd[8]. Once started, it will "
"register the Bluetooth LAN service with the local SDP daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1806
msgid ""
"The list of services registered with the local SDP server can be obtained by "
"issuing a SDP browse query via the local control channel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1810
#, no-wrap
msgid "# sdpcontrol -l browse\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1812
#, no-wrap
msgid "OBEX Object Push (OPUSH)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1816
msgid ""
"Object Exchange (OBEX) is a widely used protocol for simple file transfers "
"between mobile devices. Its main use is in infrared communication, where it "
"is used for generic file transfers between notebooks or PDAs, and for "
"sending business cards or calendar entries between cellular phones and other "
"devices with Personal Information Manager (PIM) applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1818
msgid ""
"The OBEX server and client are implemented by obexapp, which can be "
"installed using the package:comms/obexapp[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1826
msgid ""
"The OBEX client is used to push and/or pull objects from the OBEX server. "
"An example object is a business card or an appointment. The OBEX client can "
"obtain the RFCOMM channel number from the remote device via SDP. This can "
"be done by specifying the service name instead of the RFCOMM channel "
"number. Supported service names are: `IrMC`, `FTRN`, and `OPUSH`. It is "
"also possible to specify the RFCOMM channel as a number. Below is an "
"example of an OBEX session where the device information object is pulled "
"from the cellular phone, and a new object, the business card, is pushed into "
"the phone's directory."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1836
#, no-wrap
msgid ""
"% obexapp -a 00:80:37:29:19:a4 -C IrMC\n"
"obex> get telecom/devinfo.txt devinfo-t39.txt\n"
"Success, response: OK, Success (0x20)\n"
"obex> put new.vcf\n"
"Success, response: OK, Success (0x20)\n"
"obex> di\n"
"Success, response: OK, Success (0x20)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1843
msgid ""
"In order to provide the OPUSH service, man:sdpd[8] must be running and a "
"root folder, where all incoming objects will be stored, must be created. "
"The default path to the root folder is [.filename]#/var/spool/obex#. "
"Finally, start the OBEX server on a valid RFCOMM channel number. The OBEX "
"server will automatically register the OPUSH service with the local SDP "
"daemon. The example below shows how to start the OBEX server."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1847
#, no-wrap
msgid "# obexapp -s -C 10\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1849
#, no-wrap
msgid "Serial Port Profile (SPP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1853
msgid ""
"The Serial Port Profile (SPP) allows Bluetooth devices to perform serial "
"cable emulation. This profile allows legacy applications to use Bluetooth "
"as a cable replacement, through a virtual serial port abstraction."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1858
msgid ""
"In FreeBSD, man:rfcomm_sppd[1] implements SPP and a pseudo tty is used as a "
"virtual serial port abstraction. The example below shows how to connect to "
"a remote device's serial port service. A RFCOMM channel does not have to be "
"specified as man:rfcomm_sppd[1] can obtain it from the remote device via "
"SDP. To override this, specify a RFCOMM channel on the command line."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1864
#, no-wrap
msgid ""
"# rfcomm_sppd -a 00:07:E0:00:0B:CA -t\n"
"rfcomm_sppd[94692]: Starting on /dev/pts/6...\n"
"/dev/pts/6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1867
msgid "Once connected, the pseudo tty can be used as serial port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1871
#, no-wrap
msgid "# cu -l /dev/pts/6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1874
msgid "The pseudo tty is printed on stdout and can be read by wrapper scripts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1879
#, no-wrap
msgid ""
"PTS=`rfcomm_sppd -a 00:07:E0:00:0B:CA -t`\n"
"cu -l $PTS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1887
msgid ""
"By default, when FreeBSD is accepting a new connection, it tries to perform "
"a role switch and become master. Some older Bluetooth devices which do not "
"support role switching will not be able to connect. Since role switching is "
"performed when a new connection is being established, it is not possible to "
"ask the remote device if it supports role switching. However, there is a "
"HCI option to disable role switching on the local side:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1891
#, no-wrap
msgid "# hccontrol -n ubt0hci write_node_role_switch 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1895
msgid ""
"To display Bluetooth packets, use the third-party package hcidump, which can "
"be installed using the package:comms/hcidump[] package or port. This "
"utility is similar to man:tcpdump[1] and can be used to display the contents "
"of Bluetooth packets on the terminal and to dump the Bluetooth packets to a "
"file."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1897
#, no-wrap
msgid "Bridging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1901
msgid ""
"It is sometimes useful to divide a network, such as an Ethernet segment, "
"into network segments without having to create IP subnets and use a router "
"to connect the segments together. A device that connects two networks "
"together in this fashion is called a \"bridge\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1906
msgid ""
"A bridge works by learning the MAC addresses of the devices on each of its "
"network interfaces. It forwards traffic between networks only when the "
"source and destination MAC addresses are on different networks. In many "
"respects, a bridge is like an Ethernet switch with very few ports. A "
"FreeBSD system with multiple network interfaces can be configured to act as "
"a bridge."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1908
msgid "Bridging can be useful in the following situations:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1909
#, no-wrap
msgid "Connecting Networks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1913
msgid ""
"The basic operation of a bridge is to join two or more network segments. "
"There are many reasons to use a host-based bridge instead of networking "
"equipment, such as cabling constraints or firewalling. A bridge can also "
"connect a wireless interface running in hostap mode to a wired network and "
"act as an access point."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1914
#, no-wrap
msgid "Filtering/Traffic Shaping Firewall"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1916
msgid ""
"A bridge can be used when firewall functionality is needed without routing "
"or Network Address Translation (NAT)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1921
msgid ""
"An example is a small company that is connected via DSL or ISDN to an ISP. "
"There are thirteen public IP addresses from the ISP and ten computers on the "
"network. In this situation, using a router-based firewall is difficult "
"because of subnetting issues. A bridge-based firewall can be configured "
"without any IP addressing issues."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1922
#, no-wrap
msgid "Network Tap"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1924
msgid ""
"A bridge can join two network segments in order to inspect all Ethernet "
"frames that pass between them using man:bpf[4] and man:tcpdump[1] on the "
"bridge interface, or by sending a copy of all frames out on an additional "
"interface known as a span port."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1925
#, no-wrap
msgid "Layer 2 VPN"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1927
msgid ""
"Two Ethernet networks can be joined across an IP link by bridging the "
"networks to an EtherIP tunnel or a man:tap[4] based solution such as OpenVPN."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1928
#, no-wrap
msgid "Layer 2 Redundancy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1930
msgid ""
"A network can be connected together with multiple links and use the Spanning "
"Tree Protocol (STP) to block redundant paths."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1933
msgid ""
"This section describes how to configure a FreeBSD system as a bridge using "
"man:if_bridge[4]. A netgraph bridging driver is also available, and is "
"described in man:ng_bridge[4]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1938
msgid ""
"Packet filtering can be used with any firewall package that hooks into the "
"man:pfil[9] framework. The bridge can be used as a traffic shaper with man:"
"altq[4] or man:dummynet[4]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1940
#, no-wrap
msgid "Enabling the Bridge"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1944
msgid ""
"In FreeBSD, man:if_bridge[4] is a kernel module which is automatically "
"loaded by man:ifconfig[8] when creating a bridge interface. It is also "
"possible to compile bridge support into a custom kernel by adding `device "
"if_bridge` to the custom kernel configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1947
msgid ""
"The bridge is created using interface cloning. To create the bridge "
"interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1958
#, no-wrap
msgid ""
"# ifconfig bridge create\n"
"bridge0\n"
"# ifconfig bridge0\n"
"bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" ether 96:3d:4b:f1:79:7a\n"
" id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15\n"
" maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200\n"
" root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1963
msgid ""
"When a bridge interface is created, it is automatically assigned a randomly "
"generated Ethernet address. The `maxaddr` and `timeout` parameters control "
"how many MAC addresses the bridge will keep in its forwarding table and how "
"many seconds before each entry is removed after it is last seen. The other "
"parameters control how STP operates."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1966
msgid ""
"Next, specify which network interfaces to add as members of the bridge. For "
"the bridge to forward packets, all member interfaces and the bridge need to "
"be up:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1972
#, no-wrap
msgid ""
"# ifconfig bridge0 addm fxp0 addm fxp1 up\n"
"# ifconfig fxp0 up\n"
"# ifconfig fxp1 up\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1976
msgid ""
"The bridge can now forward Ethernet frames between [.filename]#fxp0# and [."
"filename]#fxp1#. Add the following lines to [.filename]#/etc/rc.conf# so "
"the bridge is created at startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1983
#, no-wrap
msgid ""
"cloned_interfaces=\"bridge0\"\n"
"ifconfig_bridge0=\"addm fxp0 addm fxp1 up\"\n"
"ifconfig_fxp0=\"up\"\n"
"ifconfig_fxp1=\"up\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1988
msgid ""
"If the bridge host needs an IP address, set it on the bridge interface, not "
"on the member interfaces. The address can be set statically or via DHCP. "
"This example sets a static IP address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1992
#, no-wrap
msgid "# ifconfig bridge0 inet 192.168.0.1/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:1996
msgid ""
"It is also possible to assign an IPv6 address to a bridge interface. To "
"make the changes permanent, add the addressing information to [.filename]#/"
"etc/rc.conf#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2002
msgid ""
"When packet filtering is enabled, bridged packets will pass through the "
"filter inbound on the originating interface on the bridge interface, and "
"outbound on the appropriate interfaces. Either stage can be disabled. When "
"direction of the packet flow is important, it is best to firewall on the "
"member interfaces rather than the bridge itself."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2005
msgid ""
"The bridge has several configurable settings for passing non-IP and IP "
"packets, and layer2 firewalling with man:ipfw[8]. See man:if_bridge[4] for "
"more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2007
#, no-wrap
msgid "Enabling Spanning Tree"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2012
msgid ""
"For an Ethernet network to function properly, only one active path can exist "
"between two devices. The STP protocol detects loops and puts redundant "
"links into a blocked state. Should one of the active links fail, STP "
"calculates a different tree and enables one of the blocked paths to restore "
"connectivity to all points in the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2016
msgid ""
"The Rapid Spanning Tree Protocol (RSTP or 802.1w) provides backwards "
"compatibility with legacy STP. RSTP provides faster convergence and "
"exchanges information with neighboring switches to quickly transition to "
"forwarding mode without creating loops. FreeBSD supports RSTP and STP as "
"operating modes, with RSTP being the default mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2019
msgid ""
"STP can be enabled on member interfaces using man:ifconfig[8]. For a bridge "
"with [.filename]#fxp0# and [.filename]#fxp1# as the current interfaces, "
"enable STP with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2034
#, no-wrap
msgid ""
"# ifconfig bridge0 stp fxp0 stp fxp1\n"
"bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" ether d6:cf:d5:a0:94:6d\n"
" id 00:01:02:4b:d4:50 priority 32768 hellotime 2 fwddelay 15\n"
" maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200\n"
" root id 00:01:02:4b:d4:50 priority 32768 ifcost 0 port 0\n"
" member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>\n"
" port 3 priority 128 path cost 200000 proto rstp\n"
" role designated state forwarding\n"
" member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>\n"
" port 4 priority 128 path cost 200000 proto rstp\n"
" role designated state forwarding\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2038
msgid ""
"This bridge has a spanning tree ID of `00:01:02:4b:d4:50` and a priority of "
"`32768`. As the `root id` is the same, it indicates that this is the root "
"bridge for the tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2040
msgid "Another bridge on the network also has STP enabled:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2054
#, no-wrap
msgid ""
"bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" ether 96:3d:4b:f1:79:7a\n"
" id 00:13:d4:9a:06:7a priority 32768 hellotime 2 fwddelay 15\n"
" maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200\n"
" root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4\n"
" member: fxp0 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>\n"
" port 4 priority 128 path cost 200000 proto rstp\n"
" role root state forwarding\n"
" member: fxp1 flags=1c7<LEARNING,DISCOVER,STP,AUTOEDGE,PTP,AUTOPTP>\n"
" port 5 priority 128 path cost 200000 proto rstp\n"
" role designated state forwarding\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2058
msgid ""
"The line `root id 00:01:02:4b:d4:50 priority 32768 ifcost 400000 port 4` "
"shows that the root bridge is `00:01:02:4b:d4:50` and has a path cost of "
"`400000` from this bridge. The path to the root bridge is via `port 4` "
"which is [.filename]#fxp0#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2059
#, no-wrap
msgid "Bridge Interface Parameters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2064
msgid ""
"Several `ifconfig` parameters are unique to bridge interfaces. This section "
"summarizes some common uses for these parameters. The complete list of "
"available parameters is described in man:ifconfig[8]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2065
#, no-wrap
msgid "private"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2069
msgid ""
"A private interface does not forward any traffic to any other port that is "
"also designated as a private interface. The traffic is blocked "
"unconditionally so no Ethernet frames will be forwarded, including ARP "
"packets. If traffic needs to be selectively blocked, a firewall should be "
"used instead."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2070
#, no-wrap
msgid "span"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2075
msgid ""
"A span port transmits a copy of every Ethernet frame received by the "
"bridge. The number of span ports configured on a bridge is unlimited, but "
"if an interface is designated as a span port, it cannot also be used as a "
"regular bridge port. This is most useful for snooping a bridged network "
"passively on another host connected to one of the span ports of the bridge. "
"For example, to send a copy of all frames out the interface named [."
"filename]#fxp4#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2079
#, no-wrap
msgid "# ifconfig bridge0 span fxp4\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2081
#, no-wrap
msgid "sticky"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2086
msgid ""
"If a bridge member interface is marked as sticky, dynamically learned "
"address entries are treated as static entries in the forwarding cache. "
"Sticky entries are never aged out of the cache or replaced, even if the "
"address is seen on a different interface. This gives the benefit of static "
"address entries without the need to pre-populate the forwarding table. "
"Clients learned on a particular segment of the bridge cannot roam to another "
"segment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2089
msgid ""
"An example of using sticky addresses is to combine the bridge with VLANs in "
"order to isolate customer networks without wasting IP address space. "
"Consider that `CustomerA` is on `vlan100`, `CustomerB` is on `vlan101`, and "
"the bridge has the address `192.168.0.1`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2094
#, no-wrap
msgid ""
"# ifconfig bridge0 addm vlan100 sticky vlan100 addm vlan101 sticky vlan101\n"
"# ifconfig bridge0 inet 192.168.0.1/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2098
msgid ""
"In this example, both clients see `192.168.0.1` as their default gateway. "
"Since the bridge cache is sticky, one host cannot spoof the MAC address of "
"the other customer in order to intercept their traffic."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2100
msgid ""
"Any communication between the VLANs can be blocked using a firewall or, as "
"seen in this example, private interfaces:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2104
#, no-wrap
msgid "# ifconfig bridge0 private vlan100 private vlan101\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2107
msgid ""
"The customers are completely isolated from each other and the full `/24` "
"address range can be allocated without subnetting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2110
msgid ""
"The number of unique source MAC addresses behind an interface can be "
"limited. Once the limit is reached, packets with unknown source addresses "
"are dropped until an existing host cache entry expires or is removed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2112
msgid ""
"The following example sets the maximum number of Ethernet devices for "
"`CustomerA` on `vlan100` to 10:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2116
#, no-wrap
msgid "# ifconfig bridge0 ifmaxaddr vlan100 10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2122
msgid ""
"Bridge interfaces also support monitor mode, where the packets are discarded "
"after man:bpf[4] processing and are not processed or forwarded further. "
"This can be used to multiplex the input of two or more interfaces into a "
"single man:bpf[4] stream. This is useful for reconstructing the traffic for "
"network taps that transmit the RX/TX signals out through two separate "
"interfaces. For example, to read the input from four network interfaces as "
"one stream:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2127
#, no-wrap
msgid ""
"# ifconfig bridge0 addm fxp0 addm fxp1 addm fxp2 addm fxp3 monitor up\n"
"# tcpdump -i bridge0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2129
#, no-wrap
msgid "SNMP Monitoring"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2133
msgid ""
"The bridge interface and STP parameters can be monitored via man:bsnmpd[1] "
"which is included in the FreeBSD base system. The exported bridge MIBs "
"conform to IETF standards so any SNMP client or monitoring package can be "
"used to retrieve the data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2135
msgid ""
"To enable monitoring on the bridge, uncomment this line in [.filename]#/etc/"
-"snmpd.config# by removing the beginning `#` symbol:"
+"snmpd.config# by removing the beginning `+#+` symbol:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2139
#, no-wrap
msgid "begemotSnmpdModulePath.\"bridge\" = \"/usr/lib/snmp_bridge.so\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2144
msgid ""
"Other configuration settings, such as community names and access lists, may "
"need to be modified in this file. See man:bsnmpd[1] and man:snmp_bridge[3] "
"for more information. Once these edits are saved, add this line to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2148
#, no-wrap
msgid "bsnmpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2151
msgid "Then, start man:bsnmpd[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2155
#, no-wrap
msgid "# service bsnmpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2160
msgid ""
"The following examples use the Net-SNMP software (package:net-mgmt/net-"
"snmp[]) to query a bridge from a client system. The package:net-mgmt/"
"bsnmptools[] port can also be used. From the SNMP client which is running "
"Net-SNMP, add the following lines to [.filename]#$HOME/.snmp/snmp.conf# in "
"order to import the bridge MIB definitions:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2165
#, no-wrap
msgid ""
"mibdirs +/usr/share/snmp/mibs\n"
"mibs +BRIDGE-MIB:RSTP-MIB:BEGEMOT-MIB:BEGEMOT-BRIDGE-MIB\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2168
msgid "To monitor a single bridge using the IETF BRIDGE-MIB (RFC4188):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2187
#, no-wrap
msgid ""
"% snmpwalk -v 2c -c public bridge1.example.com mib-2.dot1dBridge\n"
"BRIDGE-MIB::dot1dBaseBridgeAddress.0 = STRING: 66:fb:9b:6e:5c:44\n"
"BRIDGE-MIB::dot1dBaseNumPorts.0 = INTEGER: 1 ports\n"
"BRIDGE-MIB::dot1dStpTimeSinceTopologyChange.0 = Timeticks: (189959) 0:31:39.59 centi-seconds\n"
"BRIDGE-MIB::dot1dStpTopChanges.0 = Counter32: 2\n"
"BRIDGE-MIB::dot1dStpDesignatedRoot.0 = Hex-STRING: 80 00 00 01 02 4B D4 50\n"
"...\n"
"BRIDGE-MIB::dot1dStpPortState.3 = INTEGER: forwarding(5)\n"
"BRIDGE-MIB::dot1dStpPortEnable.3 = INTEGER: enabled(1)\n"
"BRIDGE-MIB::dot1dStpPortPathCost.3 = INTEGER: 200000\n"
"BRIDGE-MIB::dot1dStpPortDesignatedRoot.3 = Hex-STRING: 80 00 00 01 02 4B D4 50\n"
"BRIDGE-MIB::dot1dStpPortDesignatedCost.3 = INTEGER: 0\n"
"BRIDGE-MIB::dot1dStpPortDesignatedBridge.3 = Hex-STRING: 80 00 00 01 02 4B D4 50\n"
"BRIDGE-MIB::dot1dStpPortDesignatedPort.3 = Hex-STRING: 03 80\n"
"BRIDGE-MIB::dot1dStpPortForwardTransitions.3 = Counter32: 1\n"
"RSTP-MIB::dot1dStpVersion.0 = INTEGER: rstp(2)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2192
msgid ""
"The `dot1dStpTopChanges.0` value is two, indicating that the STP bridge "
"topology has changed twice. A topology change means that one or more links "
"in the network have changed or failed and a new tree has been calculated. "
"The `dot1dStpTimeSinceTopologyChange.0` value will show when this happened."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2194
msgid ""
"To monitor multiple bridge interfaces, the private BEGEMOT-BRIDGE-MIB can be "
"used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2212
#, no-wrap
msgid ""
"% snmpwalk -v 2c -c public bridge1.example.com\n"
"enterprises.fokus.begemot.begemotBridge\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName.\"bridge0\" = STRING: bridge0\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseName.\"bridge2\" = STRING: bridge2\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress.\"bridge0\" = STRING: e:ce:3b:5a:9e:13\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseAddress.\"bridge2\" = STRING: 12:5e:4d:74:d:fc\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts.\"bridge0\" = INTEGER: 1\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeBaseNumPorts.\"bridge2\" = INTEGER: 1\n"
"...\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange.\"bridge0\" = Timeticks: (116927) 0:19:29.27 centi-seconds\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpTimeSinceTopologyChange.\"bridge2\" = Timeticks: (82773) 0:13:47.73 centi-seconds\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges.\"bridge0\" = Counter32: 1\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpTopChanges.\"bridge2\" = Counter32: 1\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot.\"bridge0\" = Hex-STRING: 80 00 00 40 95 30 5E 31\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeStpDesignatedRoot.\"bridge2\" = Hex-STRING: 80 00 00 50 8B B8 C6 A9\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2215
msgid ""
"To change the bridge interface being monitored via the `mib-2.dot1dBridge` "
"subtree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2220
#, no-wrap
msgid ""
"% snmpset -v 2c -c private bridge1.example.com\n"
"BEGEMOT-BRIDGE-MIB::begemotBridgeDefaultBridgeIf.0 s bridge2\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2223
#, no-wrap
msgid "Link Aggregation and Failover"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2228
msgid ""
"FreeBSD provides the man:lagg[4] interface which can be used to aggregate "
"multiple network interfaces into one virtual interface in order to provide "
"failover and link aggregation. Failover allows traffic to continue to flow "
"as long as at least one aggregated network interface has an established "
"link. Link aggregation works best on switches which support LACP, as this "
"protocol distributes traffic bi-directionally while responding to the "
"failure of individual links."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2231
msgid ""
"The aggregation protocols supported by the lagg interface determine which "
"ports are used for outgoing traffic and whether or not a specific port "
"accepts incoming traffic. The following protocols are supported by man:"
"lagg[4]:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2232
#, no-wrap
msgid "failover"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2237
msgid ""
"This mode sends and receives traffic only through the master port. If the "
"master port becomes unavailable, the next active port is used. The first "
"interface added to the virtual interface is the master port and all "
"subsequently added interfaces are used as failover devices. If failover to "
"a non-master port occurs, the original port becomes master once it becomes "
"available again."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2238
#, no-wrap
msgid "loadbalance"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2241
msgid ""
"This provides a static setup and does not negotiate aggregation with the "
"peer or exchange frames to monitor the link. If the switch supports LACP, "
"that should be used instead."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2242
#, no-wrap
msgid "lacp"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2247
msgid ""
"The IEEE(R) 802.3ad Link Aggregation Control Protocol (LACP) negotiates a "
"set of aggregable links with the peer into one or more Link Aggregated "
"Groups (LAGs). Each LAG is composed of ports of the same speed, set to full-"
"duplex operation, and traffic is balanced across the ports in the LAG with "
"the greatest total speed. Typically, there is only one LAG which contains "
"all the ports. In the event of changes in physical connectivity, LACP will "
"quickly converge to a new configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2250
msgid ""
"LACP balances outgoing traffic across the active ports based on hashed "
"protocol header information and accepts incoming traffic from any active "
"port. The hash includes the Ethernet source and destination address and, if "
"available, the VLAN tag, and the IPv4 or IPv6 source and destination address."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2251
#, no-wrap
msgid "roundrobin"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2254
msgid ""
"This mode distributes outgoing traffic using a round-robin scheduler through "
"all active ports and accepts incoming traffic from any active port. Since "
"this mode violates Ethernet frame ordering, it should be used with caution."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2255
#, no-wrap
msgid "broadcast"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2257
msgid ""
"This mode sends outgoing traffic to all ports configured on the lagg "
"interface, and receives frames on any port."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2258
#, no-wrap
msgid "Configuration Examples"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2262
msgid ""
"This section demonstrates how to configure a Cisco(R) switch and a FreeBSD "
"system for LACP load balancing. It then shows how to configure two Ethernet "
"interfaces in failover mode as well as how to configure failover mode "
"between an Ethernet and a wireless interface."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2264
#, no-wrap
msgid "LACP Aggregation with a Cisco(R) Switch"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2270
msgid ""
"This example connects two man:fxp[4] Ethernet interfaces on a FreeBSD "
"machine to the first two Ethernet ports on a Cisco(R) switch as a single "
"load balanced and fault tolerant link. More interfaces can be added to "
"increase throughput and fault tolerance. Replace the names of the Cisco(R) "
"ports, Ethernet devices, channel group number, and IP address shown in the "
"example to match the local configuration."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2273
msgid ""
"Frame ordering is mandatory on Ethernet links and any traffic between two "
"stations always flows over the same physical link, limiting the maximum "
"speed to that of one interface. The transmit algorithm attempts to use as "
"much information as it can to distinguish different traffic flows and "
"balance the flows across the available interfaces."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2275
msgid ""
"On the Cisco(R) switch, add the _FastEthernet0/1_ and _FastEthernet0/2_ "
"interfaces to channel group _1_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2285
#, no-wrap
msgid ""
"interface FastEthernet0/1\n"
" channel-group 1 mode active\n"
" channel-protocol lacp\n"
"!\n"
"interface FastEthernet0/2\n"
" channel-group 1 mode active\n"
" channel-protocol lacp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2288
msgid ""
"On the FreeBSD system, create the man:lagg[4] interface using the physical "
"interfaces _fxp0_ and _fxp1_ and bring the interfaces up with an IP address "
"of _10.0.0.3/24_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2295
#, no-wrap
msgid ""
"# ifconfig fxp0 up\n"
"# ifconfig fxp1 up\n"
"# ifconfig lagg0 create\n"
"# ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2298
msgid "Next, verify the status of the virtual interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2311
#, no-wrap
msgid ""
"# ifconfig lagg0\n"
"lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=8<VLAN_MTU>\n"
" ether 00:05:5d:71:8d:b8\n"
" inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255\n"
" media: Ethernet autoselect\n"
" status: active\n"
" laggproto lacp\n"
" laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>\n"
" laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2316
msgid ""
"Ports marked as `ACTIVE` are part of the LAG that has been negotiated with "
"the remote switch. Traffic will be transmitted and received through these "
"active ports. Add `-v` to the above command to view the LAG identifiers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2318
msgid "To see the port status on the Cisco(R) switch:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2325
#, no-wrap
msgid ""
"switch# show lacp neighbor\n"
"Flags: S - Device is requesting Slow LACPDUs\n"
" F - Device is requesting Fast LACPDUs\n"
" A - Device is in Active mode P - Device is in Passive mode\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2327
#, no-wrap
msgid "Channel group 1 neighbors\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2329
#, no-wrap
msgid "Partner's information:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2334
#, no-wrap
msgid ""
" LACP port Oper Port Port\n"
"Port Flags Priority Dev ID Age Key Number State\n"
"Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D\n"
"Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2337
msgid "For more detail, type `show lacp neighbor detail`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2339
msgid ""
"To retain this configuration across reboots, add the following entries to [."
"filename]#/etc/rc.conf# on the FreeBSD system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2346
#, no-wrap
msgid ""
"ifconfig_fxp0=\"up\"\n"
"ifconfig_fxp1=\"up\"\n"
"cloned_interfaces=\"lagg0\"\n"
"ifconfig_lagg0=\"laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24\"\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2351
#, no-wrap
msgid "Failover Mode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2358
msgid ""
"Failover mode can be used to switch over to a secondary interface if the "
"link is lost on the master interface. To configure failover, make sure that "
"the underlying physical interfaces are up, then create the man:lagg[4] "
"interface. In this example, _fxp0_ is the master interface, _fxp1_ is the "
"secondary interface, and the virtual interface is assigned an IP address of "
"_10.0.0.15/24_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2365
#, no-wrap
msgid ""
"# ifconfig fxp0 up\n"
"# ifconfig fxp1 up\n"
"# ifconfig lagg0 create\n"
"# ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2368
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2469
msgid "The virtual interface should look something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2381
#, no-wrap
msgid ""
"# ifconfig lagg0\n"
"lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=8<VLAN_MTU>\n"
" ether 00:05:5d:71:8d:b8\n"
" inet 10.0.0.15 netmask 0xffffff00 broadcast 10.0.0.255\n"
" media: Ethernet autoselect\n"
" status: active\n"
" laggproto failover\n"
" laggport: fxp1 flags=0<>\n"
" laggport: fxp0 flags=5<MASTER,ACTIVE>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2386
msgid ""
"Traffic will be transmitted and received on _fxp0_. If the link is lost on "
"_fxp0_, _fxp1_ will become the active link. If the link is restored on the "
"master interface, it will once again become the active link."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2388
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2492
msgid ""
"To retain this configuration across reboots, add the following entries to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2395
#, no-wrap
msgid ""
"ifconfig_fxp0=\"up\"\n"
"ifconfig_fxp1=\"up\"\n"
"cloned_interfaces=\"lagg0\"\n"
"ifconfig_lagg0=\"laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24\"\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2400
#, no-wrap
msgid "Failover Mode Between Ethernet and Wireless Interfaces"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2406
msgid ""
"For laptop users, it is usually desirable to configure the wireless device "
"as a secondary which is only used when the Ethernet connection is not "
"available. With man:lagg[4], it is possible to configure a failover which "
"prefers the Ethernet connection for both performance and security reasons, "
"while maintaining the ability to transfer data over the wireless connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2408
msgid ""
"This is achieved by overriding the Ethernet interface's MAC address with "
"that of the wireless interface."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2414
msgid ""
"In theory, either the Ethernet or wireless MAC address can be changed to "
"match the other. However, some popular wireless interfaces lack support for "
"overriding the MAC address. We therefore recommend overriding the Ethernet "
"MAC address for this purpose."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2421
msgid ""
"If the driver for the wireless interface is not loaded in the `GENERIC` or "
"custom kernel, and the computer is running FreeBSD {rel121-current}, load "
"the corresponding [.filename]#.ko# in [.filename]#/boot/loader.conf# by "
"adding `*driver_load=\"YES\"*` to that file and rebooting. Another, better "
"way is to load the driver in [.filename]#/etc/rc.conf# by adding it to "
"`kld_list` (see man:rc.conf[5] for details) in that file and rebooting. "
"This is needed because otherwise the driver is not loaded yet at the time "
"the man:lagg[4] interface is set up."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2427
msgid ""
"In this example, the Ethernet interface, _re0_, is the master and the "
"wireless interface, _wlan0_, is the failover. The _wlan0_ interface was "
"created from the _ath0_ physical wireless interface, and the Ethernet "
"interface will be configured with the MAC address of the wireless "
"interface. First, bring the wireless interface up (replacing _FR_ with your "
"own 2-letter country code), but do not set an IP address. Replace _wlan0_ "
"to match the system's wireless interface name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2431
#, no-wrap
msgid "# ifconfig wlan0 create wlandev ath0 country FR ssid my_router up\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2434
msgid "Now you can determine the MAC address of the wireless interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2449
#, no-wrap
msgid ""
"# ifconfig wlan0\n"
"wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\tether b8:ee:65:5b:32:59\n"
"\tgroups: wlan\n"
"\tssid Bbox-A3BD2403 channel 6 (2437 MHz 11g ht/20) bssid 00:37:b7:56:4b:60\n"
"\tregdomain ETSI country FR indoor ecm authmode WPA2/802.11i privacy ON\n"
"\tdeftxkey UNDEF AES-CCM 2:128-bit txpower 30 bmiss 7 scanvalid 60\n"
"\tprotmode CTS ampdulimit 64k ampdudensity 8 shortgi -stbctx stbcrx\n"
"\t-ldpc wme burst roaming MANUAL\n"
"\tmedia: IEEE 802.11 Wireless Ethernet MCS mode 11ng\n"
"\tstatus: associated\n"
"\tnd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2453
msgid ""
"The `ether` line will contain the MAC address of the specified interface. "
"Now, change the MAC address of the Ethernet interface to match:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2457
#, no-wrap
msgid "# ifconfig re0 ether b8:ee:65:5b:32:59\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2460
msgid ""
"Make sure the _re0_ interface is up, then create the man:lagg[4] interface "
"with _re0_ as master with failover to _wlan0_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2466
#, no-wrap
msgid ""
"# ifconfig re0 up\n"
"# ifconfig lagg0 create\n"
"# ifconfig lagg0 up laggproto failover laggport re0 laggport wlan0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2482
#, no-wrap
msgid ""
"# ifconfig lagg0\n"
"lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=8<VLAN_MTU>\n"
" ether b8:ee:65:5b:32:59\n"
" laggproto failover lagghash l2,l3,l4\n"
" laggport: re0 flags=5<MASTER,ACTIVE>\n"
" laggport: wlan0 flags=0<>\n"
" groups: lagg\n"
" media: Ethernet autoselect\n"
" status: active\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2485
msgid "Then, start the DHCP client to obtain an IP address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2489
#, no-wrap
msgid "# dhclient lagg0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2501
#, no-wrap
msgid ""
"ifconfig_re0=\"ether b8:ee:65:5b:32:59\"\n"
"wlans_ath0=\"wlan0\"\n"
"ifconfig_wlan0=\"WPA\"\n"
"create_args_wlan0=\"country FR\"\n"
"cloned_interfaces=\"lagg0\"\n"
"ifconfig_lagg0=\"up laggproto failover laggport re0 laggport wlan0 DHCP\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2506
#, no-wrap
msgid "Diskless Operation with PXE"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2512
msgid ""
"The Intel(R) Preboot eXecution Environment (PXE) allows an operating system "
"to boot over the network. For example, a FreeBSD system can boot over the "
"network and operate without a local disk, using file systems mounted from an "
"NFS server. PXE support is usually available in the BIOS. To use PXE when "
"the machine starts, select the `Boot from network` option in the BIOS setup "
"or type a function key during system initialization."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2514
msgid ""
"In order to provide the files needed for an operating system to boot over "
"the network, a PXE setup also requires properly configured DHCP, TFTP, and "
"NFS servers, where:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2516
msgid ""
"Initial parameters, such as an IP address, executable boot filename and "
"location, server name, and root path are obtained from the DHCP server."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2517
msgid "The operating system loader file is booted using TFTP."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2518
msgid "The file systems are loaded using NFS."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2523
msgid ""
"When a computer PXE boots, it receives information over DHCP about where to "
"obtain the initial boot loader file. After the host computer receives this "
"information, it downloads the boot loader via TFTP and then executes the "
"boot loader. In FreeBSD, the boot loader file is [.filename]#/boot/"
"pxeboot#. After [.filename]#/boot/pxeboot# executes, the FreeBSD kernel is "
"loaded and the rest of the FreeBSD bootup sequence proceeds, as described in "
"crossref:boot[boot,The FreeBSD Booting Process]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2526
msgid ""
"This section describes how to configure these services on a FreeBSD system "
"so that other systems can PXE boot into FreeBSD. Refer to man:diskless[8] "
"for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2531
msgid ""
"As described, the system providing these services is insecure. It should "
"live in a protected area of a network and be untrusted by other hosts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2534
#, no-wrap
msgid "Setting Up the PXE Environment"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2540
msgid ""
"The steps shown in this section configure the built-in NFS and TFTP "
"servers. The next section demonstrates how to install and configure the "
"DHCP server. In this example, the directory which will contain the files "
"used by PXE users is [.filename]#/b/tftpboot/FreeBSD/install#. It is "
"important that this directory exists and that the same directory name is set "
"in both [.filename]#/etc/inetd.conf# and [.filename]#/usr/local/etc/dhcpd."
"conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2545
msgid ""
"The command examples below assume use of the man:sh[1] shell. man:csh[1] "
"and man:tcsh[1] users will need to start a man:sh[1] shell or adapt the "
"commands to man:csh[1] syntax."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2549
msgid ""
"Create the root directory which will contain a FreeBSD installation to be "
"NFS mounted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2554
#, no-wrap
msgid ""
"# export NFSROOTDIR=/b/tftpboot/FreeBSD/install\n"
"# mkdir -p ${NFSROOTDIR}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2557
msgid "Enable the NFS server by adding this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2561
#, no-wrap
msgid "nfs_server_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2564
msgid ""
"Export the diskless root directory via NFS by adding the following to [."
"filename]#/etc/exports#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2568
#, no-wrap
msgid "/b -ro -alldirs -maproot=root\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2571
msgid "Start the NFS server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2575
#, no-wrap
msgid "# service nfsd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2578
msgid ""
"Enable man:inetd[8] by adding the following line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2582
#, no-wrap
msgid "inetd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2585
msgid ""
"Uncomment the following line in [.filename]#/etc/inetd.conf# by making sure "
-"it does not start with a `#` symbol:"
+"it does not start with a `+#+` symbol:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2589
#, no-wrap
msgid "tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2595
msgid ""
"Some PXE versions require the TCP version of TFTP. In this case, uncomment "
"the second `tftp` line which contains `stream tcp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2598
msgid "Start man:inetd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2602
#, no-wrap
msgid "# service inetd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2605
msgid ""
"Install the base system into [.filename]#${NFSROOTDIR}#, either by "
"decompressing the official archives or by rebuilding the FreeBSD kernel and "
"userland (refer to crossref:cutting-edge[makeworld,“Updating FreeBSD from "
-"Source”] for more detailed instructions, but do not forget to add `DESTDIR=_"
-"${NFSROOTDIR}_` when running the `make installkernel` and `make "
+"Source”] for more detailed instructions, but do not forget to add "
+"`DESTDIR=_${NFSROOTDIR}_` when running the `make installkernel` and `make "
"installworld` commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2606
msgid ""
"Test that the TFTP server works and can download the boot loader which will "
"be obtained via PXE:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2612
#, no-wrap
msgid ""
"# tftp localhost\n"
"tftp> get FreeBSD/install/boot/pxeboot\n"
"Received 264951 bytes in 0.1 seconds\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2615
msgid ""
"Edit [.filename]#${NFSROOTDIR}/etc/fstab# and create an entry to mount the "
"root file system over NFS:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2620
#, no-wrap
msgid ""
"# Device Mountpoint FSType Options Dump Pass\n"
"myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2624
msgid ""
"Replace _myhost.example.com_ with the hostname or IP address of the NFS "
"server. In this example, the root file system is mounted read-only in order "
"to prevent NFS clients from potentially deleting the contents of the root "
"file system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2625
msgid ""
"Set the root password in the PXE environment for client machines which are "
"PXE booting :"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2630
#, no-wrap
msgid ""
"# chroot ${NFSROOTDIR}\n"
"# passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2633
msgid ""
"If needed, enable man:ssh[1] root logins for client machines which are PXE "
"booting by editing [.filename]#${NFSROOTDIR}/etc/ssh/sshd_config# and "
"enabling `PermitRootLogin`. This option is documented in man:sshd_config[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2634
msgid ""
"Perform any other needed customizations of the PXE environment in [."
"filename]#${NFSROOTDIR}#. These customizations could include things like "
"installing packages or editing the password file with man:vipw[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2637
msgid ""
"When booting from an NFS root volume, [.filename]#/etc/rc# detects the NFS "
"boot and runs [.filename]#/etc/rc.initdiskless#. In this case, [.filename]#/"
"etc# and [.filename]#/var# need to be memory backed file systems so that "
"these directories are writable but the NFS root directory is read-only:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2644
#, no-wrap
msgid ""
"# chroot ${NFSROOTDIR}\n"
"# mkdir -p conf/base\n"
"# tar -c -v -f conf/base/etc.cpio.gz --format cpio --gzip etc\n"
"# tar -c -v -f conf/base/var.cpio.gz --format cpio --gzip var\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2649
msgid ""
"When the system boots, memory file systems for [.filename]#/etc# and [."
"filename]#/var# will be created and mounted and the contents of the [."
"filename]#cpio.gz# files will be copied into them. By default, these file "
"systems have a maximum capacity of 5 megabytes. If your archives do not "
"fit, which is usually the case for [.filename]#/var# when binary packages "
"have been installed, request a larger size by putting the number of 512 byte "
-"sectors needed (e.g., 5 megabytes is 10240 sectors) in [.filename]#"
-"${NFSROOTDIR}/conf/base/etc/md_size# and [.filename]#${NFSROOTDIR}/conf/base/"
-"var/md_size# files for [.filename]#/etc# and [.filename]#/var# file systems "
-"respectively."
+"sectors needed (e.g., 5 megabytes is 10240 sectors) in [."
+"filename]#${NFSROOTDIR}/conf/base/etc/md_size# and [.filename]#${NFSROOTDIR}/"
+"conf/base/var/md_size# files for [.filename]#/etc# and [.filename]#/var# "
+"file systems respectively."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2651
#, no-wrap
msgid "Configuring the DHCP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2654
msgid ""
"The DHCP server does not need to be the same machine as the TFTP and NFS "
"server, but it needs to be accessible in the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2656
msgid ""
"DHCP is not part of the FreeBSD base system but can be installed using the "
"package:net/isc-dhcp44-server[] port or package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2659
msgid ""
"Once installed, edit the configuration file, [.filename]#/usr/local/etc/"
"dhcpd.conf#. Configure the `next-server`, `filename`, and `root-path` "
"settings as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2669
#, no-wrap
msgid ""
"subnet 192.168.0.0 netmask 255.255.255.0 {\n"
" range 192.168.0.2 192.168.0.3 ;\n"
" option subnet-mask 255.255.255.0 ;\n"
" option routers 192.168.0.1 ;\n"
" option broadcast-address 192.168.0.255 ;\n"
" option domain-name-servers 192.168.35.35, 192.168.35.36 ;\n"
" option domain-name \"example.com\";\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2672
#, no-wrap
msgid ""
" # IP address of TFTP server\n"
" next-server 192.168.0.1 ;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2675
#, no-wrap
msgid ""
" # path of boot loader obtained via tftp\n"
" filename \"FreeBSD/install/boot/pxeboot\" ;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2678
#, no-wrap
msgid ""
" # pxeboot boot loader will try to NFS mount this directory for root FS\n"
" option root-path \"192.168.0.1:/b/tftpboot/FreeBSD/install/\" ;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2680
#, no-wrap
msgid "}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2683
msgid ""
"The `next-server` directive is used to specify the IP address of the TFTP "
"server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2686
msgid ""
"The `filename` directive defines the path to [.filename]#/boot/pxeboot#. A "
"relative filename is used, meaning that [.filename]#/b/tftpboot# is not "
"included in the path."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2688
msgid "The `root-path` option defines the path to the NFS root file system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2690
msgid ""
"Once the edits are saved, enable DHCP at boot time by adding the following "
"line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2694
#, no-wrap
msgid "dhcpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2697
msgid "Then start the DHCP service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2701
#, no-wrap
msgid "# service isc-dhcpd start\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2703
#, no-wrap
msgid "Debugging PXE Problems"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2707
msgid ""
"Once all of the services are configured and started, PXE clients should be "
"able to automatically load FreeBSD over the network. If a particular client "
"is unable to connect, when that client machine boots up, enter the BIOS "
"configuration menu and confirm that it is set to boot from the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2709
msgid ""
"This section describes some troubleshooting tips for isolating the source of "
"the configuration problem should no clients be able to PXE boot."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2713
msgid ""
"Use the package:net/wireshark[] package or port to debug the network traffic "
"involved during the PXE booting process, which is illustrated in the diagram "
"below."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2714
#, no-wrap
msgid "PXE Booting Process with NFS Root Mount"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2715
#, no-wrap
msgid "pxe-nfs.png"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2718
msgid "Client broadcasts a DHCPDISCOVER message."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2720
msgid ""
"The DHCP server responds with the IP address, next-server, filename, and "
"root-path values."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2722
msgid ""
"The client sends a TFTP request to next-server, asking to retrieve filename."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2724
msgid "The TFTP server responds and sends filename to client."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2726
msgid ""
"The client executes filename, which is pxeboot(8), which then loads the "
"kernel. When the kernel executes, the root file system specified by root-"
"path is mounted over NFS."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2728
msgid ""
"On the TFTP server, read [.filename]#/var/log/xferlog# to ensure that [."
"filename]#pxeboot# is being retrieved from the correct location. To test "
"this example configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2734
#, no-wrap
msgid ""
"# tftp 192.168.0.1\n"
"tftp> get FreeBSD/install/boot/pxeboot\n"
"Received 264951 bytes in 0.1 seconds\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2737
msgid ""
"The `BUGS` sections in man:tftpd[8] and man:tftp[1] document some "
"limitations with TFTP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2738
msgid ""
"Make sure that the root file system can be mounted via NFS. To test this "
"example configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2742
#, no-wrap
msgid "# mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2746
#, no-wrap
msgid "IPv6"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2750
msgid ""
"IPv6 is the new version of the well known IP protocol, also known as IPv4. "
"IPv6 provides several advantages over IPv4 as well as many new features:"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2752
msgid ""
"Its 128-bit address space allows for "
"340,282,366,920,938,463,463,374,607,431,768,211,456 addresses. This "
"addresses the IPv4 address shortage and eventual IPv4 address exhaustion."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2753
msgid ""
"Routers only store network aggregation addresses in their routing tables, "
"thus reducing the average space of a routing table to 8192 entries. This "
"addresses the scalability issues associated with IPv4, which required every "
"allocated block of IPv4 addresses to be exchanged between Internet routers, "
"causing their routing tables to become too large to allow efficient routing."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2755
msgid ""
"Address autoconfiguration (http://www.ietf.org/rfc/rfc2462.txt[RFC2462])."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2756
msgid "Mandatory multicast addresses."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2757
msgid "Built-in IPsec (IP security)."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2758
msgid "Simplified header structure."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2759
msgid "Support for mobile IP."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2760
msgid "IPv6-to-IPv4 transition mechanisms."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2763
msgid ""
"FreeBSD includes the http://www.kame.net/[http://www.kame.net/] IPv6 "
"reference implementation and comes with everything needed to use IPv6. This "
"section focuses on getting IPv6 configured and running."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2764
#, no-wrap
msgid "Background on IPv6 Addresses"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2767
msgid "There are three different types of IPv6 addresses:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2768
#, no-wrap
msgid "Unicast"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2770
msgid ""
"A packet sent to a unicast address arrives at the interface belonging to the "
"address."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2771
#, no-wrap
msgid "Anycast"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2775
msgid ""
"These addresses are syntactically indistinguishable from unicast addresses "
"but they address a group of interfaces. The packet destined for an anycast "
"address will arrive at the nearest router interface. Anycast addresses are "
"only used by routers."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2776
#, no-wrap
msgid "Multicast"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2780
msgid ""
"These addresses identify a group of interfaces. A packet destined for a "
"multicast address will arrive at all interfaces belonging to the multicast "
"group. The IPv4 broadcast address, usually `xxx.xxx.xxx.255`, is expressed "
"by multicast addresses in IPv6."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2783
msgid ""
"When reading an IPv6 address, the canonical form is represented as `x:x:x:x:"
"x:x:x:x`, where each `x` represents a 16 bit hex value. An example is `FEBC:"
"A574:382B:23C1:AA49:4592:4EFE:9982`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2788
msgid ""
"Often, an address will have long substrings of all zeros. A `::` (double "
"colon) can be used to replace one substring per address. Also, up to three "
"leading ``0``s per hex value can be omitted. For example, `fe80::1` "
"corresponds to the canonical form `fe80:0000:0000:0000:0000:0000:0000:0001`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2791
msgid ""
"A third form is to write the last 32 bits using the well known IPv4 "
"notation. For example, `2002::10.0.0.1` corresponds to the hexadecimal "
"canonical representation `2002:0000:0000:0000:0000:0000:0a00:0001`, which in "
"turn is equivalent to `2002::a00:1`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2793
msgid "To view a FreeBSD system's IPv6 address, use man:ifconfig[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2797
#, no-wrap
msgid "# ifconfig\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2807
#, no-wrap
msgid ""
"rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500\n"
" inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255\n"
" inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1\n"
" ether 00:00:21:03:08:e1\n"
" media: Ethernet autoselect (100baseTX )\n"
" status: active\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2810
msgid ""
"In this example, the [.filename]#rl0# interface is using `fe80::200:21ff:"
"fe03:8e1%rl0`, an auto-configured link-local address which was automatically "
"generated from the MAC address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2813
msgid ""
"Some IPv6 addresses are reserved. A summary of these reserved addresses is "
"seen in <<reservedip6>>:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2815
#, no-wrap
msgid "Reserved IPv6 Addresses"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2819
#, no-wrap
msgid "IPv6 address"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2820
#, no-wrap
msgid "Prefixlength (Bits)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2821
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2823
#, no-wrap
msgid "Notes"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2824
#, no-wrap
msgid "`::`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2825
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2830
#, no-wrap
msgid "128 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2826
#, no-wrap
msgid "unspecified"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2828
#, no-wrap
msgid "Equivalent to `0.0.0.0` in IPv4."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2829
#, no-wrap
msgid "`::1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2831
#, no-wrap
msgid "loopback address"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2833
#, no-wrap
msgid "Equivalent to `127.0.0.1` in IPv4."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2834
#, no-wrap
msgid "`::00:xx:xx:xx:xx`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2835
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2840
#, no-wrap
msgid "96 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2836
#, no-wrap
msgid "embedded IPv4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2838
#, no-wrap
msgid "The lower 32 bits are the compatible IPv4 address."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2839
#, no-wrap
msgid "`::ff:xx:xx:xx:xx`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2841
#, no-wrap
msgid "IPv4 mapped IPv6 address"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2843
#, no-wrap
msgid "The lower 32 bits are the IPv4 address for hosts which do not support IPv6."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2844
#, no-wrap
msgid "`fe80::/10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2845
#, no-wrap
msgid "10 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2846
#, no-wrap
msgid "link-local"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2848
#, no-wrap
msgid "Equivalent to 169.254.0.0/16 in IPv4."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2849
#, no-wrap
msgid "`fc00::/7`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2850
#, no-wrap
msgid "7 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2851
#, no-wrap
msgid "unique-local"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2853
#, no-wrap
msgid "Unique local addresses are intended for local communication and are only routable within a set of cooperating sites."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2854
#, no-wrap
msgid "`ff00::`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2855
#, no-wrap
msgid "8 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2856
#, no-wrap
msgid "multicast"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2859
#, no-wrap
msgid "``2000::-3fff::``"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2860
#, no-wrap
msgid "3 bits"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2861
#, no-wrap
msgid "global unicast"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2862
#, no-wrap
msgid "All global unicast addresses are assigned from this pool. The first 3 bits are `001`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2865
msgid ""
"For further information on the structure of IPv6 addresses, refer to http://"
"www.ietf.org/rfc/rfc3513.txt[RFC3513]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2866
#, no-wrap
msgid "Configuring IPv6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2869
msgid ""
"To configure a FreeBSD system as an IPv6 client, add these two lines to [."
"filename]#rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2874
#, no-wrap
msgid ""
"ifconfig_rl0_ipv6=\"inet6 accept_rtadv\"\n"
"rtsold_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2878
msgid ""
"The first line enables the specified interface to receive router "
"advertisement messages. The second line enables the router solicitation "
"daemon, man:rtsol[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2880
msgid ""
"If the interface needs a statically assigned IPv6 address, add an entry to "
"specify the static address and associated prefix length:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2884
#, no-wrap
msgid "ifconfig_rl0_ipv6=\"inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2887
msgid "To assign a default router, specify its address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2891
#, no-wrap
msgid "ipv6_defaultrouter=\"2001:db8:4672:6565::1\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2893
#, no-wrap
msgid "Connecting to a Provider"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2896
msgid ""
"In order to connect to other IPv6 networks, one must have a provider or a "
"tunnel that supports IPv6:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2898
msgid "Contact an Internet Service Provider to see if they offer IPv6."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2899
msgid ""
"http://www.tunnelbroker.net[Hurricane Electric] offers tunnels with end-"
"points all around the globe."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2903
msgid ""
"Install the package:net/freenet6[] package or port for a dial-up connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2906
msgid ""
"This section demonstrates how to take the directions from a tunnel provider "
"and convert them into [.filename]#/etc/rc.conf# settings that will persist "
"through reboots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2908
msgid ""
"The first [.filename]#/etc/rc.conf# entry creates the generic tunneling "
"interface [.filename]#gif0#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2912
#, no-wrap
msgid "cloned_interfaces=\"gif0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2916
msgid ""
"Next, configure that interface with the IPv4 addresses of the local and "
"remote endpoints. Replace `_MY_IPv4_ADDR_` and `_REMOTE_IPv4_ADDR_` with "
"the actual IPv4 addresses:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2920
#, no-wrap
msgid "create_args_gif0=\"tunnel MY_IPv4_ADDR REMOTE_IPv4_ADDR\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2923
msgid ""
"To apply the IPv6 address that has been assigned for use as the IPv6 tunnel "
"endpoint, add this line, replacing `_MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR_` "
"with the assigned address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2927
#, no-wrap
msgid "ifconfig_gif0_ipv6=\"inet6 MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2931
msgid ""
"Then, set the default route for the other side of the IPv6 tunnel. Replace "
"`_MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR_` with the default gateway address "
"assigned by the provider:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2935
#, no-wrap
msgid "ipv6_defaultrouter=\"MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2938
msgid ""
"If the FreeBSD system will route IPv6 packets between the rest of the "
"network and the world, enable the gateway using this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2942
#, no-wrap
msgid "ipv6_gateway_enable=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2944
#, no-wrap
msgid "Router Advertisement and Host Auto Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2947
msgid ""
"This section demonstrates how to setup man:rtadvd[8] to advertise the IPv6 "
"default route."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2949
msgid ""
"To enable man:rtadvd[8], add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2953
#, no-wrap
msgid "rtadvd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2957
msgid ""
"It is important to specify the interface on which to do IPv6 router "
"advertisement. For example, to tell man:rtadvd[8] to use [.filename]#rl0#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2961
#, no-wrap
msgid "rtadvd_interfaces=\"rl0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2964
msgid ""
"Next, create the configuration file, [.filename]#/etc/rtadvd.conf# as seen "
"in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2969
#, no-wrap
msgid ""
"rl0:\\\n"
"\t:addrs#1:addr=\"2001:db8:1f11:246::\":prefixlen#64:tc=ether:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2972
msgid ""
"Replace [.filename]#rl0# with the interface to be used and `2001:"
"db8:1f11:246::` with the prefix of the allocation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2975
msgid ""
"For a dedicated `/64` subnet, nothing else needs to be changed. Otherwise, "
"change the `prefixlen#` to the correct value."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2976
#, no-wrap
msgid "IPv6 and IPv4 Address Mapping"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2981
msgid ""
"When IPv6 is enabled on a server, there may be a need to enable IPv4 mapped "
"IPv6 address communication. This compatibility option allows for IPv4 "
"addresses to be represented as IPv6 addresses. Permitting IPv6 applications "
"to communicate with IPv4 and vice versa may be a security issue."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2986
msgid ""
"This option may not be required in most cases and is available only for "
"compatibility. This option will allow IPv6-only applications to work with "
"IPv4 in a dual stack environment. This is most useful for third party "
"applications which may not support an IPv6-only environment. To enable this "
"feature, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2990
#, no-wrap
msgid "ipv6_ipv4mapping=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2993
msgid ""
"Reviewing the information in RFC 3493, section 3.6 and 3.7 as well as RFC "
"4038 section 4.2 may be useful to some administrators."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2995
#, no-wrap
msgid "Common Address Redundancy Protocol (CARP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:2999
msgid ""
"The Common Address Redundancy Protocol (CARP) allows multiple hosts to share "
"the same IP address and Virtual Host ID (VHID) in order to provide _high "
"availability_ for one or more services. This means that one or more hosts "
"can fail, and the other hosts will transparently take over so that users do "
"not see a service failure."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3003
msgid ""
"In addition to the shared IP address, each host has its own IP address for "
"management and configuration. All of the machines that share an IP address "
"have the same VHID. The VHID for each virtual IP address must be unique "
"across the broadcast domain of the network interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3006
msgid ""
"High availability using CARP is built into FreeBSD, though the steps to "
"configure it vary slightly depending upon the FreeBSD version. This section "
"provides the same example configuration for versions before and equal to or "
"after FreeBSD 10."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3009
msgid ""
"This example configures failover support with three hosts, all with unique "
"IP addresses, but providing the same web content. It has two different "
"masters named `hosta.example.org` and `hostb.example.org`, with a shared "
"backup named `hostc.example.org`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3016
msgid ""
"These machines are load balanced with a Round Robin DNS configuration. The "
"master and backup machines are configured identically except for their "
"hostnames and management IP addresses. These servers must have the same "
"configuration and run the same services. When the failover occurs, requests "
"to the service on the shared IP address can only be answered correctly if "
"the backup server has access to the same content. The backup machine has "
"two additional CARP interfaces, one for each of the master content server's "
"IP addresses. When a failure occurs, the backup server will pick up the "
"failed master machine's IP address."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3018
#, no-wrap
msgid "Using CARP on FreeBSD 10 and Later"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3021
msgid ""
"Enable boot-time support for CARP by adding an entry for the [."
"filename]#carp.ko# kernel module in [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3025
#, no-wrap
msgid "carp_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3028
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3109
msgid "To load the module now without rebooting:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3032
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3113
#, no-wrap
msgid "# kldload carp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3035
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3116
msgid ""
"For users who prefer to use a custom kernel, include the following line in "
"the custom kernel configuration file and compile the kernel as described in "
"crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3039
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3120
#, no-wrap
msgid "device\tcarp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3042
msgid ""
"The hostname, management IP address and subnet mask, shared IP address, and "
"VHID are all set by adding entries to [.filename]#/etc/rc.conf#. This "
"example is for `hosta.example.org`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3048
#, no-wrap
msgid ""
"hostname=\"hosta.example.org\"\n"
"ifconfig_em0=\"inet 192.168.1.3 netmask 255.255.255.0\"\n"
"ifconfig_em0_alias0=\"inet vhid 1 pass testpass alias 192.168.1.50/32\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3053
msgid ""
"The next set of entries are for `hostb.example.org`. Since it represents a "
"second master, it uses a different shared IP address and VHID. However, the "
"passwords specified with `pass` must be identical as CARP will only listen "
"to and accept advertisements from machines with the correct password."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3059
#, no-wrap
msgid ""
"hostname=\"hostb.example.org\"\n"
"ifconfig_em0=\"inet 192.168.1.4 netmask 255.255.255.0\"\n"
"ifconfig_em0_alias0=\"inet vhid 2 pass testpass alias 192.168.1.51/32\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3064
msgid ""
"The third machine, `hostc.example.org`, is configured to handle failover "
"from either master. This machine is configured with two CARPVHIDs, one to "
"handle the virtual IP address for each of the master hosts. The CARP "
"advertising skew, `advskew`, is set to ensure that the backup host "
"advertises later than the master, since `advskew` controls the order of "
"precedence when there are multiple backup servers."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3071
#, no-wrap
msgid ""
"hostname=\"hostc.example.org\"\n"
"ifconfig_em0=\"inet 192.168.1.5 netmask 255.255.255.0\"\n"
"ifconfig_em0_alias0=\"inet vhid 1 advskew 100 pass testpass alias 192.168.1.50/32\"\n"
"ifconfig_em0_alias1=\"inet vhid 2 advskew 100 pass testpass alias 192.168.1.51/32\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3075
msgid ""
"Having two CARPVHIDs configured means that `hostc.example.org` will notice "
"if either of the master servers becomes unavailable. If a master fails to "
"advertise before the backup server, the backup server will pick up the "
"shared IP address until the master becomes available again."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3082
msgid ""
"If the original master server becomes available again, `hostc.example.org` "
"will not release the virtual IP address back to it automatically. For this "
"to happen, preemption has to be enabled. The feature is disabled by "
"default, it is controlled via the man:sysctl[8] variable `net.inet.carp."
"preempt`. The administrator can force the backup server to return the IP "
"address to the master:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3086
#, no-wrap
msgid "# ifconfig em0 vhid 1 state backup\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3092
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3178
msgid ""
"Once the configuration is complete, either restart networking or reboot each "
"system. High availability is now enabled."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3095
msgid ""
"CARP functionality can be controlled via several man:sysctl[8] variables "
"documented in the man:carp[4] manual pages. Other actions can be triggered "
"from CARP events by using man:devd[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3097
#, no-wrap
msgid "Using CARP on FreeBSD 9 and Earlier"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3100
msgid ""
"The configuration for these versions of FreeBSD is similar to the one "
"described in the previous section, except that a CARP device must first be "
"created and referred to in the configuration."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3102
msgid ""
"Enable boot-time support for CARP by loading the [.filename]#if_carp.ko# "
"kernel module in [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3106
#, no-wrap
msgid "if_carp_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3123
msgid "Next, on each host, create a CARP device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3127
#, no-wrap
msgid "# ifconfig carp0 create\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3132
msgid ""
"Set the hostname, management IP address, the shared IP address, and VHID by "
"adding the required lines to [.filename]#/etc/rc.conf#. Since a virtual "
"CARP device is used instead of an alias, the actual subnet mask of `/24` is "
"used instead of `/32`. Here are the entries for `hosta.example.org`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3139
#, no-wrap
msgid ""
"hostname=\"hosta.example.org\"\n"
"ifconfig_fxp0=\"inet 192.168.1.3 netmask 255.255.255.0\"\n"
"cloned_interfaces=\"carp0\"\n"
"ifconfig_carp0=\"vhid 1 pass testpass 192.168.1.50/24\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3142
msgid "On `hostb.example.org`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3149
#, no-wrap
msgid ""
"hostname=\"hostb.example.org\"\n"
"ifconfig_fxp0=\"inet 192.168.1.4 netmask 255.255.255.0\"\n"
"cloned_interfaces=\"carp0\"\n"
"ifconfig_carp0=\"vhid 2 pass testpass 192.168.1.51/24\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3152
msgid ""
"The third machine, `hostc.example.org`, is configured to handle failover "
"from either of the master hosts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3160
#, no-wrap
msgid ""
"hostname=\"hostc.example.org\"\n"
"ifconfig_fxp0=\"inet 192.168.1.5 netmask 255.255.255.0\"\n"
"cloned_interfaces=\"carp0 carp1\"\n"
"ifconfig_carp0=\"vhid 1 advskew 100 pass testpass 192.168.1.50/24\"\n"
"ifconfig_carp1=\"vhid 2 advskew 100 pass testpass 192.168.1.51/24\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3167
msgid ""
"Preemption is disabled in the [.filename]#GENERIC# FreeBSD kernel. If "
"preemption has been enabled with a custom kernel, `hostc.example.org` may "
"not release the IP address back to the original content server. The "
"administrator can force the backup server to return the IP address to the "
"master with the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3171
#, no-wrap
msgid "# ifconfig carp0 down && ifconfig carp0 up\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3174
msgid ""
"This should be done on the [.filename]#carp# interface which corresponds to "
"the correct host."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3180
#, no-wrap
msgid "VLANs"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3184
msgid ""
"VLANs are a way of virtually dividing up a network into many different "
"subnetworks, also referred to as segmenting. Each segment will have its own "
"broadcast domain and be isolated from other VLANs."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3187
msgid ""
"On FreeBSD, VLANs must be supported by the network card driver. To see "
"which drivers support vlans, refer to the man:vlan[4] manual page."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3190
msgid ""
"When configuring a VLAN, a couple pieces of information must be known. "
"First, which network interface? Second, what is the VLAN tag?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3192
msgid ""
"To configure VLANs at run time, with a NIC of `em0` and a VLAN tag of `5` "
"the command would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3196
#, no-wrap
msgid "# ifconfig em0.5 create vlan 5 vlandev em0 inet 192.168.20.20/24\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3201
msgid ""
"See how the interface name includes the NIC driver name and the VLAN tag, "
"separated by a period? This is a best practice to make maintaining the VLAN "
"configuration easy when many VLANs are present on a machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3205
msgid ""
"To configure VLANs at boot time, [.filename]#/etc/rc.conf# must be updated. "
"To duplicate the configuration above, the following will need to be added:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3210
#, no-wrap
msgid ""
"vlans_em0=\"5\"\n"
"ifconfig_em0_5=\"inet 192.168.20.20/24\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3213
msgid ""
"Additional VLANs may be added, by simply adding the tag to the `vlans_em0` "
"field and adding an additional line configuring the network on that VLAN "
"tag's interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3217
msgid ""
"It is useful to assign a symbolic name to an interface so that when the "
"associated hardware is changed, only a few configuration variables need to "
"be updated. For example, security cameras need to be run over VLAN 1 on "
"`em0`. Later, if the `em0` card is replaced with a card that uses the man:"
"ixgb[4] driver, all references to `em0.1` will not have to change to "
"`ixgb0.1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3219
msgid ""
"To configure VLAN `5`, on the NIC `em0`, assign the interface name "
"`cameras`, and assign the interface an IP address of `_192.168.20.20_` with "
"a `24`-bit prefix, use this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3223
#, no-wrap
msgid "# ifconfig em0.5 create vlan 5 vlandev em0 name cameras inet 192.168.20.20/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3226
msgid "For an interface named `video`, use the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3230
#, no-wrap
msgid "# ifconfig video.5 create vlan 5 vlandev video name cameras inet 192.168.20.20/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3233
msgid ""
"To apply the changes at boot time, add the following lines to [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/advanced-networking/_index.adoc:3239
#, no-wrap
msgid ""
"vlans_video=\"cameras\"\n"
"create_args_cameras=\"vlan 5\"\n"
"ifconfig_cameras=\"inet 192.168.20.20/24\"\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/audit/_index.po b/documentation/content/en/books/handbook/audit/_index.po
index 16ac163b10..0427e69384 100644
--- a/documentation/content/en/books/handbook/audit/_index.po
+++ b/documentation/content/en/books/handbook/audit/_index.po
@@ -1,1212 +1,1212 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/audit/_index.adoc:1
#, no-wrap
msgid "FreeBSD security event auditing supports reliable, fine-grained, and configurable logging of a variety of security-relevant system events, including logins, configuration changes, and file and network access"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/audit/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/audit/_index.adoc:1
#, no-wrap
-msgid "Chapter 17. Security Event Auditing"
+msgid "Chapter 18. Security Event Auditing"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/audit/_index.adoc:15
#, no-wrap
msgid "Security Event Auditing"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/audit/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:59
msgid ""
"The FreeBSD operating system includes support for security event auditing. "
"Event auditing supports reliable, fine-grained, and configurable logging of "
"a variety of security-relevant system events, including logins, "
"configuration changes, and file and network access. These log records can "
"be invaluable for live system monitoring, intrusion detection, and "
"postmortem analysis. FreeBSD implements Sun(TM)'s published Basic Security "
"Module (BSM) Application Programming Interface (API) and file format, and is "
"interoperable with the Solaris(TM) and Mac OS(R) X audit implementations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:62
msgid ""
"This chapter focuses on the installation and configuration of event "
"auditing. It explains audit policies and provides an example audit "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:64
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:66
msgid "What event auditing is and how it works."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:67
msgid "How to configure event auditing on FreeBSD for users and processes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:68
msgid ""
"How to review the audit trail using the audit reduction and review tools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:70
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:72
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:73
msgid ""
"Be familiar with the basics of kernel configuration/compilation (crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:74
msgid ""
"Have some familiarity with security and how it pertains to FreeBSD (crossref:"
"security[security,Security])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/audit/_index.adoc:79
msgid ""
"The audit facility has some known limitations. Not all security-relevant "
"system events are auditable and some login mechanisms, such as Xorg-based "
"display managers and third-party daemons, do not properly configure auditing "
"for user login sessions."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/audit/_index.adoc:84
msgid ""
"The security event auditing facility is able to generate very detailed logs "
"of system activity. On a busy system, trail file data can be very large "
"when configured for high detail, exceeding gigabytes a week in some "
"configurations. Administrators should take into account the disk space "
"requirements associated with high volume audit configurations. For example, "
"it may be desirable to dedicate a file system to [.filename]#/var/audit# so "
"that other file systems are not affected if the audit file system becomes "
"full."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/audit/_index.adoc:87
#, no-wrap
msgid "Key Terms"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:90
msgid "The following terms are related to security event auditing:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:92
msgid ""
"_event_: an auditable event is any event that can be logged using the audit "
"subsystem. Examples of security-relevant events include the creation of a "
"file, the building of a network connection, or a user logging in. Events are "
"either \"attributable\", meaning that they can be traced to an authenticated "
"user, or \"non-attributable\". Examples of non-attributable events are any "
"events that occur before authentication in the login process, such as bad "
"password attempts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:93
msgid ""
"_class_: a named set of related events which are used in selection "
"expressions. Commonly used classes of events include \"file creation\" (fc), "
"\"exec\" (ex), and \"login_logout\" (lo)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:94
msgid ""
"_record_: an audit log entry describing a security event. Records contain a "
"record event type, information on the subject (user) performing the action, "
"date and time information, information on any objects or arguments, and a "
"success or failure condition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:95
msgid ""
"_trail_: a log file consisting of a series of audit records describing "
"security events. Trails are in roughly chronological order with respect to "
"the time events completed. Only authorized processes are allowed to commit "
"records to the audit trail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:96
msgid ""
"_selection expression_: a string containing a list of prefixes and audit "
"event class names used to match events."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:97
msgid ""
"_preselection_: the process by which the system identifies which events are "
"of interest to the administrator. The preselection configuration uses a "
"series of selection expressions to identify which classes of events to audit "
"for which users, as well as global settings that apply to both authenticated "
"and unauthenticated processes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:98
msgid ""
"_reduction_: the process by which records from existing audit trails are "
"selected for preservation, printing, or analysis. Likewise, the process by "
"which undesired audit records are removed from the audit trail. Using "
"reduction, administrators can implement policies for the preservation of "
"audit data. For example, detailed audit trails might be kept for one month, "
"but after that, trails might be reduced in order to preserve only login "
"information for archival purposes."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/audit/_index.adoc:100
#, no-wrap
msgid "Audit Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:104
msgid ""
"User space support for event auditing is installed as part of the base "
"FreeBSD operating system. Kernel support is available in the [."
"filename]#GENERIC# kernel by default, and man:auditd[8] can be enabled by "
"adding the following line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:108
#, no-wrap
msgid "auditd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:111
msgid "Then, start the audit daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:115
#, no-wrap
msgid "# service auditd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:118
msgid ""
"Users who prefer to compile a custom kernel must include the following line "
"in their custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:122
#, no-wrap
msgid "options\tAUDIT\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/audit/_index.adoc:124
#, no-wrap
msgid "Event Selection Expressions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:129
msgid ""
"Selection expressions are used in a number of places in the audit "
"configuration to determine which events should be audited. Expressions "
"contain a list of event classes to match. Selection expressions are "
"evaluated from left to right, and two expressions are combined by appending "
"one onto the other."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:131
msgid "<<event-selection>> summarizes the default audit event classes:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/audit/_index.adoc:133
#, no-wrap
msgid "Default Audit Event Classes"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:137
#, no-wrap
msgid "Class Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:138
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:140
#: documentation/content/en/books/handbook/audit/_index.adoc:233
#, no-wrap
msgid "Action"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:141
#: documentation/content/en/books/handbook/audit/_index.adoc:142
#, no-wrap
msgid "all"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:144
#, no-wrap
msgid "Match all event classes."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:145
#, no-wrap
msgid "aa"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:146
#, no-wrap
msgid "authentication and authorization"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:149
#, no-wrap
msgid "ad"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:150
#, no-wrap
msgid "administrative"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:152
#, no-wrap
msgid "Administrative actions performed on the system as a whole."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:153
#, no-wrap
msgid "ap"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:154
#, no-wrap
msgid "application"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:156
#, no-wrap
msgid "Application defined action."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:157
#, no-wrap
msgid "cl"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:158
#, no-wrap
msgid "file close"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:160
#, no-wrap
msgid "Audit calls to the `close` system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:161
#, no-wrap
msgid "ex"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:162
#, no-wrap
msgid "exec"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:164
#, no-wrap
msgid "Audit program execution. Auditing of command line arguments and environmental variables is controlled via man:audit_control[5] using the `argv` and `envv` parameters to the `policy` setting."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:165
#, no-wrap
msgid "fa"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:166
#, no-wrap
msgid "file attribute access"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:168
#, no-wrap
msgid "Audit the access of object attributes such as man:stat[1] and man:pathconf[2]."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:169
#, no-wrap
msgid "fc"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:170
#, no-wrap
msgid "file create"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:172
#, no-wrap
msgid "Audit events where a file is created as a result."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:173
#, no-wrap
msgid "fd"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:174
#, no-wrap
msgid "file delete"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:176
#, no-wrap
msgid "Audit events where file deletion occurs."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:177
#, no-wrap
msgid "fm"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:178
#, no-wrap
msgid "file attribute modify"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:180
#, no-wrap
msgid "Audit events where file attribute modification occurs, such as by man:chown[8], man:chflags[1], and man:flock[2]."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:181
#, no-wrap
msgid "fr"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:182
#, no-wrap
msgid "file read"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:184
#, no-wrap
msgid "Audit events in which data is read or files are opened for reading."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:185
#, no-wrap
msgid "fw"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:186
#, no-wrap
msgid "file write"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:188
#, no-wrap
msgid "Audit events in which data is written or files are written or modified."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:189
#, no-wrap
msgid "io"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:190
#, no-wrap
msgid "ioctl"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:192
#, no-wrap
msgid "Audit use of the `ioctl` system call."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:193
#, no-wrap
msgid "ip"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:194
#, no-wrap
msgid "ipc"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:196
#, no-wrap
msgid "Audit various forms of Inter-Process Communication, including POSIX pipes and System V IPC operations."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:197
#, no-wrap
msgid "lo"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:198
#, no-wrap
msgid "login_logout"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:200
#, no-wrap
msgid "Audit man:login[1] and man:logout[1] events."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:201
#, no-wrap
msgid "na"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:202
#, no-wrap
msgid "non attributable"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:204
#, no-wrap
msgid "Audit non-attributable events."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:205
#, no-wrap
msgid "no"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:206
#, no-wrap
msgid "invalid class"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:208
#, no-wrap
msgid "Match no audit events."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:209
#, no-wrap
msgid "nt"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:210
#, no-wrap
msgid "network"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:212
#, no-wrap
msgid "Audit events related to network actions such as man:connect[2] and man:accept[2]."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:213
#, no-wrap
msgid "ot"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:214
#, no-wrap
msgid "other"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:216
#, no-wrap
msgid "Audit miscellaneous events."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:217
#, no-wrap
msgid "pc"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:218
#, no-wrap
msgid "process"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:219
#, no-wrap
msgid "Audit process operations such as man:exec[3] and man:exit[3]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:222
msgid ""
"These audit event classes may be customized by modifying the [."
"filename]#audit_class# and [.filename]#audit_event# configuration files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:225
msgid ""
"Each audit event class may be combined with a prefix indicating whether "
"successful/failed operations are matched, and whether the entry is adding or "
"removing matching for the class and type. <<event-prefixes>> summarizes the "
"available prefixes:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/audit/_index.adoc:227
#, no-wrap
msgid "Prefixes for Audit Event Classes"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:231
#, no-wrap
msgid "Prefix"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:234
#, no-wrap
msgid "+"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:236
#, no-wrap
msgid "Audit successful events in this class."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:237
#, no-wrap
msgid "-"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:239
#, no-wrap
msgid "Audit failed events in this class."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:240
#, no-wrap
msgid "^"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:242
#, no-wrap
msgid "Audit neither successful nor failed events in this class."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:243
#, no-wrap
msgid "^+"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:245
#, no-wrap
msgid "Do not audit successful events in this class."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:246
#, no-wrap
msgid "^-"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/audit/_index.adoc:247
#, no-wrap
msgid "Do not audit failed events in this class."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:250
msgid ""
"If no prefix is present, both successful and failed instances of the event "
"will be audited."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:252
msgid ""
"The following example selection string selects both successful and failed "
"login/logout events, but only successful execution events:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:256
#, no-wrap
msgid "lo,+ex\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/audit/_index.adoc:258
#, no-wrap
msgid "Configuration Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:261
msgid ""
"The following configuration files for security event auditing are found in [."
"filename]#/etc/security#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:263
msgid ""
"[.filename]#audit_class#: contains the definitions of the audit classes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:264
msgid ""
"[.filename]#audit_control#: controls aspects of the audit subsystem, such as "
"default audit classes, minimum disk space to leave on the audit log volume, "
"and maximum audit trail size."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:265
msgid ""
"[.filename]#audit_event#: textual names and descriptions of system audit "
"events and a list of which classes each event is in."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:266
msgid ""
"[.filename]#audit_user#: user-specific audit requirements to be combined "
"with the global defaults at login."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:267
msgid ""
"[.filename]#audit_warn#: a customizable shell script used by man:auditd[8] "
"to generate warning messages in exceptional situations, such as when space "
"for audit records is running low or when the audit trail file has been "
"rotated."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/audit/_index.adoc:271
msgid ""
"Audit configuration files should be edited and maintained carefully, as "
"errors in configuration may result in improper logging of events."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:275
msgid ""
"In most cases, administrators will only need to modify [."
"filename]#audit_control# and [.filename]#audit_user#. The first file "
"controls system-wide audit properties and policies and the second file may "
"be used to fine-tune auditing by user."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/audit/_index.adoc:277
#, no-wrap
msgid "The [.filename]#audit_control# File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:280
msgid ""
"A number of defaults for the audit subsystem are specified in [."
"filename]#audit_control#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:291
#, no-wrap
msgid ""
"dir:/var/audit\n"
"dist:off\n"
"flags:lo,aa\n"
"minfree:5\n"
"naflags:lo,aa\n"
"policy:cnt,argv\n"
"filesz:2M\n"
"expire-after:10M\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:296
msgid ""
"The `dir` entry is used to set one or more directories where audit logs will "
"be stored. If more than one directory entry appears, they will be used in "
"order as they fill. It is common to configure audit so that audit logs are "
"stored on a dedicated file system, in order to prevent interference between "
"the audit subsystem and other subsystems if the file system fills."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:298
msgid ""
"If the `dist` field is set to `on` or `yes`, hard links will be created to "
"all trail files in [.filename]#/var/audit/dist#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:301
msgid ""
"The `flags` field sets the system-wide default preselection mask for "
"attributable events. In the example above, successful and failed login/"
"logout events as well as authentication and authorization are audited for "
"all users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:303
msgid ""
"The `minfree` entry defines the minimum percentage of free space for the "
"file system where the audit trail is stored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:305
msgid ""
"The `naflags` entry specifies audit classes to be audited for non-attributed "
"events, such as the login/logout process and authentication and "
"authorization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:309
msgid ""
"The `policy` entry specifies a comma-separated list of policy flags "
"controlling various aspects of audit behavior. The `cnt` indicates that the "
"system should continue running despite an auditing failure (this flag is "
"highly recommended). The other flag, `argv`, causes command line arguments "
"to the man:execve[2] system call to be audited as part of command execution."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:313
msgid ""
"The `filesz` entry specifies the maximum size for an audit trail before "
"automatically terminating and rotating the trail file. A value of `0` "
"disables automatic log rotation. If the requested file size is below the "
"minimum of 512k, it will be ignored and a log message will be generated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:315
msgid ""
"The `expire-after` field specifies when audit log files will expire and be "
"removed."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/audit/_index.adoc:317
#, no-wrap
msgid "The [.filename]#audit_user# File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:321
msgid ""
"The administrator can specify further audit requirements for specific users "
"in [.filename]#audit_user#. Each line configures auditing for a user via "
"two fields: the `alwaysaudit` field specifies a set of events that should "
"always be audited for the user, and the `neveraudit` field specifies a set "
"of events that should never be audited for the user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:324
msgid ""
"The following example entries audit login/logout events and successful "
"command execution for `root` and file creation and successful command "
"execution for `www`. If used with the default [.filename]#audit_control#, "
"the `lo` entry for `root` is redundant, and login/logout events will also be "
"audited for `www`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:329
#, no-wrap
msgid ""
"root:lo,+ex:no\n"
"www:fc,+ex:no\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/audit/_index.adoc:332
#, no-wrap
msgid "Working with Audit Trails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:338
msgid ""
"Since audit trails are stored in the BSM binary format, several built-in "
"tools are available to modify or convert these trails to text. To convert "
"trail files to a simple text format, use `praudit`. To reduce the audit "
"trail file for analysis, archiving, or printing purposes, use "
"`auditreduce`. This utility supports a variety of selection parameters, "
"including event type, event class, user, date or time of the event, and the "
"file path or object acted on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:340
msgid ""
"For example, to dump the entire contents of a specified audit log in plain "
"text:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:344
#, no-wrap
msgid "# praudit /var/audit/AUDITFILE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:347
msgid "Where _AUDITFILE_ is the audit log to dump."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:351
msgid ""
"Audit trails consist of a series of audit records made up of tokens, which "
"`praudit` prints sequentially, one per line. Each token is of a specific "
"type, such as `header` (an audit record header) or `path` (a file path from "
"a name lookup). The following is an example of an `execve` event:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:361
#, no-wrap
msgid ""
"header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec\n"
"exec arg,finger,doug\n"
"path,/usr/bin/finger\n"
"attribute,555,root,wheel,90,24918,104944\n"
"subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100\n"
"return,success,0\n"
"trailer,133\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:370
msgid ""
"This audit represents a successful `execve` call, in which the command "
"`finger doug` has been run. The `exec arg` token contains the processed "
"command line presented by the shell to the kernel. The `path` token holds "
"the path to the executable as looked up by the kernel. The `attribute` "
"token describes the binary and includes the file mode. The `subject` token "
"stores the audit user ID, effective user ID and group ID, real user ID and "
"group ID, process ID, session ID, port ID, and login address. Notice that "
"the audit user ID and real user ID differ as the user `robert` switched to "
"the `root` account before running this command, but it is audited using the "
"original authenticated user. The `return` token indicates the successful "
"execution and the `trailer` concludes the record."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:372
msgid ""
"XML output format is also supported and can be selected by including `-x`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:375
msgid ""
"Since audit logs may be very large, a subset of records can be selected "
"using `auditreduce`. This example selects all audit records produced for "
"the user `trhodes` stored in [.filename]#AUDITFILE#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:379
#, no-wrap
msgid "# auditreduce -u trhodes /var/audit/AUDITFILE | praudit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:385
msgid ""
"Members of the `audit` group have permission to read audit trails in [."
"filename]#/var/audit#. By default, this group is empty, so only the `root` "
"user can read audit trails. Users may be added to the `audit` group in "
"order to delegate audit review rights. As the ability to track audit log "
"contents provides significant insight into the behavior of users and "
"processes, it is recommended that the delegation of audit review rights be "
"performed with caution."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/audit/_index.adoc:386
#, no-wrap
msgid "Live Monitoring Using Audit Pipes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:392
msgid ""
"Audit pipes are cloning pseudo-devices which allow applications to tap the "
"live audit record stream. This is primarily of interest to authors of "
"intrusion detection and system monitoring applications. However, the audit "
"pipe device is a convenient way for the administrator to allow live "
"monitoring without running into problems with audit trail file ownership or "
"log rotation interrupting the event stream. To track the live audit event "
"stream:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:396
#, no-wrap
msgid "# praudit /dev/auditpipe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:400
msgid ""
"By default, audit pipe device nodes are accessible only to the `root` user. "
"To make them accessible to the members of the `audit` group, add a `devfs` "
"rule to [.filename]#/etc/devfs.rules#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:404
#, no-wrap
msgid "add path 'auditpipe*' mode 0440 group audit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:407
msgid ""
"See man:devfs.rules[5] for more information on configuring the devfs file "
"system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/audit/_index.adoc:413
msgid ""
"It is easy to produce audit event feedback cycles, in which the viewing of "
"each audit event results in the generation of more audit events. For "
"example, if all network I/O is audited, and `praudit` is run from an SSH "
"session, a continuous stream of audit events will be generated at a high "
"rate, as each event being printed will generate another event. For this "
"reason, it is advisable to run `praudit` on an audit pipe device from "
"sessions without fine-grained I/O auditing."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/audit/_index.adoc:415
#, no-wrap
msgid "Rotating and Compressing Audit Trail Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:422
msgid ""
"Audit trails are written to by the kernel and managed by the audit daemon, "
"man:auditd[8]. Administrators should not attempt to use man:newsyslog."
"conf[5] or other tools to directly rotate audit logs. Instead, `audit` "
"should be used to shut down auditing, reconfigure the audit system, and "
"perform log rotation. The following command causes the audit daemon to "
"create a new audit log and signal the kernel to switch to using the new "
"log. The old log will be terminated and renamed, at which point it may then "
"be manipulated by the administrator:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:426
#, no-wrap
msgid "# audit -n\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:429
msgid ""
"If man:auditd[8] is not currently running, this command will fail and an "
"error message will be produced."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:431
msgid ""
"Adding the following line to [.filename]#/etc/crontab# will schedule this "
"rotation every twelve hours:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:435
#, no-wrap
msgid "0 */12 * * * root /usr/sbin/audit -n\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:438
msgid "The change will take effect once [.filename]#/etc/crontab# is saved."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:440
msgid ""
"Automatic rotation of the audit trail file based on file size is possible "
"using `filesz` in [.filename]#audit_control# as described in <<audit-"
"auditcontrol>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:444
msgid ""
"As audit trail files can become very large, it is often desirable to "
"compress or otherwise archive trails once they have been closed by the audit "
"daemon. The [.filename]#audit_warn# script can be used to perform "
"customized operations for a variety of audit-related events, including the "
"clean termination of audit trails when they are rotated. For example, the "
"following may be added to [.filename]#/etc/security/audit_warn# to compress "
"audit trails on close:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/audit/_index.adoc:453
#, no-wrap
msgid ""
"#\n"
"# Compress audit trail files on close.\n"
"#\n"
"if [ \"$1\" = closefile ]; then\n"
" gzip -9 $2\n"
"fi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/audit/_index.adoc:457
msgid ""
"Other archiving activities might include copying trail files to a "
"centralized server, deleting old trail files, or reducing the audit trail to "
"remove unneeded records. This script will be run only when audit trail "
"files are cleanly terminated. It will not be run on trails left "
"unterminated following an improper shutdown."
msgstr ""
diff --git a/documentation/content/en/books/handbook/basics/_index.po b/documentation/content/en/books/handbook/basics/_index.po
index c92f72c14a..9a598d8cf5 100644
--- a/documentation/content/en/books/handbook/basics/_index.po
+++ b/documentation/content/en/books/handbook/basics/_index.po
@@ -1,4475 +1,4435 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/basics/_index.adoc:1
#, no-wrap
msgid "Basic commands and functionality of the FreeBSD operating system"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/basics/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/basics/_index.adoc:1
#, no-wrap
msgid "Chapter 3. FreeBSD Basics"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/basics/_index.adoc:15
#, no-wrap
msgid "FreeBSD Basics"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/basics/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:58
msgid ""
"This chapter covers the basic commands and functionality of the FreeBSD "
"operating system. Much of this material is relevant for any UNIX(R)-like "
"operating system. New FreeBSD users are encouraged to read through this "
"chapter carefully."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:60
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:62
msgid "How to use and configure virtual consoles."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:63
msgid "How to create and manage users and groups on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:64
msgid "How UNIX(R) file permissions and FreeBSD file flags work."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:65
msgid "The default FreeBSD file system layout."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:66
msgid "The FreeBSD disk organization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:67
msgid "How to mount and unmount file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:68
msgid "What processes, daemons, and signals are."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:69
msgid "What a shell is, and how to change the default login environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:70
msgid "How to use basic text editors."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:71
msgid "What devices and device nodes are."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:72
msgid "How to read manual pages for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/basics/_index.adoc:74
#, no-wrap
msgid "Virtual Consoles and Terminals"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:77
msgid ""
"Unless FreeBSD has been configured to automatically start a graphical "
"environment during startup, the system will boot into a command line login "
"prompt, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:81
#, no-wrap
msgid "FreeBSD/amd64 (pc3.example.org) (ttyv0)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:83
#, no-wrap
msgid "login:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:89
msgid ""
"The first line contains some information about the system. The `amd64` "
"indicates that the system in this example is running a 64-bit version of "
-"FreeBSD. The hostname is `pc3.example.org`, and [.filename]#ttyv0# "
-"indicates that this is the \"system console\". The second line is the login "
-"prompt."
+"FreeBSD. The hostname is `pc3.example.org`, and `ttyv0` indicates that this "
+"is the \"system console\". The second line is the login prompt."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:93
msgid ""
"Since FreeBSD is a multiuser system, it needs some way to distinguish "
"between different users. This is accomplished by requiring every user to "
"log into the system before gaining access to the programs on the system. "
-"Every user has a unique name \"username\" and a personal \"password\"."
+"Every user has a unique \"username\" and a personal \"password\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:97
msgid ""
"To log into the system console, type the username that was configured during "
"system installation, as described in crossref:bsdinstall[bsdinstall-addusers,"
"Add Users], and press kbd:[Enter]. Then enter the password associated with "
"the username and press kbd:[Enter]. The password is _not echoed_ for "
"security reasons."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:101
msgid ""
"Once the correct password is input, the message of the day (MOTD) will be "
"displayed followed by a command prompt. Depending upon the shell that was "
-"selected when the user was created, this prompt will be a `#`, `$`, or `%` "
+"selected when the user was created, this prompt will be a `+#+`, `$`, or `%` "
"character. The prompt indicates that the user is now logged into the "
"FreeBSD system console and ready to try the available commands."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/basics/_index.adoc:103
#, no-wrap
msgid "Virtual Consoles"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:108
msgid ""
"While the system console can be used to interact with the system, a user "
"working from the command line at the keyboard of a FreeBSD system will "
"typically instead log into a virtual console. This is because system "
"messages are configured by default to display on the system console. These "
"messages will appear over the command or file that the user is working on, "
"making it difficult to concentrate on the work at hand."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:112
msgid ""
"By default, FreeBSD is configured to provide several virtual consoles for "
"inputting commands. Each virtual console has its own login prompt and shell "
"and it is easy to switch between virtual consoles. This essentially "
"provides the command line equivalent of having several windows open at the "
"same time in a graphical environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:116
msgid ""
"The key combinations kbd:[Alt+F1] through kbd:[Alt+F8] have been reserved by "
"FreeBSD for switching between virtual consoles. Use kbd:[Alt+F1] to switch "
-"to the system console ([.filename]#ttyv0#), kbd:[Alt+F2] to access the first "
-"virtual console ([.filename]#ttyv1#), kbd:[Alt+F3] to access the second "
-"virtual console ([.filename]#ttyv2#), and so on. When using Xorg as a "
-"graphical console, the combination becomes kbd:[Ctrl+Alt+F1] to return to a "
-"text-based virtual console."
+"to the system console (`ttyv0`), kbd:[Alt+F2] to access the first virtual "
+"console (`ttyv1`), kbd:[Alt+F3] to access the second virtual console "
+"(`ttyv2`), and so on. When using Xorg as a graphical console, the "
+"combination becomes kbd:[Ctrl+Alt+F1] to return to a text-based virtual "
+"console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:120
msgid ""
"When switching from one console to the next, FreeBSD manages the screen "
"output. The result is an illusion of having multiple virtual screens and "
"keyboards that can be used to type commands for FreeBSD to run. The "
"programs that are launched in one virtual console do not stop running when "
"the user switches to a different virtual console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:122
msgid ""
"Refer to man:kbdcontrol[1], man:vidcontrol[1], man:atkbd[4], man:syscons[4], "
"and man:vt[4] for a more technical description of the FreeBSD console and "
"its keyboard drivers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:124
msgid ""
"In FreeBSD, the number of available virtual consoles is configured in this "
-"section of [.filename]#/etc/ttys#:"
+"section of `/etc/ttys`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:139
#, no-wrap
msgid ""
"# name getty type status comments\n"
"#\n"
"ttyv0 \"/usr/libexec/getty Pc\" xterm on secure\n"
"# Virtual terminals\n"
"ttyv1 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv2 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv3 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv4 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv5 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv6 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv7 \"/usr/libexec/getty Pc\" xterm on secure\n"
"ttyv8 \"/usr/X11R6/bin/xdm -nodaemon\" xterm off secure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:145
msgid ""
-"To disable a virtual console, put a comment symbol (`\\#`) at the beginning "
+"To disable a virtual console, put a comment symbol (`+#+`) at the beginning "
"of the line representing that virtual console. For example, to reduce the "
-"number of available virtual consoles from eight to four, put a `#` in front "
-"of the last four lines representing virtual consoles [.filename]#ttyv5# "
-"through [.filename]#ttyv8#. _Do not_ comment out the line for the system "
-"console [.filename]#ttyv0#. Note that the last virtual console ([."
-"filename]#ttyv8#) is used to access the graphical environment if Xorg has "
-"been installed and configured as described in crossref:x11[x11,The X Window "
-"System]."
+"number of available virtual consoles from eight to four, put a `+#+` in "
+"front of the last four lines representing virtual consoles `ttyv5` through "
+"`ttyv8`. _Do not_ comment out the line for the system console `ttyv0`. "
+"Note that the last virtual console (`ttyv8`) is used to access the graphical "
+"environment if Xorg has been installed and configured as described in "
+"crossref:x11[x11,The X Window System]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:147
msgid ""
"For a detailed description of every column in this file and the available "
"options for the virtual consoles, refer to man:ttys[5]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/basics/_index.adoc:149
#, no-wrap
msgid "Single User Mode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:157
msgid ""
"The FreeBSD boot menu provides an option labelled as \"Boot Single User\". "
"If this option is selected, the system will boot into a special mode known "
"as \"single user mode\". This mode is typically used to repair a system "
"that will not boot or to reset the `root` password when it is not known. "
"While in single user mode, networking and other virtual consoles are not "
"available. However, full `root` access to the system is available, and by "
"default, the `root` password is not needed. For these reasons, physical "
"access to the keyboard is needed to boot into this mode and determining who "
"has physical access to the keyboard is something to consider when securing a "
"FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:159
msgid ""
-"The settings which control single user mode are found in this section of [."
-"filename]#/etc/ttys#:"
+"The settings which control single user mode are found in this section of `/"
+"etc/ttys`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:167
#, no-wrap
msgid ""
"# name getty type status comments\n"
"#\n"
"# If console is marked \"insecure\", then init will ask for the root password\n"
"# when going to single-user mode.\n"
"console none unknown off secure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:173
msgid ""
"By default, the status is set to `secure`. This assumes that who has "
"physical access to the keyboard is either not important or it is controlled "
"by a physical security policy. If this setting is changed to `insecure`, "
"the assumption is that the environment itself is insecure because anyone can "
"access the keyboard. When this line is changed to `insecure`, FreeBSD will "
"prompt for the `root` password when a user selects to boot into single user "
"mode."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/basics/_index.adoc:177
msgid ""
"_Be careful when changing this setting to `insecure`!_ If the `root` "
"password is forgotten, booting into single user mode is still possible, but "
"may be difficult for someone who is not familiar with the FreeBSD booting "
"process."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/basics/_index.adoc:180
#, no-wrap
msgid "Changing Console Video Modes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:184
msgid ""
"The FreeBSD console default video mode may be adjusted to 1024x768, "
"1280x1024, or any other size supported by the graphics chip and monitor. To "
"use a different video mode load the `VESA` module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:188
#, no-wrap
msgid "# kldload vesa\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:192
msgid ""
"To determine which video modes are supported by the hardware, use man:"
"vidcontrol[1]. To get a list of supported video modes issue the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:196
#, no-wrap
msgid "# vidcontrol -i mode\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:200
msgid ""
"The output of this command lists the video modes that are supported by the "
"hardware. To select a new video mode, specify the mode using man:"
"vidcontrol[1] as the `root` user:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:204
#, no-wrap
msgid "# vidcontrol MODE_279\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:207
msgid ""
"If the new video mode is acceptable, it can be permanently set on boot by "
-"adding it to [.filename]#/etc/rc.conf#:"
+"adding it to `/etc/rc.conf`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/basics/_index.adoc:211
#, no-wrap
msgid "allscreens_flags=\"MODE_279\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/basics/_index.adoc:214
#, no-wrap
msgid "Users and Basic Account Management"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:219
msgid ""
"FreeBSD allows multiple users to use the computer at the same time. While "
"only one user can sit in front of the screen and use the keyboard at any one "
"time, any number of users can log in to the system through the network. To "
"use the system, each user should have their own user account."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:221
msgid "This chapter describes:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:223
msgid "The different types of user accounts on a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:224
msgid "How to add, remove, and modify user accounts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:225
msgid ""
"How to set limits to control the resources that users and groups are allowed "
"to access."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:226
msgid "How to create groups and add users as members of a group."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/basics/_index.adoc:228
#, no-wrap
msgid "Account Types"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:231
msgid ""
"Since all access to the FreeBSD system is achieved using accounts and all "
"processes are run by users, user and account management is important."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:233
msgid ""
"There are three main types of accounts: system accounts, user accounts, and "
"the superuser account."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/basics/_index.adoc:235
#, no-wrap
msgid "System Accounts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:239
msgid ""
"System accounts are used to run services such as DNS, mail, and web "
"servers. The reason for this is security; if all services ran as the "
"superuser, they could act without restriction."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/basics/_index.adoc:241
msgid ""
"Examples of system accounts are `daemon`, `operator`, `bind`, `news`, and "
"`www`."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:246
-msgid ""
-"Care must be taken when using the operator group, as unintended superuser-"
-"like access privileges may be granted, including but not limited to "
-"shutdown, reboot, and access to all items in [.filename]#/dev# in the group."
-msgstr ""
-
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:250
+#: documentation/content/en/books/handbook/basics/_index.adoc:244
msgid ""
"`nobody` is the generic unprivileged system account. However, the more "
"services that use `nobody`, the more files and processes that user will "
"become associated with, and hence the more privileged that user becomes."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:252
+#: documentation/content/en/books/handbook/basics/_index.adoc:246
#, no-wrap
msgid "User Accounts"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:257
+#: documentation/content/en/books/handbook/basics/_index.adoc:251
msgid ""
"User accounts are assigned to real people and are used to log in and use the "
"system. Every person accessing the system should have a unique user "
"account. This allows the administrator to find out who is doing what and "
"prevents users from clobbering the settings of other users."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:259
+#: documentation/content/en/books/handbook/basics/_index.adoc:253
msgid ""
"Each user can set up their own environment to accommodate their use of the "
"system, by configuring their default shell, editor, key bindings, and "
"language settings."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:261
+#: documentation/content/en/books/handbook/basics/_index.adoc:255
msgid ""
"Every user account on a FreeBSD system has certain information associated "
"with it:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:262
+#: documentation/content/en/books/handbook/basics/_index.adoc:256
#, no-wrap
msgid "User name"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:267
+#: documentation/content/en/books/handbook/basics/_index.adoc:261
msgid ""
"The user name is typed at the `login:` prompt. Each user must have a unique "
"user name. There are a number of rules for creating valid user names which "
"are documented in man:passwd[5]. It is recommended to use user names that "
"consist of eight or fewer, all lower case characters in order to maintain "
"backwards compatibility with applications."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:268
+#: documentation/content/en/books/handbook/basics/_index.adoc:262
#, no-wrap
msgid "Password"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:270
+#: documentation/content/en/books/handbook/basics/_index.adoc:264
msgid "Each account has an associated password."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:271
+#: documentation/content/en/books/handbook/basics/_index.adoc:265
#, no-wrap
msgid "User ID (UID)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:275
+#: documentation/content/en/books/handbook/basics/_index.adoc:269
msgid ""
"The User ID (UID) is a number used to uniquely identify the user to the "
"FreeBSD system. Commands that allow a user name to be specified will first "
"convert it to the UID. It is recommended to use a UID less than 65535, "
"since higher values may cause compatibility issues with some software."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:276
+#: documentation/content/en/books/handbook/basics/_index.adoc:270
#, no-wrap
msgid "Group ID (GID)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:281
+#: documentation/content/en/books/handbook/basics/_index.adoc:275
msgid ""
"The Group ID (GID) is a number used to uniquely identify the primary group "
"that the user belongs to. Groups are a mechanism for controlling access to "
"resources based on a user's GID rather than their UID. This can "
"significantly reduce the size of some configuration files and allows users "
"to be members of more than one group. It is recommended to use a GID of "
"65535 or lower as higher GIDs may break some software."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:282
+#: documentation/content/en/books/handbook/basics/_index.adoc:276
#, no-wrap
msgid "Login class"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:285
+#: documentation/content/en/books/handbook/basics/_index.adoc:279
msgid ""
"Login classes are an extension to the group mechanism that provide "
"additional flexibility when tailoring the system to different users. Login "
"classes are discussed further in crossref:security[users-limiting,"
"Configuring Login Classes]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:286
+#: documentation/content/en/books/handbook/basics/_index.adoc:280
#, no-wrap
msgid "Password change time"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:289
+#: documentation/content/en/books/handbook/basics/_index.adoc:283
msgid ""
"By default, passwords do not expire. However, password expiration can be "
"enabled on a per-user basis, forcing some or all users to change their "
"passwords after a certain amount of time has elapsed."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:290
+#: documentation/content/en/books/handbook/basics/_index.adoc:284
#, no-wrap
msgid "Account expiration time"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:294
+#: documentation/content/en/books/handbook/basics/_index.adoc:288
msgid ""
"By default, FreeBSD does not expire accounts. When creating accounts that "
"need a limited lifespan, such as student accounts in a school, specify the "
"account expiry date using man:pw[8]. After the expiry time has elapsed, the "
"account cannot be used to log in to the system, although the account's "
"directories and files will remain."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:295
+#: documentation/content/en/books/handbook/basics/_index.adoc:289
#, no-wrap
msgid "User's full name"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:298
+#: documentation/content/en/books/handbook/basics/_index.adoc:292
msgid ""
"The user name uniquely identifies the account to FreeBSD, but does not "
"necessarily reflect the user's real name. Similar to a comment, this "
"information can contain spaces, uppercase characters, and be more than 8 "
"characters long."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:299
+#: documentation/content/en/books/handbook/basics/_index.adoc:293
#, no-wrap
msgid "Home directory"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:304
+#: documentation/content/en/books/handbook/basics/_index.adoc:298
msgid ""
"The home directory is the full path to a directory on the system. This is "
"the user's starting directory when the user logs in. A common convention is "
-"to put all user home directories under [.filename]#/home/username# or [."
-"filename]#/usr/home/username#. Each user stores their personal files and "
-"subdirectories in their own home directory."
+"to put all user home directories under `/home/username` or `/usr/home/"
+"username`. Each user stores their personal files and subdirectories in "
+"their own home directory."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:305
+#: documentation/content/en/books/handbook/basics/_index.adoc:299
#, no-wrap
msgid "User shell"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:308
+#: documentation/content/en/books/handbook/basics/_index.adoc:302
msgid ""
"The shell provides the user's default environment for interacting with the "
"system. There are many different kinds of shells and experienced users will "
"have their own preferences, which can be reflected in their account settings."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:310
+#: documentation/content/en/books/handbook/basics/_index.adoc:304
#, no-wrap
msgid "The Superuser Account"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:314
+#: documentation/content/en/books/handbook/basics/_index.adoc:308
msgid ""
"The superuser account, usually called `root`, is used to manage the system "
"with no limitations on privileges. For this reason, it should not be used "
"for day-to-day tasks like sending and receiving mail, general exploration of "
"the system, or programming."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:317
+#: documentation/content/en/books/handbook/basics/_index.adoc:311
msgid ""
"The superuser, unlike other user accounts, can operate without limits, and "
"misuse of the superuser account may result in spectacular disasters. User "
"accounts are unable to destroy the operating system by mistake, so it is "
"recommended to login as a user account and to only become the superuser when "
"a command requires extra privilege."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:319
+#: documentation/content/en/books/handbook/basics/_index.adoc:313
msgid ""
"Always double and triple-check any commands issued as the superuser, since "
"an extra space or missing character can mean irreparable data loss."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:322
+#: documentation/content/en/books/handbook/basics/_index.adoc:316
msgid ""
"There are several ways to gain superuser privilege. While one can log in as "
"`root`, this is highly discouraged."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:327
+#: documentation/content/en/books/handbook/basics/_index.adoc:321
msgid ""
"Instead, use man:su[1] to become the superuser. If `-` is specified when "
"running this command, the user will also inherit the root user's "
"environment. The user running this command must be in the `wheel` group or "
"else the command will fail. The user must also know the password for the "
"`root` user account."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:330
+#: documentation/content/en/books/handbook/basics/_index.adoc:324
msgid ""
"In this example, the user only becomes superuser in order to run `make "
"install` as this step requires superuser privilege. Once the command "
"completes, the user types `exit` to leave the superuser account and return "
"to the privilege of their user account."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:331
+#: documentation/content/en/books/handbook/basics/_index.adoc:325
#, no-wrap
msgid "Install a Program As the Superuser"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:343
+#: documentation/content/en/books/handbook/basics/_index.adoc:337
#, no-wrap
msgid ""
"% configure\n"
"% make\n"
"% su -\n"
"Password:\n"
"# make install\n"
"# exit\n"
"%\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:349
+#: documentation/content/en/books/handbook/basics/_index.adoc:343
msgid ""
"The built-in man:su[1] framework works well for single systems or small "
"networks with just one system administrator. An alternative is to install "
"the package:security/sudo[] package or port. This software provides "
"activity logging and allows the administrator to configure which users can "
"run which commands as the superuser."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:351
+#: documentation/content/en/books/handbook/basics/_index.adoc:345
#, no-wrap
msgid "Managing Accounts"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:356
+#: documentation/content/en/books/handbook/basics/_index.adoc:350
msgid ""
"FreeBSD provides a variety of different commands to manage user accounts. "
"The most common commands are summarized in <<users-modifying-utilities>>, "
"followed by some examples of their usage. See the manual page for each "
"utility for more details and usage examples."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:358
+#: documentation/content/en/books/handbook/basics/_index.adoc:352
#, no-wrap
msgid "Utilities for Managing User Accounts"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:362
+#: documentation/content/en/books/handbook/basics/_index.adoc:356
#, no-wrap
msgid "Command"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:364
+#: documentation/content/en/books/handbook/basics/_index.adoc:358
#, no-wrap
msgid "Summary"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:365
+#: documentation/content/en/books/handbook/basics/_index.adoc:359
#, no-wrap
msgid "man:adduser[8]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:367
+#: documentation/content/en/books/handbook/basics/_index.adoc:361
#, no-wrap
msgid "The recommended command-line application for adding new users."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:368
+#: documentation/content/en/books/handbook/basics/_index.adoc:362
#, no-wrap
msgid "man:rmuser[8]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:370
+#: documentation/content/en/books/handbook/basics/_index.adoc:364
#, no-wrap
msgid "The recommended command-line application for removing users."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:371
+#: documentation/content/en/books/handbook/basics/_index.adoc:365
#, no-wrap
msgid "man:chpass[1]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:373
+#: documentation/content/en/books/handbook/basics/_index.adoc:367
#, no-wrap
msgid "A flexible tool for changing user database information."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:374
+#: documentation/content/en/books/handbook/basics/_index.adoc:368
#, no-wrap
msgid "man:passwd[1]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:376
+#: documentation/content/en/books/handbook/basics/_index.adoc:370
#, no-wrap
msgid "The command-line tool to change user passwords."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:377
+#: documentation/content/en/books/handbook/basics/_index.adoc:371
#, no-wrap
msgid "man:pw[8]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:378
+#: documentation/content/en/books/handbook/basics/_index.adoc:373
#, no-wrap
msgid "A powerful and flexible tool for modifying all aspects of user accounts."
msgstr ""
+#. type: Table
+#: documentation/content/en/books/handbook/basics/_index.adoc:374
+#, no-wrap
+msgid "man:bsdconfig[8]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/handbook/basics/_index.adoc:375
+#, no-wrap
+msgid "A system configuration utility with account management support."
+msgstr ""
+
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:381
+#: documentation/content/en/books/handbook/basics/_index.adoc:378
#, no-wrap
-msgid "`adduser`"
+msgid "Adding a user"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:387
+#: documentation/content/en/books/handbook/basics/_index.adoc:384
msgid ""
"The recommended program for adding new users is man:adduser[8]. When a new "
-"user is added, this program automatically updates [.filename]#/etc/passwd# "
-"and [.filename]#/etc/group#. It also creates a home directory for the new "
-"user, copies in the default configuration files from [.filename]#/usr/share/"
-"skel#, and can optionally mail the new user a welcome message. This utility "
-"must be run as the superuser."
+"user is added, this program automatically updates `/etc/passwd` and `/etc/"
+"group`. It also creates a home directory for the new user, copies in the "
+"default configuration files from `/usr/share/skel`, and can optionally mail "
+"the new user a welcome message. This utility must be run as the superuser."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:392
+#: documentation/content/en/books/handbook/basics/_index.adoc:389
msgid ""
"The man:adduser[8] utility is interactive and walks through the steps for "
"creating a new user account. As seen in <<users-modifying-adduser>>, either "
"input the required information or press kbd:[Return] to accept the default "
"value shown in square brackets. In this example, the user has been invited "
"into the `wheel` group, allowing them to become the superuser with man:"
"su[1]. When finished, the utility will prompt to either create another user "
"or to exit."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:394
+#: documentation/content/en/books/handbook/basics/_index.adoc:391
#, no-wrap
msgid "Adding a User on FreeBSD"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:429
+#: documentation/content/en/books/handbook/basics/_index.adoc:425
#, no-wrap
msgid ""
"# adduser\n"
"Username: jru\n"
"Full name: J. Random User\n"
"Uid (Leave empty for default):\n"
"Login group [jru]:\n"
"Login group is jru. Invite jru into other groups? []: wheel\n"
"Login class [default]:\n"
"Shell (sh csh tcsh zsh nologin) [sh]: zsh\n"
"Home directory [/home/jru]:\n"
"Home directory permissions (Leave empty for default):\n"
"Use password-based authentication? [yes]:\n"
"Use an empty password? (yes/no) [no]:\n"
"Use a random password? (yes/no) [no]:\n"
"Enter password:\n"
"Enter password again:\n"
"Lock out the account after creation? [no]:\n"
"Username : jru\n"
"Password : ****\n"
"Full Name : J. Random User\n"
"Uid : 1001\n"
"Class :\n"
"Groups : jru wheel\n"
"Home : /home/jru\n"
"Shell : /usr/local/bin/zsh\n"
"Locked : no\n"
"OK? (yes/no): yes\n"
"adduser: INFO: Successfully added (jru) to the user database.\n"
"Add another user? (yes/no): no\n"
"Goodbye!\n"
-"#\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:435
+#: documentation/content/en/books/handbook/basics/_index.adoc:431
msgid ""
"Since the password is not echoed when typed, be careful to not mistype the "
"password when creating the user account."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:438
+#: documentation/content/en/books/handbook/basics/_index.adoc:434
#, no-wrap
-msgid "`rmuser`"
+msgid "Removing a user"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:442
+#: documentation/content/en/books/handbook/basics/_index.adoc:438
msgid ""
"To completely remove a user from the system, run man:rmuser[8] as the "
"superuser. This command performs the following steps:"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:445
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:442
msgid "Removes the user's man:crontab[1] entry, if one exists."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:446
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:443
msgid "Removes any man:at[1] jobs belonging to the user."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:447
-msgid "Kills all processes owned by the user."
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:444
+msgid "Sends a SIGKILL signal to all processes owned by the user."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:448
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:445
msgid "Removes the user from the system's local password file."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:449
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:446
msgid ""
-"Optionally removes the user's home directory, if it is owned by the user."
+"Removes the user's home directory (if it is owned by the user), including "
+"handling of symbolic links in the path to the actual home directory."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:450
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:447
+msgid "Removes the incoming mail files belonging to the user from `/var/mail`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:448
msgid ""
-"Removes the incoming mail files belonging to the user from [.filename]#/var/"
-"mail#."
+"Removes all files owned by the user from `/tmp`, `/var/tmp`, and `/var/tmp/"
+"vi.recover`."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:451
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:449
msgid ""
-"Removes all files owned by the user from temporary file storage areas such "
-"as [.filename]#/tmp#."
+"Removes the username from all groups to which it belongs in `/etc/group`. "
+"(If a group becomes empty and the group name is the same as the username, "
+"the group is removed; this complements man:adduser[8]'s per-user unique "
+"groups.)"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:452
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:450
msgid ""
-"Finally, removes the username from all groups to which it belongs in [."
-"filename]#/etc/group#. If a group becomes empty and the group name is the "
-"same as the username, the group is removed. This complements the per-user "
-"unique groups created by man:adduser[8]."
+"Removes all message queues, shared memory segments and semaphores owned by "
+"the user."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:454
+#: documentation/content/en/books/handbook/basics/_index.adoc:453
msgid ""
"man:rmuser[8] cannot be used to remove superuser accounts since that is "
"almost always an indication of massive destruction."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:456
+#: documentation/content/en/books/handbook/basics/_index.adoc:455
msgid ""
"By default, an interactive mode is used, as shown in the following example."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:457
+#: documentation/content/en/books/handbook/basics/_index.adoc:456
#, no-wrap
msgid "`rmuser` Interactive Account Removal"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:469
+#: documentation/content/en/books/handbook/basics/_index.adoc:467
#, no-wrap
msgid ""
"# rmuser jru\n"
"Matching password entry:\n"
"jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh\n"
"Is this the entry you wish to remove? y\n"
"Remove user's home directory (/home/jru)? y\n"
"Removing user (jru): mailspool home passwd.\n"
-"#\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:473
+#: documentation/content/en/books/handbook/basics/_index.adoc:471
#, no-wrap
-msgid "`chpass`"
+msgid "Change user information"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:477
+#: documentation/content/en/books/handbook/basics/_index.adoc:475
msgid ""
"Any user can use man:chpass[1] to change their default shell and personal "
"information associated with their user account. The superuser can use this "
"utility to change additional account information for any user."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:480
+#: documentation/content/en/books/handbook/basics/_index.adoc:478
msgid ""
"When passed no options, aside from an optional username, man:chpass[1] "
"displays an editor containing user information. When the user exits from "
"the editor, the user database is updated with the new information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:484
+#: documentation/content/en/books/handbook/basics/_index.adoc:482
msgid ""
"This utility will prompt for the user's password when exiting the editor, "
"unless the utility is run as the superuser."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:489
+#: documentation/content/en/books/handbook/basics/_index.adoc:487
msgid ""
"In <<users-modifying-chpass-su>>, the superuser has typed `chpass jru` and "
"is now viewing the fields that can be changed for this user. If `jru` runs "
"this command instead, only the last six fields will be displayed and "
"available for editing. This is shown in <<users-modifying-chpass-ru>>."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:491
+#: documentation/content/en/books/handbook/basics/_index.adoc:489
#, no-wrap
msgid "Using `chpass` as Superuser"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:511
+#: documentation/content/en/books/handbook/basics/_index.adoc:509
#, no-wrap
msgid ""
"#Changing user database information for jru.\n"
"Login: jru\n"
"Password: *\n"
"Uid [#]: 1001\n"
"Gid [# or name]: 1001\n"
"Change [month day year]:\n"
"Expire [month day year]:\n"
"Class:\n"
"Home directory: /home/jru\n"
"Shell: /usr/local/bin/zsh\n"
"Full Name: J. Random User\n"
"Office Location:\n"
"Office Phone:\n"
"Home Phone:\n"
"Other information:\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:515
+#: documentation/content/en/books/handbook/basics/_index.adoc:513
#, no-wrap
msgid "Using `chpass` as Regular User"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:527
+#: documentation/content/en/books/handbook/basics/_index.adoc:525
#, no-wrap
msgid ""
"#Changing user database information for jru.\n"
"Shell: /usr/local/bin/zsh\n"
"Full Name: J. Random User\n"
"Office Location:\n"
"Office Phone:\n"
"Home Phone:\n"
"Other information:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:535
+#: documentation/content/en/books/handbook/basics/_index.adoc:533
msgid ""
"The commands man:chfn[1] and man:chsh[1] are links to man:chpass[1], as are "
"man:ypchpass[1], man:ypchfn[1], and man:ypchsh[1]. Since NIS support is "
"automatic, specifying the `yp` before the command is not necessary. How to "
"configure NIS is covered in crossref:network-servers[network-servers,Network "
"Servers]."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:538
+#: documentation/content/en/books/handbook/basics/_index.adoc:536
#, no-wrap
-msgid "`passwd`"
+msgid "Change user password"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:542
+#: documentation/content/en/books/handbook/basics/_index.adoc:540
msgid ""
"Any user can easily change their password using man:passwd[1]. To prevent "
"accidental or unauthorized changes, this command will prompt for the user's "
"original password before a new password can be set:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:543
+#: documentation/content/en/books/handbook/basics/_index.adoc:541
#, no-wrap
msgid "Changing Your Password"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:555
+#: documentation/content/en/books/handbook/basics/_index.adoc:553
#, no-wrap
msgid ""
"% passwd\n"
"Changing local password for jru.\n"
"Old password:\n"
"New password:\n"
"Retype new password:\n"
"passwd: updating the database...\n"
"passwd: done\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:561
+#: documentation/content/en/books/handbook/basics/_index.adoc:559
msgid ""
"The superuser can change any user's password by specifying the username when "
"running man:passwd[1]. When this utility is run as the superuser, it will "
"not prompt for the user's current password. This allows the password to be "
"changed when a user cannot remember the original password."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:562
+#: documentation/content/en/books/handbook/basics/_index.adoc:560
#, no-wrap
msgid "Changing Another User's Password as the Superuser"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:573
+#: documentation/content/en/books/handbook/basics/_index.adoc:571
#, no-wrap
msgid ""
"# passwd jru\n"
"Changing local password for jru.\n"
"New password:\n"
"Retype new password:\n"
"passwd: updating the database...\n"
"passwd: done\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:579
+#: documentation/content/en/books/handbook/basics/_index.adoc:577
msgid ""
"As with man:chpass[1], man:yppasswd[1] is a link to man:passwd[1], so NIS "
"works with either command."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/basics/_index.adoc:582
+#: documentation/content/en/books/handbook/basics/_index.adoc:580
#, no-wrap
-msgid "`pw`"
+msgid "Create, remove, modify and display system users and groups"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:587
+#: documentation/content/en/books/handbook/basics/_index.adoc:585
msgid ""
"The man:pw[8] utility can create, remove, modify, and display users and "
"groups. It functions as a front end to the system user and group files. "
"man:pw[8] has a very powerful set of command line options that make it "
"suitable for use in shell scripts, but new users may find it more "
"complicated than the other commands presented in this section."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:589
+#: documentation/content/en/books/handbook/basics/_index.adoc:587
#, no-wrap
msgid "Managing Groups"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:594
+#: documentation/content/en/books/handbook/basics/_index.adoc:592
msgid ""
"A group is a list of users. A group is identified by its group name and "
"GID. In FreeBSD, the kernel uses the UID of a process, and the list of "
"groups it belongs to, to determine what the process is allowed to do. Most "
"of the time, the GID of a user or process usually means the first group in "
"the list."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:599
+#: documentation/content/en/books/handbook/basics/_index.adoc:597
msgid ""
-"The group name to GID mapping is listed in [.filename]#/etc/group#. This is "
-"a plain text file with four colon-delimited fields. The first field is the "
-"group name, the second is the encrypted password, the third the GID, and the "
+"The group name to GID mapping is listed in `/etc/group`. This is a plain "
+"text file with four colon-delimited fields. The first field is the group "
+"name, the second is the encrypted password, the third the GID, and the "
"fourth the comma-delimited list of members. For a more complete description "
"of the syntax, refer to man:group[5]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:603
+#: documentation/content/en/books/handbook/basics/_index.adoc:601
msgid ""
-"The superuser can modify [.filename]#/etc/group# using a text editor. "
-"Alternatively, man:pw[8] can be used to add and edit groups. For example, "
-"to add a group called `teamtwo` and then confirm that it exists:"
+"The superuser can modify `/etc/group` using a text editor, although editing "
+"the group file using man:vigr[8] is preferred because it can catch some "
+"common mistakes. Alternatively, man:pw[8] can be used to add and edit "
+"groups. For example, to add a group called `teamtwo` and then confirm that "
+"it exists:"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:605
+msgid ""
+"Care must be taken when using the operator group, as unintended superuser-"
+"like access privileges may be granted, including but not limited to "
+"shutdown, reboot, and access to all items in `/dev` in the group."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:604
+#: documentation/content/en/books/handbook/basics/_index.adoc:607
#, no-wrap
msgid "Adding a Group Using man:pw[8]"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:612
+#: documentation/content/en/books/handbook/basics/_index.adoc:615
#, no-wrap
msgid ""
"# pw groupadd teamtwo\n"
"# pw groupshow teamtwo\n"
"teamtwo:*:1100:\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:618
+#: documentation/content/en/books/handbook/basics/_index.adoc:621
msgid ""
"In this example, `1100` is the GID of `teamtwo`. Right now, `teamtwo` has "
"no members. This command will add `jru` as a member of `teamtwo`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:619
+#: documentation/content/en/books/handbook/basics/_index.adoc:622
#, no-wrap
msgid "Adding User Accounts to a New Group Using man:pw[8]"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:627
+#: documentation/content/en/books/handbook/basics/_index.adoc:630
#, no-wrap
msgid ""
"# pw groupmod teamtwo -M jru\n"
"# pw groupshow teamtwo\n"
"teamtwo:*:1100:jru\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:634
+#: documentation/content/en/books/handbook/basics/_index.adoc:637
msgid ""
"The argument to `-M` is a comma-delimited list of users to be added to a new "
"(empty) group or to replace the members of an existing group. To the user, "
"this group membership is different from (and in addition to) the user's "
"primary group listed in the password file. This means that the user will "
"not show up as a member when using `groupshow` with man:pw[8], but will show "
"up when the information is queried via man:id[1] or a similar tool. When "
-"man:pw[8] is used to add a user to a group, it only manipulates [.filename]#/"
-"etc/group# and does not attempt to read additional data from [.filename]#/"
-"etc/passwd#."
+"man:pw[8] is used to add a user to a group, it only manipulates `/etc/group` "
+"and does not attempt to read additional data from `/etc/passwd`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:635
+#: documentation/content/en/books/handbook/basics/_index.adoc:638
#, no-wrap
msgid "Adding a New Member to a Group Using man:pw[8]"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:643
+#: documentation/content/en/books/handbook/basics/_index.adoc:646
#, no-wrap
msgid ""
"# pw groupmod teamtwo -m db\n"
"# pw groupshow teamtwo\n"
"teamtwo:*:1100:jru,db\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:648
+#: documentation/content/en/books/handbook/basics/_index.adoc:651
msgid ""
"In this example, the argument to `-m` is a comma-delimited list of users who "
"are to be added to the group. Unlike the previous example, these users are "
"appended to the group and do not replace existing users in the group."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:649
+#: documentation/content/en/books/handbook/basics/_index.adoc:652
#, no-wrap
msgid "Using man:id[1] to Determine Group Membership"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:656
+#: documentation/content/en/books/handbook/basics/_index.adoc:659
#, no-wrap
msgid ""
"% id jru\n"
"uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:660
+#: documentation/content/en/books/handbook/basics/_index.adoc:663
msgid "In this example, `jru` is a member of the groups `jru` and `teamtwo`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:662
+#: documentation/content/en/books/handbook/basics/_index.adoc:665
msgid ""
-"For more information about this command and the format of [.filename]#/etc/"
-"group#, refer to man:pw[8] and man:group[5]."
+"For more information about this command and the format of `/etc/group`, "
+"refer to man:pw[8] and man:group[5]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:664
+#: documentation/content/en/books/handbook/basics/_index.adoc:667
#, no-wrap
msgid "Permissions"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:668
+#: documentation/content/en/books/handbook/basics/_index.adoc:671
msgid ""
"In FreeBSD, every file and directory has an associated set of permissions "
"and several utilities are available for viewing and modifying these "
"permissions. Understanding how permissions work is necessary to make sure "
"that users are able to access the files that they need and are unable to "
"improperly access the files used by the operating system or owned by other "
"users."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:671
+#: documentation/content/en/books/handbook/basics/_index.adoc:674
msgid ""
"This section discusses the traditional UNIX(R) permissions used in FreeBSD. "
"For finer-grained file system access control, refer to crossref:security[fs-"
"acl,Access Control Lists]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:677
+#: documentation/content/en/books/handbook/basics/_index.adoc:680
msgid ""
"In UNIX(R), basic permissions are assigned using three types of access: "
"read, write, and execute. These access types are used to determine file "
"access to the file's owner, group, and others (everyone else). The read, "
"write, and execute permissions can be represented as the letters `r`, `w`, "
"and `x`. They can also be represented as binary numbers as each permission "
"is either on or off (`0`). When represented as a number, the order is "
"always read as `rwx`, where `r` has an on value of `4`, `w` has an on value "
"of `2` and `x` has an on value of `1`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:680
+#: documentation/content/en/books/handbook/basics/_index.adoc:683
msgid ""
"Table 4.1 summarizes the possible numeric and alphabetic possibilities. "
"When reading the \"Directory Listing\" column, a `-` is used to represent a "
"permission that is set to off."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:681
+#: documentation/content/en/books/handbook/basics/_index.adoc:684
#, no-wrap
msgid "UNIX(R) Permissions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:685
+#: documentation/content/en/books/handbook/basics/_index.adoc:688
#, no-wrap
msgid "Value"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:686
+#: documentation/content/en/books/handbook/basics/_index.adoc:689
#, no-wrap
msgid "Permission"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:688
+#: documentation/content/en/books/handbook/basics/_index.adoc:691
#, no-wrap
msgid "Directory Listing"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:689
+#: documentation/content/en/books/handbook/basics/_index.adoc:692
#, no-wrap
msgid "0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:690
+#: documentation/content/en/books/handbook/basics/_index.adoc:693
#, no-wrap
msgid "No read, no write, no execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:692
+#: documentation/content/en/books/handbook/basics/_index.adoc:695
#, no-wrap
msgid "`---`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:693
+#: documentation/content/en/books/handbook/basics/_index.adoc:696
#, no-wrap
msgid "1"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:694
+#: documentation/content/en/books/handbook/basics/_index.adoc:697
#, no-wrap
msgid "No read, no write, execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:696
+#: documentation/content/en/books/handbook/basics/_index.adoc:699
#, no-wrap
msgid "`--x`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:697
+#: documentation/content/en/books/handbook/basics/_index.adoc:700
#, no-wrap
msgid "2"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:698
+#: documentation/content/en/books/handbook/basics/_index.adoc:701
#, no-wrap
msgid "No read, write, no execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:700
+#: documentation/content/en/books/handbook/basics/_index.adoc:703
#, no-wrap
msgid "`-w-`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:701
+#: documentation/content/en/books/handbook/basics/_index.adoc:704
#, no-wrap
msgid "3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:702
+#: documentation/content/en/books/handbook/basics/_index.adoc:705
#, no-wrap
msgid "No read, write, execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:704
+#: documentation/content/en/books/handbook/basics/_index.adoc:707
#, no-wrap
msgid "`-wx`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:705
+#: documentation/content/en/books/handbook/basics/_index.adoc:708
#, no-wrap
msgid "4"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:706
+#: documentation/content/en/books/handbook/basics/_index.adoc:709
#, no-wrap
msgid "Read, no write, no execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:708
+#: documentation/content/en/books/handbook/basics/_index.adoc:711
#, no-wrap
msgid "`r--`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:709
+#: documentation/content/en/books/handbook/basics/_index.adoc:712
#, no-wrap
msgid "5"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:710
+#: documentation/content/en/books/handbook/basics/_index.adoc:713
#, no-wrap
msgid "Read, no write, execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:712
+#: documentation/content/en/books/handbook/basics/_index.adoc:715
#, no-wrap
msgid "`r-x`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:713
+#: documentation/content/en/books/handbook/basics/_index.adoc:716
#, no-wrap
msgid "6"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:714
+#: documentation/content/en/books/handbook/basics/_index.adoc:717
#, no-wrap
msgid "Read, write, no execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:716
+#: documentation/content/en/books/handbook/basics/_index.adoc:719
#, no-wrap
msgid "`rw-`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:717
+#: documentation/content/en/books/handbook/basics/_index.adoc:720
#, no-wrap
msgid "7"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:718
+#: documentation/content/en/books/handbook/basics/_index.adoc:721
#, no-wrap
msgid "Read, write, execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:719
+#: documentation/content/en/books/handbook/basics/_index.adoc:722
#, no-wrap
msgid "`rwx`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:723
+#: documentation/content/en/books/handbook/basics/_index.adoc:726
msgid ""
"Use the `-l` argument with man:ls[1] to view a long directory listing that "
"includes a column of information about a file's permissions for the owner, "
"group, and everyone else. For example, `ls -l` in an arbitrary directory "
"may show:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:731
+#: documentation/content/en/books/handbook/basics/_index.adoc:734
#, no-wrap
msgid ""
"% ls -l\n"
"total 530\n"
"-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile\n"
"-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile\n"
"-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:741
+#: documentation/content/en/books/handbook/basics/_index.adoc:744
msgid ""
-"The first (leftmost) character in the first column indicates whether this "
-"file is a regular file, a directory, a special character device, a socket, "
-"or any other special pseudo-file device. In this example, the `-` indicates "
-"a regular file. The next three characters, `rw-` in this example, give the "
-"permissions for the owner of the file. The next three characters, `r--`, "
-"give the permissions for the group that the file belongs to. The final "
-"three characters, `r--`, give the permissions for the rest of the world. A "
-"dash means that the permission is turned off. In this example, the "
-"permissions are set so the owner can read and write to the file, the group "
-"can read the file, and the rest of the world can only read the file. "
-"According to the table above, the permissions for this file would be `644`, "
-"where each digit represents the three parts of the file's permission."
+"Focusing on the line for `myfile`, the first `(leftmost)` character "
+"indicates whether this file is a regular file, a directory, a special "
+"character device, a socket, or any other special pseudo-file device. In "
+"this example, the `-` indicates a regular file. The next three characters, "
+"`rw-` in this example, give the permissions for the owner of the file. The "
+"next three characters, `r--`, give the permissions for the group that the "
+"file belongs to. The final three characters, `r--`, give the permissions "
+"for the rest of the world. A dash means that the permission is turned off. "
+"In this example, the permissions are set so the owner can read and write to "
+"the file, the group can read the file, and the rest of the world can only "
+"read the file. According to the table above, the permissions for this file "
+"would be `644`, where each digit represents the three parts of the file's "
+"permission."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:744
+#: documentation/content/en/books/handbook/basics/_index.adoc:747
msgid ""
"How does the system control permissions on devices? FreeBSD treats most "
"hardware devices as a file that programs can open, read, and write data to. "
-"These special device files are stored in [.filename]#/dev/#."
+"These special device files are stored in `/dev/`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:750
+#: documentation/content/en/books/handbook/basics/_index.adoc:753
msgid ""
"Directories are also treated as files. They have read, write, and execute "
"permissions. The executable bit for a directory has a slightly different "
"meaning than that of files. When a directory is marked executable, it means "
"it is possible to change into that directory using man:cd[1]. This also "
"means that it is possible to access the files within that directory, subject "
"to the permissions on the files themselves."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:753
+#: documentation/content/en/books/handbook/basics/_index.adoc:756
msgid ""
"In order to perform a directory listing, the read permission must be set on "
"the directory. In order to delete a file that one knows the name of, it is "
"necessary to have write _and_ execute permissions to the directory "
"containing the file."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:756
+#: documentation/content/en/books/handbook/basics/_index.adoc:759
msgid ""
"There are more permission bits, but they are primarily used in special "
"circumstances such as setuid binaries and sticky directories. For more "
"information on file permissions and how to set them, refer to man:chmod[1]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:757
+#: documentation/content/en/books/handbook/basics/_index.adoc:760
#, no-wrap
msgid "Symbolic Permissions"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:761
+#: documentation/content/en/books/handbook/basics/_index.adoc:764
msgid ""
"Symbolic permissions use characters instead of octal values to assign "
"permissions to files or directories. Symbolic permissions use the syntax of "
"(who) (action) (permissions), where the following values are available:"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:766
+#: documentation/content/en/books/handbook/basics/_index.adoc:769
#, no-wrap
msgid "Option"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:767
+#: documentation/content/en/books/handbook/basics/_index.adoc:770
#, no-wrap
msgid "Letter"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:769
+#: documentation/content/en/books/handbook/basics/_index.adoc:772
#, no-wrap
msgid "Represents"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:770
-#: documentation/content/en/books/handbook/basics/_index.adoc:774
-#: documentation/content/en/books/handbook/basics/_index.adoc:778
-#: documentation/content/en/books/handbook/basics/_index.adoc:782
+#: documentation/content/en/books/handbook/basics/_index.adoc:773
+#: documentation/content/en/books/handbook/basics/_index.adoc:777
+#: documentation/content/en/books/handbook/basics/_index.adoc:781
+#: documentation/content/en/books/handbook/basics/_index.adoc:785
#, no-wrap
msgid "(who)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:771
+#: documentation/content/en/books/handbook/basics/_index.adoc:774
#, no-wrap
msgid "u"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:773
+#: documentation/content/en/books/handbook/basics/_index.adoc:776
#, no-wrap
msgid "User"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:775
+#: documentation/content/en/books/handbook/basics/_index.adoc:778
#, no-wrap
msgid "g"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:777
+#: documentation/content/en/books/handbook/basics/_index.adoc:780
#, no-wrap
msgid "Group owner"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:779
+#: documentation/content/en/books/handbook/basics/_index.adoc:782
#, no-wrap
msgid "o"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:781
+#: documentation/content/en/books/handbook/basics/_index.adoc:784
#, no-wrap
msgid "Other"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:783
+#: documentation/content/en/books/handbook/basics/_index.adoc:786
#, no-wrap
msgid "a"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:785
+#: documentation/content/en/books/handbook/basics/_index.adoc:788
#, no-wrap
msgid "All (\"world\")"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:786
-#: documentation/content/en/books/handbook/basics/_index.adoc:790
-#: documentation/content/en/books/handbook/basics/_index.adoc:794
+#: documentation/content/en/books/handbook/basics/_index.adoc:789
+#: documentation/content/en/books/handbook/basics/_index.adoc:793
+#: documentation/content/en/books/handbook/basics/_index.adoc:797
#, no-wrap
msgid "(action)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:787
+#: documentation/content/en/books/handbook/basics/_index.adoc:790
#, no-wrap
msgid "+"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:789
+#: documentation/content/en/books/handbook/basics/_index.adoc:792
#, no-wrap
msgid "Adding permissions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:791
+#: documentation/content/en/books/handbook/basics/_index.adoc:794
#, no-wrap
msgid "-"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:793
+#: documentation/content/en/books/handbook/basics/_index.adoc:796
#, no-wrap
msgid "Removing permissions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:795
+#: documentation/content/en/books/handbook/basics/_index.adoc:798
#, no-wrap
msgid "="
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:797
+#: documentation/content/en/books/handbook/basics/_index.adoc:800
#, no-wrap
msgid "Explicitly set permissions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:798
-#: documentation/content/en/books/handbook/basics/_index.adoc:802
-#: documentation/content/en/books/handbook/basics/_index.adoc:806
-#: documentation/content/en/books/handbook/basics/_index.adoc:810
-#: documentation/content/en/books/handbook/basics/_index.adoc:814
+#: documentation/content/en/books/handbook/basics/_index.adoc:801
+#: documentation/content/en/books/handbook/basics/_index.adoc:805
+#: documentation/content/en/books/handbook/basics/_index.adoc:809
+#: documentation/content/en/books/handbook/basics/_index.adoc:813
+#: documentation/content/en/books/handbook/basics/_index.adoc:817
#, no-wrap
msgid "(permissions)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:799
+#: documentation/content/en/books/handbook/basics/_index.adoc:802
#, no-wrap
msgid "r"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:801
+#: documentation/content/en/books/handbook/basics/_index.adoc:804
#, no-wrap
msgid "Read"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:803
+#: documentation/content/en/books/handbook/basics/_index.adoc:806
#, no-wrap
msgid "w"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:805
+#: documentation/content/en/books/handbook/basics/_index.adoc:808
#, no-wrap
msgid "Write"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:807
+#: documentation/content/en/books/handbook/basics/_index.adoc:810
#, no-wrap
msgid "x"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:809
+#: documentation/content/en/books/handbook/basics/_index.adoc:812
#, no-wrap
msgid "Execute"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:811
+#: documentation/content/en/books/handbook/basics/_index.adoc:814
#, no-wrap
msgid "t"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:813
+#: documentation/content/en/books/handbook/basics/_index.adoc:816
#, no-wrap
msgid "Sticky bit"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:815
+#: documentation/content/en/books/handbook/basics/_index.adoc:818
#, no-wrap
msgid "s"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:816
+#: documentation/content/en/books/handbook/basics/_index.adoc:819
#, no-wrap
msgid "Set UID or GID"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:820
+#: documentation/content/en/books/handbook/basics/_index.adoc:823
msgid ""
"These values are used with man:chmod[1], but with letters instead of "
-"numbers. For example, the following command would block other users from "
-"accessing _FILE_:"
+"numbers. For example, the following command would block both members of the "
+"group associated with _FILE_ and all other users from accessing _FILE_:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:824
+#: documentation/content/en/books/handbook/basics/_index.adoc:827
#, no-wrap
msgid "% chmod go= FILE\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:828
+#: documentation/content/en/books/handbook/basics/_index.adoc:831
msgid ""
"A comma separated list can be provided when more than one set of changes to "
"a file must be made. For example, the following command removes the group "
"and \"world\" write permission on _FILE_, and adds the execute permissions "
"for everyone:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:832
+#: documentation/content/en/books/handbook/basics/_index.adoc:835
#, no-wrap
msgid "% chmod go-w,a+x FILE\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:834
+#: documentation/content/en/books/handbook/basics/_index.adoc:837
#, no-wrap
msgid "FreeBSD File Flags"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:839
+#: documentation/content/en/books/handbook/basics/_index.adoc:842
msgid ""
-"In addition to file permissions, FreeBSD supports the use of \"file flags"
-"\". These flags add an additional level of security and control over files, "
-"but not directories. With file flags, even `root` can be prevented from "
-"removing or altering files."
+"In addition to file permissions, FreeBSD supports the use of \"file "
+"flags\". These flags add an additional level of security and control over "
+"files, but not directories. With file flags, even `root` can be prevented "
+"from removing or altering files."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:842
+#: documentation/content/en/books/handbook/basics/_index.adoc:845
msgid ""
"File flags are modified using man:chflags[1]. For example, to enable the "
-"system undeletable flag on the file [.filename]#file1#, issue the following "
-"command:"
+"system undeletable flag on the file `file1`, issue the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:846
+#: documentation/content/en/books/handbook/basics/_index.adoc:849
#, no-wrap
msgid "# chflags sunlink file1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:849
+#: documentation/content/en/books/handbook/basics/_index.adoc:852
msgid ""
"To disable the system undeletable flag, put a \"no\" in front of the "
"`sunlink`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:853
+#: documentation/content/en/books/handbook/basics/_index.adoc:856
#, no-wrap
msgid "# chflags nosunlink file1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:856
+#: documentation/content/en/books/handbook/basics/_index.adoc:859
msgid "To view the flags of a file, use `-lo` with man:ls[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:860
+#: documentation/content/en/books/handbook/basics/_index.adoc:863
#, no-wrap
msgid "# ls -lo file1\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:865
+#: documentation/content/en/books/handbook/basics/_index.adoc:868
#, no-wrap
msgid "-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:870
+#: documentation/content/en/books/handbook/basics/_index.adoc:873
msgid ""
"Several file flags may only be added or removed by the `root` user. In "
"other cases, the file owner may set its file flags. Refer to man:chflags[1] "
"and man:chflags[2] for more information."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:871
+#: documentation/content/en/books/handbook/basics/_index.adoc:874
#, no-wrap
-msgid "The `setuid`, `setgid`, and `sticky` Permissions"
+msgid "The setuid, setgid, and sticky Permissions"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:875
+#: documentation/content/en/books/handbook/basics/_index.adoc:878
msgid ""
"Other than the permissions already discussed, there are three other specific "
"settings that all administrators should know about. They are the `setuid`, "
"`setgid`, and `sticky` permissions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:878
+#: documentation/content/en/books/handbook/basics/_index.adoc:881
msgid ""
"These settings are important for some UNIX(R) operations as they provide "
"functionality not normally granted to normal users. To understand them, the "
"difference between the real user ID and effective user ID must be noted."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:884
+#: documentation/content/en/books/handbook/basics/_index.adoc:887
msgid ""
"The real user ID is the UID who owns or starts the process. The effective "
"UID is the user ID the process runs as. As an example, man:passwd[1] runs "
"with the real user ID when a user changes their password. However, in order "
"to update the password database, the command runs as the effective ID of the "
"`root` user. This allows users to change their passwords without seeing a "
"`Permission Denied` error."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:886
+#: documentation/content/en/books/handbook/basics/_index.adoc:889
msgid ""
-"The setuid permission may be set by prefixing a permission set with the "
+"The setuid permission may be added symbolically by adding the `s` permission "
+"for the user as in the following example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/basics/_index.adoc:893
+#, no-wrap
+msgid "# chmod u+s suidexample.sh\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:896
+msgid ""
+"The setuid permission may also be set by prefixing a permission set with the "
"number four (4) as shown in the following example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:890
+#: documentation/content/en/books/handbook/basics/_index.adoc:900
#, no-wrap
msgid "# chmod 4755 suidexample.sh\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:893
-msgid ""
-"The permissions on [.filename]#suidexample.sh# now look like the following:"
+#: documentation/content/en/books/handbook/basics/_index.adoc:903
+msgid "The permissions on `suidexample.sh` now look like the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:897
+#: documentation/content/en/books/handbook/basics/_index.adoc:907
#, no-wrap
msgid "-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:901
+#: documentation/content/en/books/handbook/basics/_index.adoc:911
msgid ""
"Note that a `s` is now part of the permission set designated for the file "
"owner, replacing the executable bit. This allows utilities which need "
"elevated permissions, such as man:passwd[1]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:906
+#: documentation/content/en/books/handbook/basics/_index.adoc:916
msgid ""
"The `nosuid` man:mount[8] option will cause such binaries to silently fail "
"without alerting the user. That option is not completely reliable as a "
"`nosuid` wrapper may be able to circumvent it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:911
+#: documentation/content/en/books/handbook/basics/_index.adoc:921
msgid ""
"To view this in real time, open two terminals. On one, type `passwd` as a "
"normal user. While it waits for a new password, check the process table and "
"look at the user information for man:passwd[1]:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:913
+#: documentation/content/en/books/handbook/basics/_index.adoc:923
msgid "In terminal A:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:918
+#: documentation/content/en/books/handbook/basics/_index.adoc:928
#, no-wrap
msgid ""
"Changing local password for trhodes\n"
"Old Password:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:921
+#: documentation/content/en/books/handbook/basics/_index.adoc:931
msgid "In terminal B:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:925
+#: documentation/content/en/books/handbook/basics/_index.adoc:935
#, no-wrap
msgid "# ps aux | grep passwd\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:931
+#: documentation/content/en/books/handbook/basics/_index.adoc:941
#, no-wrap
msgid ""
"trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd\n"
"root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:934
+#: documentation/content/en/books/handbook/basics/_index.adoc:944
msgid ""
"Although man:passwd[1] is run as a normal user, it is using the effective "
"UID of `root`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:937
+#: documentation/content/en/books/handbook/basics/_index.adoc:947
msgid ""
"The `setgid` permission performs the same function as the `setuid` "
"permission; except that it alters the group settings. When an application "
"or utility executes with this setting, it will be granted the permissions "
"based on the group that owns the file, not the user who started the process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:939
+#: documentation/content/en/books/handbook/basics/_index.adoc:949
msgid ""
-"To set the `setgid` permission on a file, provide man:chmod[1] with a "
-"leading two (2):"
+"To set the `setgid` permission on a file symbolically, add the `s` "
+"permission for the group with man:chmod[1]:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/basics/_index.adoc:953
+#, no-wrap
+msgid "# chmod g+s sgidexample.sh\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:956
+msgid "Alternatively, provide man:chmod[1] with a leading two (2):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:943
+#: documentation/content/en/books/handbook/basics/_index.adoc:960
#, no-wrap
msgid "# chmod 2755 sgidexample.sh\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:946
+#: documentation/content/en/books/handbook/basics/_index.adoc:963
msgid ""
"In the following listing, notice that the `s` is now in the field designated "
"for the group permission settings:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:950
+#: documentation/content/en/books/handbook/basics/_index.adoc:967
#, no-wrap
msgid "-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:956
+#: documentation/content/en/books/handbook/basics/_index.adoc:973
msgid ""
"In these examples, even though the shell script in question is an executable "
"file, it will not run with a different EUID or effective user ID. This is "
"because shell scripts may not access the man:setuid[2] system calls."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:960
+#: documentation/content/en/books/handbook/basics/_index.adoc:977
msgid ""
"The `setuid` and `setgid` permission bits may lower system security, by "
"allowing for elevated permissions. The third special permission, the "
"`sticky bit`, can strengthen the security of a system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:964
+#: documentation/content/en/books/handbook/basics/_index.adoc:981
msgid ""
"When the `sticky bit` is set on a directory, it allows file deletion only by "
"the file owner. This is useful to prevent file deletion in public "
-"directories, such as [.filename]#/tmp#, by users who do not own the file. "
-"To utilize this permission, prefix the permission set with a one (1):"
+"directories, such as `/tmp`, by users who do not own the file. To utilize "
+"this permission, add the `t` mode to the file:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/basics/_index.adoc:985
+#, no-wrap
+msgid "# chmod +t /tmp\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/basics/_index.adoc:988
+msgid "Alternatively, prefix the permission set with a one (1):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:968
+#: documentation/content/en/books/handbook/basics/_index.adoc:992
#, no-wrap
msgid "# chmod 1777 /tmp\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:971
+#: documentation/content/en/books/handbook/basics/_index.adoc:995
msgid ""
"The `sticky bit` permission will display as a `t` at the very end of the "
"permission set:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:975
+#: documentation/content/en/books/handbook/basics/_index.adoc:999
#, no-wrap
msgid "# ls -al / | grep tmp\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:980
+#: documentation/content/en/books/handbook/basics/_index.adoc:1004
#, no-wrap
msgid "drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:983
+#: documentation/content/en/books/handbook/basics/_index.adoc:1007
#, no-wrap
msgid "Directory Structure"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:989
+#: documentation/content/en/books/handbook/basics/_index.adoc:1013
msgid ""
"The FreeBSD directory hierarchy is fundamental to obtaining an overall "
"understanding of the system. The most important directory is root or, \"/"
"\". This directory is the first one mounted at boot time and it contains "
"the base system necessary to prepare the operating system for multi-user "
"operation. The root directory also contains mount points for other file "
"systems that are mounted during the transition to multi-user operation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:997
+#: documentation/content/en/books/handbook/basics/_index.adoc:1021
msgid ""
"A mount point is a directory where additional file systems can be grafted "
"onto a parent file system (usually the root file system). This is further "
-"described in <<disk-organization>>. Standard mount points include [."
-"filename]#/usr/#, [.filename]#/var/#, [.filename]#/tmp/#, [.filename]#/mnt/"
-"#, and [.filename]#/cdrom/#. These directories are usually referenced to "
-"entries in [.filename]#/etc/fstab#. This file is a table of various file "
+"described in <<disk-organization>>. Standard mount points include `/usr/`, "
+"`/var/`, `/tmp/`, `/mnt/`, and `/cdrom/`. These directories are usually "
+"referenced to entries in `/etc/fstab`. This file is a table of various file "
"systems and mount points and is read by the system. Most of the file "
-"systems in [.filename]#/etc/fstab# are mounted automatically at boot time "
-"from the script man:rc[8] unless their entry includes `noauto`. Details can "
-"be found in <<disks-fstab>>."
+"systems in `/etc/fstab` are mounted automatically at boot time from the "
+"script man:rc[8] unless their entry includes `noauto`. Details can be found "
+"in <<disks-fstab>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1000
+#: documentation/content/en/books/handbook/basics/_index.adoc:1024
msgid ""
"A complete description of the file system hierarchy is available in man:"
"hier[7]. The following table provides a brief overview of the most common "
"directories."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1005
+#: documentation/content/en/books/handbook/basics/_index.adoc:1028
#, no-wrap
msgid "Directory"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1007
-#: documentation/content/en/books/handbook/basics/_index.adoc:1623
+#: documentation/content/en/books/handbook/basics/_index.adoc:1030
+#: documentation/content/en/books/handbook/basics/_index.adoc:1603
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1008
+#: documentation/content/en/books/handbook/basics/_index.adoc:1031
#, no-wrap
-msgid "[.filename]#/#"
+msgid "`/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1010
+#: documentation/content/en/books/handbook/basics/_index.adoc:1033
#, no-wrap
msgid "Root directory of the file system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1011
+#: documentation/content/en/books/handbook/basics/_index.adoc:1034
#, no-wrap
-msgid "[.filename]#/bin/#"
+msgid "`/bin/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1013
+#: documentation/content/en/books/handbook/basics/_index.adoc:1036
#, no-wrap
msgid "User utilities fundamental to both single-user and multi-user environments."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1014
+#: documentation/content/en/books/handbook/basics/_index.adoc:1037
#, no-wrap
-msgid "[.filename]#/boot/#"
+msgid "`/boot/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1016
+#: documentation/content/en/books/handbook/basics/_index.adoc:1039
#, no-wrap
msgid "Programs and configuration files used during operating system bootstrap."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1017
+#: documentation/content/en/books/handbook/basics/_index.adoc:1040
#, no-wrap
-msgid "[.filename]#/boot/defaults/#"
+msgid "`/boot/defaults/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1019
+#: documentation/content/en/books/handbook/basics/_index.adoc:1042
#, no-wrap
msgid "Default boot configuration files. Refer to man:loader.conf[5] for details."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1020
+#: documentation/content/en/books/handbook/basics/_index.adoc:1043
#, no-wrap
-msgid "[.filename]#/dev/#"
+msgid "`/dev/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1022
+#: documentation/content/en/books/handbook/basics/_index.adoc:1045
#, no-wrap
-msgid "Device nodes. Refer to man:intro[4] for details."
+msgid "Device special files managed by man:devfs[5]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1023
+#: documentation/content/en/books/handbook/basics/_index.adoc:1046
#, no-wrap
-msgid "[.filename]#/etc/#"
+msgid "`/etc/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1025
+#: documentation/content/en/books/handbook/basics/_index.adoc:1048
#, no-wrap
msgid "System configuration files and scripts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1026
+#: documentation/content/en/books/handbook/basics/_index.adoc:1049
#, no-wrap
-msgid "[.filename]#/etc/defaults/#"
+msgid "`/etc/defaults/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1028
+#: documentation/content/en/books/handbook/basics/_index.adoc:1051
#, no-wrap
msgid "Default system configuration files. Refer to man:rc[8] for details."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1029
-#, no-wrap
-msgid "[.filename]#/etc/mail/#"
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1031
-#, no-wrap
-msgid "Configuration files for mail transport agents such as man:sendmail[8]."
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1032
+#: documentation/content/en/books/handbook/basics/_index.adoc:1052
#, no-wrap
-msgid "[.filename]#/etc/periodic/#"
+msgid "`/etc/periodic/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1034
+#: documentation/content/en/books/handbook/basics/_index.adoc:1054
#, no-wrap
msgid "Scripts that run daily, weekly, and monthly, via man:cron[8]. Refer to man:periodic[8] for details."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1035
-#, no-wrap
-msgid "[.filename]#/etc/ppp/#"
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1037
-#, no-wrap
-msgid "man:ppp[8] configuration files."
-msgstr ""
-
-#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1038
+#: documentation/content/en/books/handbook/basics/_index.adoc:1055
#, no-wrap
-msgid "[.filename]#/mnt/#"
+msgid "`/lib/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1040
+#: documentation/content/en/books/handbook/basics/_index.adoc:1057
#, no-wrap
-msgid "Empty directory commonly used by system administrators as a temporary mount point."
+msgid "Critical system libraries needed for binaries in `/bin` and `/sbin`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1041
+#: documentation/content/en/books/handbook/basics/_index.adoc:1058
#, no-wrap
-msgid "[.filename]#/proc/#"
+msgid "`/libexec/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1043
+#: documentation/content/en/books/handbook/basics/_index.adoc:1060
#, no-wrap
-msgid "Process file system. Refer to man:procfs[5], man:mount_procfs[8] for details."
+msgid "Critical system files"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1044
+#: documentation/content/en/books/handbook/basics/_index.adoc:1061
#, no-wrap
-msgid "[.filename]#/rescue/#"
+msgid "`/media/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1046
+#: documentation/content/en/books/handbook/basics/_index.adoc:1063
#, no-wrap
-msgid "Statically linked programs for emergency recovery as described in man:rescue[8]."
+msgid "Contains subdirectories to be used as mount points for removable media such as CDs, USB drives, and floppy disks"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1047
+#: documentation/content/en/books/handbook/basics/_index.adoc:1064
#, no-wrap
-msgid "[.filename]#/root/#"
+msgid "`/mnt/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1049
+#: documentation/content/en/books/handbook/basics/_index.adoc:1066
#, no-wrap
-msgid "Home directory for the `root` account."
+msgid "Empty directory commonly used by system administrators as a temporary mount point."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1050
+#: documentation/content/en/books/handbook/basics/_index.adoc:1067
#, no-wrap
-msgid "[.filename]#/sbin/#"
+msgid "`/net/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1052
+#: documentation/content/en/books/handbook/basics/_index.adoc:1069
#, no-wrap
-msgid "System programs and administration utilities fundamental to both single-user and multi-user environments."
+msgid "Automounted NFS shares; see man:auto_master[5]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1053
+#: documentation/content/en/books/handbook/basics/_index.adoc:1070
#, no-wrap
-msgid "[.filename]#/tmp/#"
+msgid "`/proc/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1055
+#: documentation/content/en/books/handbook/basics/_index.adoc:1072
#, no-wrap
-msgid "Temporary files which are usually _not_ preserved across a system reboot. A memory-based file system is often mounted at [.filename]#/tmp#. This can be automated using the tmpmfs-related variables of man:rc.conf[5] or with an entry in [.filename]#/etc/fstab#; refer to man:mdmfs[8] for details."
+msgid "Process file system. Refer to man:procfs[5], man:mount_procfs[8] for details."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1056
+#: documentation/content/en/books/handbook/basics/_index.adoc:1073
#, no-wrap
-msgid "[.filename]#/usr/#"
+msgid "`/rescue/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1058
+#: documentation/content/en/books/handbook/basics/_index.adoc:1075
#, no-wrap
-msgid "The majority of user utilities and applications."
+msgid "Statically linked programs for emergency recovery as described in man:rescue[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1059
+#: documentation/content/en/books/handbook/basics/_index.adoc:1076
#, no-wrap
-msgid "[.filename]#/usr/bin/#"
+msgid "`/root/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1061
+#: documentation/content/en/books/handbook/basics/_index.adoc:1078
#, no-wrap
-msgid "Common utilities, programming tools, and applications."
+msgid "Home directory for the `root` account."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1062
+#: documentation/content/en/books/handbook/basics/_index.adoc:1079
#, no-wrap
-msgid "[.filename]#/usr/include/#"
+msgid "`/sbin/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1064
+#: documentation/content/en/books/handbook/basics/_index.adoc:1081
#, no-wrap
-msgid "Standard C include files."
+msgid "System programs and administration utilities fundamental to both single-user and multi-user environments."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1065
+#: documentation/content/en/books/handbook/basics/_index.adoc:1082
#, no-wrap
-msgid "[.filename]#/usr/lib/#"
+msgid "`/tmp/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1067
+#: documentation/content/en/books/handbook/basics/_index.adoc:1084
#, no-wrap
-msgid "Archive libraries."
+msgid "Temporary files which are usually _not_ preserved across a system reboot. A memory-based file system is often mounted at `/tmp`. This can be automated using the tmpmfs-related variables of man:rc.conf[5] or with an entry in `/etc/fstab`; refer to man:mdmfs[8] for details."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1068
+#: documentation/content/en/books/handbook/basics/_index.adoc:1085
#, no-wrap
-msgid "[.filename]#/usr/libdata/#"
+msgid "`/usr/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1070
+#: documentation/content/en/books/handbook/basics/_index.adoc:1087
#, no-wrap
-msgid "Miscellaneous utility data files."
+msgid "The majority of user utilities and applications."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1071
+#: documentation/content/en/books/handbook/basics/_index.adoc:1088
#, no-wrap
-msgid "[.filename]#/usr/libexec/#"
+msgid "`/usr/bin/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1073
+#: documentation/content/en/books/handbook/basics/_index.adoc:1090
#, no-wrap
-msgid "System daemons and system utilities executed by other programs."
+msgid "Common utilities, programming tools, and applications."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1074
+#: documentation/content/en/books/handbook/basics/_index.adoc:1091
#, no-wrap
-msgid "[.filename]#/usr/local/#"
+msgid "`/usr/include/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1076
+#: documentation/content/en/books/handbook/basics/_index.adoc:1093
#, no-wrap
-msgid "Local executables and libraries. Also used as the default destination for the FreeBSD ports framework. Within [.filename]#/usr/local#, the general layout sketched out by man:hier[7] for [.filename]#/usr# should be used. Exceptions are the man directory, which is directly under [.filename]#/usr/local# rather than under [.filename]#/usr/local/share#, and the ports documentation is in [.filename]#share/doc/port#."
+msgid "Standard C include files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1077
+#: documentation/content/en/books/handbook/basics/_index.adoc:1094
#, no-wrap
-msgid "[.filename]#/usr/obj/#"
+msgid "`/usr/lib/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1079
+#: documentation/content/en/books/handbook/basics/_index.adoc:1096
#, no-wrap
-msgid "Architecture-specific target tree produced by building the [.filename]#/usr/src# tree."
+msgid "Archive libraries."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1080
+#: documentation/content/en/books/handbook/basics/_index.adoc:1097
#, no-wrap
-msgid "[.filename]#/usr/ports/#"
+msgid "`/usr/libdata/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1082
+#: documentation/content/en/books/handbook/basics/_index.adoc:1099
#, no-wrap
-msgid "The FreeBSD Ports Collection (optional)."
+msgid "Miscellaneous utility data files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1083
+#: documentation/content/en/books/handbook/basics/_index.adoc:1100
#, no-wrap
-msgid "[.filename]#/usr/sbin/#"
+msgid "`/usr/libexec/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1085
+#: documentation/content/en/books/handbook/basics/_index.adoc:1102
#, no-wrap
-msgid "System daemons and system utilities executed by users."
+msgid "System daemons and system utilities executed by other programs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1086
+#: documentation/content/en/books/handbook/basics/_index.adoc:1103
#, no-wrap
-msgid "[.filename]#/usr/share/#"
+msgid "`/usr/local/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1088
+#: documentation/content/en/books/handbook/basics/_index.adoc:1105
#, no-wrap
-msgid "Architecture-independent files."
+msgid "Local executables and libraries. Also used as the default destination for the FreeBSD ports framework. Within `/usr/local`, the general layout sketched out by man:hier[7] for `/usr` should be used. Exceptions are the man directory, which is directly under `/usr/local` rather than under `/usr/local/share`, and the ports documentation is in `share/doc/port`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1089
+#: documentation/content/en/books/handbook/basics/_index.adoc:1106
#, no-wrap
-msgid "[.filename]#/usr/src/#"
+msgid "`/usr/ports/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1091
+#: documentation/content/en/books/handbook/basics/_index.adoc:1108
#, no-wrap
-msgid "BSD and/or local source files."
+msgid "The FreeBSD Ports Collection (optional)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1092
+#: documentation/content/en/books/handbook/basics/_index.adoc:1109
#, no-wrap
-msgid "[.filename]#/var/#"
+msgid "`/usr/sbin/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1094
+#: documentation/content/en/books/handbook/basics/_index.adoc:1111
#, no-wrap
-msgid "Multi-purpose log, temporary, transient, and spool files. A memory-based file system is sometimes mounted at [.filename]#/var#. This can be automated using the varmfs-related variables in man:rc.conf[5] or with an entry in [.filename]#/etc/fstab#; refer to man:mdmfs[8] for details."
+msgid "System daemons and system utilities executed by users."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1095
+#: documentation/content/en/books/handbook/basics/_index.adoc:1112
#, no-wrap
-msgid "[.filename]#/var/log/#"
+msgid "`/usr/share/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1097
+#: documentation/content/en/books/handbook/basics/_index.adoc:1114
#, no-wrap
-msgid "Miscellaneous system log files."
+msgid "Architecture-independent files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1098
+#: documentation/content/en/books/handbook/basics/_index.adoc:1115
#, no-wrap
-msgid "[.filename]#/var/mail/#"
+msgid "`/usr/src/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1100
+#: documentation/content/en/books/handbook/basics/_index.adoc:1117
#, no-wrap
-msgid "User mailbox files."
+msgid "BSD and/or local source files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1101
+#: documentation/content/en/books/handbook/basics/_index.adoc:1118
#, no-wrap
-msgid "[.filename]#/var/spool/#"
+msgid "`/var/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1103
+#: documentation/content/en/books/handbook/basics/_index.adoc:1120
#, no-wrap
-msgid "Miscellaneous printer and mail system spooling directories."
+msgid "Multi-purpose log, temporary, transient, and spool files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1104
+#: documentation/content/en/books/handbook/basics/_index.adoc:1121
#, no-wrap
-msgid "[.filename]#/var/tmp/#"
+msgid "`/var/log/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1106
+#: documentation/content/en/books/handbook/basics/_index.adoc:1123
#, no-wrap
-msgid "Temporary files which are usually preserved across a system reboot, unless [.filename]#/var# is a memory-based file system."
+msgid "Miscellaneous system log files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1107
+#: documentation/content/en/books/handbook/basics/_index.adoc:1124
#, no-wrap
-msgid "[.filename]#/var/yp/#"
+msgid "`/var/tmp/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1108
+#: documentation/content/en/books/handbook/basics/_index.adoc:1126
#, no-wrap
-msgid "NIS maps."
+msgid "Temporary files which are usually preserved across a system reboot."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1111
+#: documentation/content/en/books/handbook/basics/_index.adoc:1129
#, no-wrap
msgid "Disk Organization"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1116
+#: documentation/content/en/books/handbook/basics/_index.adoc:1134
msgid ""
"The smallest unit of organization that FreeBSD uses to find files is the "
-"filename. Filenames are case-sensitive, which means that [.filename]#readme."
-"txt# and [.filename]#README.TXT# are two separate files. FreeBSD does not "
-"use the extension of a file to determine whether the file is a program, "
-"document, or some other form of data."
+"filename. Filenames are case-sensitive, which means that `readme.txt` and "
+"`README.TXT` are two separate files. FreeBSD does not use the extension of "
+"a file to determine whether the file is a program, document, or some other "
+"form of data."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1120
+#: documentation/content/en/books/handbook/basics/_index.adoc:1138
msgid ""
"Files are stored in directories. A directory may contain no files, or it "
"may contain many hundreds of files. A directory can also contain other "
"directories, allowing a hierarchy of directories within one another in order "
"to organize data."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1126
+#: documentation/content/en/books/handbook/basics/_index.adoc:1144
msgid ""
"Files and directories are referenced by giving the file or directory name, "
"followed by a forward slash, `/`, followed by any other directory names that "
-"are necessary. For example, if the directory [.filename]#foo# contains a "
-"directory [.filename]#bar# which contains the file [.filename]#readme.txt#, "
-"the full name, or _path_, to the file is [.filename]#foo/bar/readme.txt#. "
-"Note that this is different from Windows(R) which uses `\\` to separate file "
-"and directory names. FreeBSD does not use drive letters, or other drive "
-"names in the path. For example, one would not type [.filename]#c:\\foo\\bar"
-"\\readme.txt# on FreeBSD."
+"are necessary. For example, if the directory `foo` contains a directory "
+"`bar` which contains the file `readme.txt`, the full name, or _path_, to the "
+"file is `foo/bar/readme.txt`. Note that this is different from Windows(R) "
+"which uses `\\` to separate file and directory names. FreeBSD does not use "
+"drive letters, or other drive names in the path. For example, one would not "
+"type `c:\\foo\\bar\\readme.txt` on FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1133
+#: documentation/content/en/books/handbook/basics/_index.adoc:1151
msgid ""
"Directories and files are stored in a file system. Each file system "
"contains exactly one directory at the very top level, called the _root "
"directory_ for that file system. This root directory can contain other "
"directories. One file system is designated the _root file system_ or `/`. "
"Every other file system is _mounted_ under the root file system. No matter "
"how many disks are on the FreeBSD system, every directory appears to be part "
"of the same disk."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1136
+#: documentation/content/en/books/handbook/basics/_index.adoc:1154
msgid ""
"Consider three file systems, called `A`, `B`, and `C`. Each file system has "
"one root directory, which contains two other directories, called `A1`, `A2` "
"(and likewise `B1`, `B2` and `C1`, `C2`)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1140
+#: documentation/content/en/books/handbook/basics/_index.adoc:1158
msgid ""
"Call `A` the root file system. If man:ls[1] is used to view the contents of "
"this directory, it will show two subdirectories, `A1` and `A2`. The "
"directory tree looks like this:"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/basics/_index.adoc:1159
+#: documentation/content/en/books/handbook/basics/_index.adoc:1164
+#: documentation/content/en/books/handbook/basics/_index.adoc:1172
+#, no-wrap
+msgid "Directory tree with the root directory and two subdirectories"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1141
+#: documentation/content/en/books/handbook/basics/_index.adoc:1159
#, no-wrap
msgid "example-dir1.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1145
+#: documentation/content/en/books/handbook/basics/_index.adoc:1163
msgid ""
"A file system must be mounted on to a directory in another file system. "
"When mounting file system `B` on to the directory `A1`, the root directory "
"of `B` replaces `A1`, and the directories in `B` appear accordingly:"
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1146
+#: documentation/content/en/books/handbook/basics/_index.adoc:1164
#, no-wrap
msgid "example-dir2.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1151
+#: documentation/content/en/books/handbook/basics/_index.adoc:1169
msgid ""
"Any files that are in the `B1` or `B2` directories can be reached with the "
-"path [.filename]#/A1/B1# or [.filename]#/A1/B2# as necessary. Any files "
-"that were in [.filename]#/A1# have been temporarily hidden. They will "
-"reappear if `B` is _unmounted_ from `A`."
+"path `/A1/B1` or `/A1/B2` as necessary. Any files that were in `/A1` have "
+"been temporarily hidden. They will reappear if `B` is _unmounted_ from `A`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1153
+#: documentation/content/en/books/handbook/basics/_index.adoc:1171
msgid "If `B` had been mounted on `A2` then the diagram would look like this:"
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1154
+#: documentation/content/en/books/handbook/basics/_index.adoc:1172
#, no-wrap
msgid "example-dir3.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1157
-msgid ""
-"and the paths would be [.filename]#/A2/B1# and [.filename]#/A2/B2# "
-"respectively."
+#: documentation/content/en/books/handbook/basics/_index.adoc:1175
+msgid "and the paths would be `/A2/B1` and `/A2/B2` respectively."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1160
+#: documentation/content/en/books/handbook/basics/_index.adoc:1178
msgid ""
"File systems can be mounted on top of one another. Continuing the last "
"example, the `C` file system could be mounted on top of the `B1` directory "
"in the `B` file system, leading to this arrangement:"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/basics/_index.adoc:1179
+#: documentation/content/en/books/handbook/basics/_index.adoc:1183
+#, no-wrap
+msgid "A complex directory tree. With different subdirectories hanging from root."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1161
+#: documentation/content/en/books/handbook/basics/_index.adoc:1179
#, no-wrap
msgid "example-dir4.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1164
+#: documentation/content/en/books/handbook/basics/_index.adoc:1182
msgid ""
"Or `C` could be mounted directly on to the `A` file system, under the `A1` "
"directory:"
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1165
+#: documentation/content/en/books/handbook/basics/_index.adoc:1183
#, no-wrap
msgid "example-dir5.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1169
+#: documentation/content/en/books/handbook/basics/_index.adoc:1187
msgid ""
"It is entirely possible to have one large root file system, and not need to "
"create any others. There are some drawbacks to this approach, and one "
"advantage."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1170
+#: documentation/content/en/books/handbook/basics/_index.adoc:1188
#, no-wrap
msgid "Benefits of Multiple File Systems"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1172
+#: documentation/content/en/books/handbook/basics/_index.adoc:1190
msgid ""
"Different file systems can have different _mount options_. For example, the "
"root file system can be mounted read-only, making it impossible for users to "
"inadvertently delete or edit a critical file. Separating user-writable file "
-"systems, such as [.filename]#/home#, from other file systems allows them to "
-"be mounted _nosuid_. This option prevents the _suid_/_guid_ bits on "
-"executables stored on the file system from taking effect, possibly improving "
-"security."
+"systems, such as `/home`, from other file systems allows them to be mounted "
+"_nosuid_. This option prevents the _suid_/_guid_ bits on executables stored "
+"on the file system from taking effect, possibly improving security."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1173
+#: documentation/content/en/books/handbook/basics/_index.adoc:1191
msgid ""
"FreeBSD automatically optimizes the layout of files on a file system, "
"depending on how the file system is being used. So a file system that "
"contains many small files that are written frequently will have a different "
"optimization to one that contains fewer, larger files. By having one big "
"file system this optimization breaks down."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1174
+#: documentation/content/en/books/handbook/basics/_index.adoc:1192
msgid ""
"FreeBSD's file systems are robust if power is lost. However, a power loss at "
"a critical point could still damage the structure of the file system. By "
"splitting data over multiple file systems it is more likely that the system "
"will still come up, making it easier to restore from backup as necessary."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1175
+#: documentation/content/en/books/handbook/basics/_index.adoc:1193
#, no-wrap
msgid "Benefit of a Single File System"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1177
+#: documentation/content/en/books/handbook/basics/_index.adoc:1195
msgid ""
"File systems are a fixed size. If you create a file system when you install "
"FreeBSD and give it a specific size, you may later discover that you need to "
"make the partition bigger. This is not easily accomplished without backing "
"up, recreating the file system with the new size, and then restoring the "
"backed up data."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1181
+#: documentation/content/en/books/handbook/basics/_index.adoc:1202
msgid ""
"FreeBSD features the man:growfs[8] command, which makes it possible to "
-"increase the size of file system on the fly, removing this limitation."
+"increase the size of file system on the fly, removing this limitation. A "
+"file system can only be expanded into free space in the partition in which "
+"it resides. If there is space after the partition, the partition can be "
+"expanded with man:gpart[8]. If the partition is the last one on a virtual "
+"disk, and the disk is expanded, the partition can then be expanded."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1187
+#: documentation/content/en/books/handbook/basics/_index.adoc:1208
msgid ""
"File systems are contained in partitions. This does not have the same "
"meaning as the common usage of the term partition (for example, MS-DOS(R) "
"partition), because of FreeBSD's UNIX(R) heritage. Each partition is "
"identified by a letter from `a` through to `h`. Each partition can contain "
"only one file system, which means that file systems are often described by "
"either their typical mount point in the file system hierarchy, or the letter "
"of the partition they are contained in."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1191
+#: documentation/content/en/books/handbook/basics/_index.adoc:1212
msgid ""
"FreeBSD also uses disk space for _swap space_ to provide _virtual memory_. "
"This allows your computer to behave as though it has much more memory than "
"it actually does. When FreeBSD runs out of memory, it moves some of the "
"data that is not currently being used to the swap space, and moves it back "
"in (moving something else out) when it needs it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1193
+#: documentation/content/en/books/handbook/basics/_index.adoc:1214
msgid "Some partitions have certain conventions associated with them."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1198
+#: documentation/content/en/books/handbook/basics/_index.adoc:1218
#, no-wrap
msgid "Partition"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1200
+#: documentation/content/en/books/handbook/basics/_index.adoc:1220
#, no-wrap
msgid "Convention"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1201
+#: documentation/content/en/books/handbook/basics/_index.adoc:1221
#, no-wrap
msgid "`a`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1203
+#: documentation/content/en/books/handbook/basics/_index.adoc:1223
#, no-wrap
msgid "Normally contains the root file system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1204
+#: documentation/content/en/books/handbook/basics/_index.adoc:1224
#, no-wrap
msgid "`b`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1206
+#: documentation/content/en/books/handbook/basics/_index.adoc:1226
#, no-wrap
msgid "Normally contains swap space."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1207
+#: documentation/content/en/books/handbook/basics/_index.adoc:1227
#, no-wrap
msgid "`c`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1209
+#: documentation/content/en/books/handbook/basics/_index.adoc:1229
#, no-wrap
msgid "Normally the same size as the enclosing slice. This allows utilities that need to work on the entire slice, such as a bad block scanner, to work on the `c` partition. A file system would not normally be created on this partition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1210
+#: documentation/content/en/books/handbook/basics/_index.adoc:1230
#, no-wrap
msgid "`d`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1211
+#: documentation/content/en/books/handbook/basics/_index.adoc:1231
#, no-wrap
msgid "Partition `d` used to have a special meaning associated with it, although that is now gone and `d` may work as any normal partition."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1215
+#: documentation/content/en/books/handbook/basics/_index.adoc:1235
msgid ""
"Disks in FreeBSD are divided into slices, referred to in Windows(R) as "
"partitions, which are numbered from 1 to 4. These are then divided into "
"partitions, which contain file systems, and are labeled using letters."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1221
+#: documentation/content/en/books/handbook/basics/_index.adoc:1241
msgid ""
"Slice numbers follow the device name, prefixed with an `s`, starting at 1. "
"So \"da0__s1__\" is the first slice on the first SCSI drive. There can only "
"be four physical slices on a disk, but there can be logical slices inside "
"physical slices of the appropriate type. These extended slices are numbered "
"starting at 5, so \"ada0__s5__\" is the first extended slice on the first "
"SATA disk. These devices are used by file systems that expect to occupy a "
"slice."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1225
+#: documentation/content/en/books/handbook/basics/_index.adoc:1245
msgid ""
"Slices, \"dangerously dedicated\" physical drives, and other drives contain "
"_partitions_, which are represented as letters from `a` to `h`. This letter "
"is appended to the device name, so \"da0__a__\" is the `a` partition on the "
"first `da` drive, which is \"dangerously dedicated\". \"ada1s3__e__\" is "
"the fifth partition in the third slice of the second SATA disk drive."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1230
+#: documentation/content/en/books/handbook/basics/_index.adoc:1250
msgid ""
"Finally, each disk on the system is identified. A disk name starts with a "
"code that indicates the type of disk, and then a number, indicating which "
"disk it is. Unlike slices, disk numbering starts at 0. Common codes are "
"listed in <<disks-naming>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1233
+#: documentation/content/en/books/handbook/basics/_index.adoc:1253
msgid ""
"When referring to a partition, include the disk name, `s`, the slice number, "
"and then the partition letter. Examples are shown in <<basics-disk-slice-"
"part>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1235
+#: documentation/content/en/books/handbook/basics/_index.adoc:1255
msgid ""
"<<basics-concept-disk-model>> shows a conceptual model of a disk layout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1237
+#: documentation/content/en/books/handbook/basics/_index.adoc:1257
msgid ""
"When installing FreeBSD, configure the disk slices, create partitions within "
"the slice to be used for FreeBSD, create a file system or swap space in each "
"partition, and decide where each file system will be mounted."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1239
+#: documentation/content/en/books/handbook/basics/_index.adoc:1259
#, no-wrap
msgid "Disk Device Names"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1243
+#: documentation/content/en/books/handbook/basics/_index.adoc:1263
#, no-wrap
msgid "Drive Type"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1245
+#: documentation/content/en/books/handbook/basics/_index.adoc:1265
#, no-wrap
msgid "Drive Device Name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1246
+#: documentation/content/en/books/handbook/basics/_index.adoc:1266
#, no-wrap
msgid "SATA and IDE hard drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1248
+#: documentation/content/en/books/handbook/basics/_index.adoc:1268
#, no-wrap
msgid "`ada`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1249
+#: documentation/content/en/books/handbook/basics/_index.adoc:1269
#, no-wrap
msgid "SCSI hard drives and USB storage devices"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1251
+#: documentation/content/en/books/handbook/basics/_index.adoc:1271
#, no-wrap
msgid "`da`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1252
+#: documentation/content/en/books/handbook/basics/_index.adoc:1272
#, no-wrap
msgid "NVMe storage"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1254
+#: documentation/content/en/books/handbook/basics/_index.adoc:1274
#, no-wrap
msgid "`nvd` or `nda`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1255
+#: documentation/content/en/books/handbook/basics/_index.adoc:1275
#, no-wrap
msgid "SATA and IDE CD-ROM drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1257
-#: documentation/content/en/books/handbook/basics/_index.adoc:1260
+#: documentation/content/en/books/handbook/basics/_index.adoc:1277
+#: documentation/content/en/books/handbook/basics/_index.adoc:1280
#, no-wrap
msgid "`cd`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1258
+#: documentation/content/en/books/handbook/basics/_index.adoc:1278
#, no-wrap
msgid "SCSICD-ROM drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1261
+#: documentation/content/en/books/handbook/basics/_index.adoc:1281
#, no-wrap
msgid "Floppy drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1263
+#: documentation/content/en/books/handbook/basics/_index.adoc:1283
#, no-wrap
msgid "`fd`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1264
+#: documentation/content/en/books/handbook/basics/_index.adoc:1284
#, no-wrap
msgid "SCSI tape drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1266
+#: documentation/content/en/books/handbook/basics/_index.adoc:1286
#, no-wrap
msgid "`sa`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1267
+#: documentation/content/en/books/handbook/basics/_index.adoc:1287
#, no-wrap
msgid "RAID drives"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1268
+#: documentation/content/en/books/handbook/basics/_index.adoc:1288
#, no-wrap
msgid "Examples include `aacd` for Adaptec(R) AdvancedRAID, `mlxd` and `mlyd` for Mylex(R), `amrd` for AMI MegaRAID(R), `idad` for Compaq Smart RAID, `twed` for 3ware(R) RAID."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1273
+#: documentation/content/en/books/handbook/basics/_index.adoc:1293
#, no-wrap
msgid "Sample Disk, Slice, and Partition Names"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1278
+#: documentation/content/en/books/handbook/basics/_index.adoc:1298
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1280
+#: documentation/content/en/books/handbook/basics/_index.adoc:1300
#, no-wrap
msgid "Meaning"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1281
+#: documentation/content/en/books/handbook/basics/_index.adoc:1301
#, no-wrap
msgid "`ada0s1a`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1283
+#: documentation/content/en/books/handbook/basics/_index.adoc:1303
#, no-wrap
msgid "The first partition (`a`) on the first slice (`s1`) on the first SATA disk (`ada0`)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1284
+#: documentation/content/en/books/handbook/basics/_index.adoc:1304
#, no-wrap
msgid "`da1s2e`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1285
+#: documentation/content/en/books/handbook/basics/_index.adoc:1305
#, no-wrap
msgid "The fifth partition (`e`) on the second slice (`s2`) on the second SCSI disk (`da1`)."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1289
+#: documentation/content/en/books/handbook/basics/_index.adoc:1309
#, no-wrap
msgid "Conceptual Model of a Disk"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1296
+#: documentation/content/en/books/handbook/basics/_index.adoc:1316
msgid ""
"This diagram shows FreeBSD's view of the first SATA disk attached to the "
"system. Assume that the disk is 250 GB in size, and contains an 80 GB slice "
"and a 170 GB slice (MS-DOS(R) partitions). The first slice contains a "
-"Windows(R) NTFS file system, [.filename]#C:#, and the second slice contains "
-"a FreeBSD installation. This example FreeBSD installation has four data "
-"partitions and a swap partition."
+"Windows(R) NTFS file system, `C:`, and the second slice contains a FreeBSD "
+"installation. This example FreeBSD installation has four data partitions "
+"and a swap partition."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1300
+#: documentation/content/en/books/handbook/basics/_index.adoc:1320
msgid ""
"The four partitions each hold a file system. Partition `a` is used for the "
-"root file system, `d` for [.filename]#/var/#, `e` for [.filename]#/tmp/#, "
-"and `f` for [.filename]#/usr/#. Partition letter `c` refers to the entire "
-"slice, and so is not used for ordinary partitions."
+"root file system, `d` for `/var/`, `e` for `/tmp/`, and `f` for `/usr/`. "
+"Partition letter `c` refers to the entire slice, and so is not used for "
+"ordinary partitions."
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/basics/_index.adoc:1321
+#, no-wrap
+msgid "Layout of a shared drive between Windows and FreeBSD"
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/basics/_index.adoc:1301
+#: documentation/content/en/books/handbook/basics/_index.adoc:1321
#, no-wrap
msgid "disk-layout.png"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1305
+#: documentation/content/en/books/handbook/basics/_index.adoc:1325
#, no-wrap
msgid "Mounting and Unmounting File Systems"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1308
+#: documentation/content/en/books/handbook/basics/_index.adoc:1328
msgid ""
-"The file system is best visualized as a tree, rooted, as it were, at [."
-"filename]#/#. [.filename]#/dev#, [.filename]#/usr#, and the other "
-"directories in the root directory are branches, which may have their own "
-"branches, such as [.filename]#/usr/local#, and so on."
+"The file system is best visualized as a tree, rooted, as it were, at `/`. `/"
+"dev`, `/usr`, and the other directories in the root directory are branches, "
+"which may have their own branches, such as `/usr/local`, and so on."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1312
+#: documentation/content/en/books/handbook/basics/_index.adoc:1332
msgid ""
"There are various reasons to house some of these directories on separate "
-"file systems. [.filename]#/var# contains the directories [.filename]#log/#, "
-"[.filename]#spool/#, and various types of temporary files, and as such, may "
-"get filled up. Filling up the root file system is not a good idea, so "
-"splitting [.filename]#/var# from [.filename]#/# is often favorable."
+"file systems. `/var` contains the directories `log/`, `spool/`, and various "
+"types of temporary files, and as such, may get filled up. Filling up the "
+"root file system is not a good idea, so splitting `/var` from `/` is often "
+"favorable."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1314
+#: documentation/content/en/books/handbook/basics/_index.adoc:1334
msgid ""
"Another common reason to contain certain directory trees on other file "
"systems is if they are to be housed on separate physical disks, or are "
"separate virtual disks, such as Network File System mounts, described in "
"crossref:network-servers[network-nfs,“Network File System (NFS)”], or CDROM "
"drives."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1316
+#: documentation/content/en/books/handbook/basics/_index.adoc:1336
#, no-wrap
-msgid "The [.filename]#fstab# File"
+msgid "The fstab File"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1320
+#: documentation/content/en/books/handbook/basics/_index.adoc:1340
msgid ""
"During the boot process (crossref:boot[boot,The FreeBSD Booting Process]), "
-"file systems listed in [.filename]#/etc/fstab# are automatically mounted "
-"except for the entries containing `noauto`. This file contains entries in "
-"the following format:"
+"file systems listed in `/etc/fstab` are automatically mounted except for the "
+"entries containing `noauto`. This file contains entries in the following "
+"format:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1324
+#: documentation/content/en/books/handbook/basics/_index.adoc:1344
#, no-wrap
msgid "device /mount-point fstype options dumpfreq passno\n"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1326
+#: documentation/content/en/books/handbook/basics/_index.adoc:1346
#, no-wrap
msgid "`device`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1328
+#: documentation/content/en/books/handbook/basics/_index.adoc:1348
msgid "An existing device name as explained in <<disks-naming>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1329
+#: documentation/content/en/books/handbook/basics/_index.adoc:1349
#, no-wrap
msgid "`mount-point`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1331
+#: documentation/content/en/books/handbook/basics/_index.adoc:1351
msgid "An existing directory on which to mount the file system."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1332
+#: documentation/content/en/books/handbook/basics/_index.adoc:1352
#, no-wrap
msgid "`fstype`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1335
+#: documentation/content/en/books/handbook/basics/_index.adoc:1355
msgid ""
"The file system type to pass to man:mount[8]. The default FreeBSD file "
"system is `ufs`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1336
+#: documentation/content/en/books/handbook/basics/_index.adoc:1356
#, no-wrap
msgid "`options`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1340
+#: documentation/content/en/books/handbook/basics/_index.adoc:1360
msgid ""
"Either `rw` for read-write file systems, or `ro` for read-only file systems, "
"followed by any other options that may be needed. A common option is "
"`noauto` for file systems not normally mounted during the boot sequence. "
"Other options are listed in man:mount[8]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1341
+#: documentation/content/en/books/handbook/basics/_index.adoc:1361
#, no-wrap
msgid "`dumpfreq`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1344
+#: documentation/content/en/books/handbook/basics/_index.adoc:1364
msgid ""
"Used by man:dump[8] to determine which file systems require dumping. If the "
"field is missing, a value of zero is assumed."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1345
+#: documentation/content/en/books/handbook/basics/_index.adoc:1365
#, no-wrap
msgid "`passno`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1351
+#: documentation/content/en/books/handbook/basics/_index.adoc:1371
msgid ""
-"Determines the order in which file systems should be checked. File systems "
-"that should be skipped should have their `passno` set to zero. The root "
-"file system needs to be checked before everything else and should have its "
-"`passno` set to one. The other file systems should be set to values greater "
-"than one. If more than one file system has the same `passno`, man:fsck[8] "
-"will attempt to check file systems in parallel if possible."
+"Determines the order in which UFS file systems should be checked by man:"
+"fsck[8] after a reboot. File systems that should be skipped should have "
+"their `passno` set to zero. The root file system needs to be checked before "
+"everything else and should have its `passno` set to one. The other file "
+"systems should be set to values greater than one. If more than one file "
+"system has the same `passno`, man:fsck[8] will attempt to check file systems "
+"in parallel if possible."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1353
+#: documentation/content/en/books/handbook/basics/_index.adoc:1373
msgid ""
-"Refer to man:fstab[5] for more information on the format of [.filename]#/etc/"
-"fstab# and its options."
+"Refer to man:fstab[5] for more information on the format of `/etc/fstab` and "
+"its options."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1355
+#: documentation/content/en/books/handbook/basics/_index.adoc:1375
#, no-wrap
msgid "Using man:mount[8]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1359
+#: documentation/content/en/books/handbook/basics/_index.adoc:1379
msgid ""
"File systems are mounted using man:mount[8]. The most basic syntax is as "
"follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1365
+#: documentation/content/en/books/handbook/basics/_index.adoc:1385
#, no-wrap
msgid "# mount device mountpoint\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1369
+#: documentation/content/en/books/handbook/basics/_index.adoc:1389
msgid ""
"This command provides many options which are described in man:mount[8], The "
"most commonly used options include:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1370
+#: documentation/content/en/books/handbook/basics/_index.adoc:1390
#, no-wrap
msgid "Mount Options"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1371
+#: documentation/content/en/books/handbook/basics/_index.adoc:1391
#, no-wrap
msgid "`-a`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1373
+#: documentation/content/en/books/handbook/basics/_index.adoc:1393
msgid ""
-"Mount all the file systems listed in [.filename]#/etc/fstab#, except those "
-"marked as \"noauto\", excluded by the `-t` flag, or those that are already "
-"mounted."
+"Mount all the file systems listed in `/etc/fstab`, except those marked as "
+"\"noauto\", excluded by the `-t` flag, or those that are already mounted."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1374
+#: documentation/content/en/books/handbook/basics/_index.adoc:1394
#, no-wrap
msgid "`-d`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1377
+#: documentation/content/en/books/handbook/basics/_index.adoc:1397
msgid ""
"Do everything except for the actual mount system call. This option is "
"useful in conjunction with the `-v` flag to determine what man:mount[8] is "
"actually trying to do."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1378
+#: documentation/content/en/books/handbook/basics/_index.adoc:1398
#, no-wrap
msgid "`-f`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1380
+#: documentation/content/en/books/handbook/basics/_index.adoc:1400
msgid ""
"Force the mount of an unclean file system (dangerous), or the revocation of "
"write access when downgrading a file system's mount status from read-write "
"to read-only."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1381
+#: documentation/content/en/books/handbook/basics/_index.adoc:1401
#, no-wrap
msgid "`-r`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1384
+#: documentation/content/en/books/handbook/basics/_index.adoc:1404
msgid "Mount the file system read-only. This is identical to using `-o ro`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1385
+#: documentation/content/en/books/handbook/basics/_index.adoc:1405
#, no-wrap
msgid "``-t _fstype_``"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1388
+#: documentation/content/en/books/handbook/basics/_index.adoc:1408
msgid ""
"Mount the specified file system type or mount only file systems of the given "
"type, if `-a` is included. \"ufs\" is the default file system type."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1389
+#: documentation/content/en/books/handbook/basics/_index.adoc:1409
#, no-wrap
msgid "`-u`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1391
+#: documentation/content/en/books/handbook/basics/_index.adoc:1411
msgid "Update mount options on the file system."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1392
+#: documentation/content/en/books/handbook/basics/_index.adoc:1412
#, no-wrap
msgid "`-v`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1394
+#: documentation/content/en/books/handbook/basics/_index.adoc:1414
msgid "Be verbose."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1395
+#: documentation/content/en/books/handbook/basics/_index.adoc:1415
#, no-wrap
msgid "`-w`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1397
+#: documentation/content/en/books/handbook/basics/_index.adoc:1417
msgid "Mount the file system read-write."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1399
+#: documentation/content/en/books/handbook/basics/_index.adoc:1419
msgid "The following options can be passed to `-o` as a comma-separated list:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/basics/_index.adoc:1400
+#: documentation/content/en/books/handbook/basics/_index.adoc:1420
#, no-wrap
msgid "nosuid"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1403
+#: documentation/content/en/books/handbook/basics/_index.adoc:1423
msgid ""
"Do not interpret setuid or setgid flags on the file system. This is also a "
"useful security option."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1405
+#: documentation/content/en/books/handbook/basics/_index.adoc:1425
#, no-wrap
msgid "Using man:umount[8]"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1409
+#: documentation/content/en/books/handbook/basics/_index.adoc:1429
msgid ""
"To unmount a file system use man:umount[8]. This command takes one "
"parameter which can be a mountpoint, device name, `-a` or `-A`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1412
+#: documentation/content/en/books/handbook/basics/_index.adoc:1432
msgid ""
"All forms take `-f` to force unmounting, and `-v` for verbosity. Be warned "
"that `-f` is not generally a good idea as it might crash the computer or "
"damage data on the file system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1415
+#: documentation/content/en/books/handbook/basics/_index.adoc:1435
msgid ""
"To unmount all mounted file systems, or just the file system types listed "
"after `-t`, use `-a` or `-A`. Note that `-A` does not attempt to unmount "
"the root file system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1417
+#: documentation/content/en/books/handbook/basics/_index.adoc:1437
#, no-wrap
msgid "Processes and Daemons"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1422
+#: documentation/content/en/books/handbook/basics/_index.adoc:1442
msgid ""
"FreeBSD is a multi-tasking operating system. Each program running at any "
"one time is called a _process_. Every running command starts at least one "
"new process and there are a number of system processes that are run by "
"FreeBSD."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1428
+#: documentation/content/en/books/handbook/basics/_index.adoc:1448
msgid ""
"Each process is uniquely identified by a number called a _process ID_ "
"(PID). Similar to files, each process has one owner and group, and the "
"owner and group permissions are used to determine which files and devices "
"the process can open. Most processes also have a parent process that "
"started them. For example, the shell is a process, and any command started "
"in the shell is a process which has the shell as its parent process. The "
"exception is a special process called man:init[8] which is always the first "
"process to start at boot time and which always has a PID of `1`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1435
+#: documentation/content/en/books/handbook/basics/_index.adoc:1455
msgid ""
"Some programs are not designed to be run with continuous user input and "
"disconnect from the terminal at the first opportunity. For example, a web "
"server responds to web requests, rather than user input. Mail servers are "
"another example of this type of application. These types of programs are "
"known as _daemons_. The term daemon comes from Greek mythology and "
"represents an entity that is neither good nor evil, and which invisibly "
"performs useful tasks. This is why the BSD mascot is the cheerful-looking "
"daemon with sneakers and a pitchfork."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1441
+#: documentation/content/en/books/handbook/basics/_index.adoc:1461
msgid ""
"There is a convention to name programs that normally run as daemons with a "
"trailing \"d\". For example, BIND is the Berkeley Internet Name Domain, but "
"the actual program that executes is `named`. The Apache web server program "
"is `httpd` and the line printer spooling daemon is `lpd`. This is only a "
"naming convention. For example, the main mail daemon for the Sendmail "
"application is `sendmail`, and not `maild`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1442
+#: documentation/content/en/books/handbook/basics/_index.adoc:1462
#, no-wrap
msgid "Viewing Processes"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1447
+#: documentation/content/en/books/handbook/basics/_index.adoc:1467
msgid ""
"To see the processes running on the system, use man:ps[1] or man:top[1]. To "
"display a static list of the currently running processes, their PIDs, how "
"much memory they are using, and the command they were started with, use man:"
"ps[1]. To display all the running processes and update the display every "
"few seconds in order to interactively see what the computer is doing, use "
"man:top[1]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1450
+#: documentation/content/en/books/handbook/basics/_index.adoc:1470
msgid ""
"By default, man:ps[1] only shows the commands that are running and owned by "
"the user. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1457
+#: documentation/content/en/books/handbook/basics/_index.adoc:1477
#, no-wrap
msgid ""
"% ps\n"
" PID TT STAT TIME COMMAND\n"
"8203 0 Ss 0:00.59 /bin/csh\n"
"8895 0 R+ 0:00.00 ps\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1467
+#: documentation/content/en/books/handbook/basics/_index.adoc:1487
msgid ""
"The output from man:ps[1] is organized into a number of columns. The `PID` "
"column displays the process ID. PIDs are assigned starting at 1, go up to "
"99999, then wrap around back to the beginning. However, a PID is not "
"reassigned if it is already in use. The `TT` column shows the tty the "
"program is running on and `STAT` shows the program's state. `TIME` is the "
"amount of time the program has been running on the CPU. This is usually not "
"the elapsed time since the program was started, as most programs spend a lot "
"of time waiting for things to happen before they need to spend time on the "
"CPU. Finally, `COMMAND` is the command that was used to start the program."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1470
+#: documentation/content/en/books/handbook/basics/_index.adoc:1490
msgid ""
"A number of different options are available to change the information that "
"is displayed. One of the most useful sets is `auxww`, where `a` displays "
"information about all the running processes of all users, `u` displays the "
"username and memory usage of the process' owner, `x` displays information "
"about daemon processes, and `ww` causes man:ps[1] to display the full "
"command line for each process, rather than truncating it once it gets too "
"long to fit on the screen."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1472
+#: documentation/content/en/books/handbook/basics/_index.adoc:1492
msgid "The output from man:top[1] is similar:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1482
+#: documentation/content/en/books/handbook/basics/_index.adoc:1502
#, no-wrap
msgid ""
"% top\n"
"last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46\n"
"107 processes: 2 running, 104 sleeping, 1 zombie\n"
"CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle\n"
"Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free\n"
"ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other\n"
"Swap: 2048M Total, 2048M Free\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1495
+#: documentation/content/en/books/handbook/basics/_index.adoc:1515
#, no-wrap
msgid ""
" PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND\n"
" 557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg\n"
" 8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4\n"
" 8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox\n"
" 431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused\n"
" 9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top\n"
" 2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4\n"
" 8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4\n"
" 8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin\n"
" 2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd\n"
" 2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin\n"
" 1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1501
+#: documentation/content/en/books/handbook/basics/_index.adoc:1521
msgid ""
"The output is split into two sections. The header (the first five or six "
"lines) shows the PID of the last process to run, the system load averages "
"(which are a measure of how busy the system is), the system uptime (time "
"since the last reboot) and the current time. The other figures in the "
"header relate to how many processes are running, how much memory and swap "
"space has been used, and how much time the system is spending in different "
"CPU states. If the ZFS file system module has been loaded, an `ARC` line "
"indicates how much data was read from the memory cache instead of from disk."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1506
+#: documentation/content/en/books/handbook/basics/_index.adoc:1526
msgid ""
"Below the header is a series of columns containing similar information to "
"the output from man:ps[1], such as the PID, username, amount of CPU time, "
"and the command that started the process. By default, man:top[1] also "
"displays the amount of memory space taken by the process. This is split "
"into two columns: one for total size and one for resident size. Total size "
"is how much memory the application has needed and the resident size is how "
"much it is actually using now."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1509
+#: documentation/content/en/books/handbook/basics/_index.adoc:1529
msgid ""
"man:top[1] automatically updates the display every two seconds. A different "
"interval can be specified with `-s`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1511
+#: documentation/content/en/books/handbook/basics/_index.adoc:1531
#, no-wrap
msgid "Killing Processes"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1517
+#: documentation/content/en/books/handbook/basics/_index.adoc:1537
msgid ""
"One way to communicate with any running process or daemon is to send a "
"_signal_ using man:kill[1]. There are a number of different signals; some "
"have a specific meaning while others are described in the application's "
"documentation. A user can only send a signal to a process they own and "
"sending a signal to someone else's process will result in a permission "
"denied error. The exception is the `root` user, who can send signals to "
"anyone's processes."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1521
+#: documentation/content/en/books/handbook/basics/_index.adoc:1541
msgid ""
"The operating system can also send a signal to a process. If an application "
"is badly written and tries to access memory that it is not supposed to, "
"FreeBSD will send the process the \"Segmentation Violation\" signal "
"(`SIGSEGV`). If an application has been written to use the man:alarm[3] "
"system call to be alerted after a period of time has elapsed, it will be "
"sent the \"Alarm\" signal (`SIGALRM`)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1525
+#: documentation/content/en/books/handbook/basics/_index.adoc:1545
msgid ""
"Two signals can be used to stop a process: `SIGTERM` and `SIGKILL`. "
"`SIGTERM` is the polite way to kill a process as the process can read the "
"signal, close any log files it may have open, and attempt to finish what it "
"is doing before shutting down. In some cases, a process may ignore "
"`SIGTERM` if it is in the middle of some task that cannot be interrupted."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1528
+#: documentation/content/en/books/handbook/basics/_index.adoc:1548
msgid ""
"`SIGKILL` cannot be ignored by a process. Sending a `SIGKILL` to a process "
"will usually stop that process there and then. footnote:[There are a few "
"tasks that cannot be interrupted. For example, if the process is trying to "
"read from a file that is on another computer on the network, and the other "
"computer is unavailable, the process is said to be uninterruptible. "
"Eventually the process will time out, typically after two minutes. As soon "
"as this time out occurs the process will be killed.]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1531
+#: documentation/content/en/books/handbook/basics/_index.adoc:1551
msgid ""
"Other commonly used signals are `SIGHUP`, `SIGUSR1`, and `SIGUSR2`. Since "
"these are general purpose signals, different applications will respond "
"differently."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1536
+#: documentation/content/en/books/handbook/basics/_index.adoc:1556
msgid ""
"For example, after changing a web server's configuration file, the web "
"server needs to be told to re-read its configuration. Restarting `httpd` "
"would result in a brief outage period on the web server. Instead, send the "
"daemon the `SIGHUP` signal. Be aware that different daemons will have "
"different behavior, so refer to the documentation for the daemon to "
"determine if `SIGHUP` will achieve the desired results."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1539
-#, no-wrap
-msgid "Procedure: Sending a Signal to a Process"
-msgstr ""
-
-#. type: delimited block * 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1543
-msgid ""
-"This example shows how to send a signal to man:inetd[8]. The man:inetd[8] "
-"configuration file is [.filename]#/etc/inetd.conf#, and man:inetd[8] will re-"
-"read this configuration file when it is sent a `SIGHUP`."
-msgstr ""
-
-#. type: delimited block * 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1545
-msgid ""
-"Find the PID of the process to send the signal to using man:pgrep[1]. In "
-"this example, the PID for man:inetd[8] is 198:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1550
-#, no-wrap
-msgid ""
-"% pgrep -l inetd\n"
-"198 inetd\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1553
-msgid ""
-"Use man:kill[1] to send the signal. As man:inetd[8] is owned by `root`, use "
-"man:su[1] to become `root` first."
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1559
-#, no-wrap
-msgid ""
-"% su\n"
-"Password:\n"
-"# /bin/kill -s HUP 198\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1564
-msgid ""
-"Like most UNIX(R) commands, man:kill[1] will not print any output if it is "
-"successful. If a signal is sent to a process not owned by that user, the "
-"message `kill: _PID_: Operation not permitted` will be displayed. Mistyping "
-"the PID will either send the signal to the wrong process, which could have "
-"negative results, or will send the signal to a PID that is not currently in "
-"use, resulting in the error `kill: _PID_: No such process`."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1568
-#, no-wrap
-msgid "*Why Use `/bin/kill`?:* +\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1572
-msgid ""
-"Many shells provide `kill` as a built in command, meaning that the shell "
-"will send the signal directly, rather than running [.filename]#/bin/kill#. "
-"Be aware that different shells have a different syntax for specifying the "
-"name of the signal to send. Rather than try to learn all of them, it can be "
-"simpler to specify `/bin/kill`."
-msgstr ""
-
-#. type: delimited block * 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1576
-msgid ""
-"When sending other signals, substitute `TERM` or `KILL` with the name of the "
-"signal."
-msgstr ""
-
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1583
+#: documentation/content/en/books/handbook/basics/_index.adoc:1563
msgid ""
"Killing a random process on the system is a bad idea. In particular, man:"
"init[8], PID 1, is special. Running `/bin/kill -s KILL 1` is a quick, and "
"unrecommended, way to shutdown the system. _Always_ double check the "
"arguments to man:kill[1] _before_ pressing kbd:[Return]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1586
+#: documentation/content/en/books/handbook/basics/_index.adoc:1566
#, no-wrap
msgid "Shells"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1593
+#: documentation/content/en/books/handbook/basics/_index.adoc:1573
msgid ""
"A _shell_ provides a command line interface for interacting with the "
"operating system. A shell receives commands from the input channel and "
"executes them. Many shells provide built in functions to help with everyday "
"tasks such as file management, file globbing, command line editing, command "
"macros, and environment variables. FreeBSD comes with several shells, "
"including the Bourne shell (man:sh[1]) and the extended C shell (man:"
"tcsh[1]). Other shells are available from the FreeBSD Ports Collection, "
"such as `zsh` and `bash`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1598
+#: documentation/content/en/books/handbook/basics/_index.adoc:1578
msgid ""
"The shell that is used is really a matter of taste. A C programmer might "
"feel more comfortable with a C-like shell such as man:tcsh[1]. A Linux(R) "
"user might prefer `bash`. Each shell has unique properties that may or may "
"not work with a user's preferred working environment, which is why there is "
"a choice of which shell to use."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1603
+#: documentation/content/en/books/handbook/basics/_index.adoc:1583
msgid ""
"One common shell feature is filename completion. After a user types the "
"first few letters of a command or filename and presses kbd:[Tab], the shell "
-"completes the rest of the command or filename. Consider two files called [."
-"filename]#foobar# and [.filename]#football#. To delete [.filename]#foobar#, "
-"the user might type `rm foo` and press kbd:[Tab] to complete the filename."
+"completes the rest of the command or filename. Consider two files called "
+"`foobar` and `football`. To delete `foobar`, the user might type `rm foo` "
+"and press kbd:[Tab] to complete the filename."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1609
+#: documentation/content/en/books/handbook/basics/_index.adoc:1589
msgid ""
"But the shell only shows `rm foo`. It was unable to complete the filename "
-"because both [.filename]#foobar# and [.filename]#football# start with "
-"`foo`. Some shells sound a beep or show all the choices if more than one "
-"name matches. The user must then type more characters to identify the "
-"desired filename. Typing a `t` and pressing kbd:[Tab] again is enough to "
-"let the shell determine which filename is desired and fill in the rest."
+"because both `foobar` and `football` start with `foo`. Some shells sound a "
+"beep or show all the choices if more than one name matches. The user must "
+"then type more characters to identify the desired filename. Typing a `t` "
+"and pressing kbd:[Tab] again is enough to let the shell determine which "
+"filename is desired and fill in the rest."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1615
+#: documentation/content/en/books/handbook/basics/_index.adoc:1595
msgid ""
"Another feature of the shell is the use of environment variables. "
"Environment variables are a variable/key pair stored in the shell's "
"environment. This environment can be read by any program invoked by the "
"shell, and thus contains a lot of program configuration. <<shell-env-vars>> "
"provides a list of common environment variables and their meanings. Note "
"that the names of environment variables are always in uppercase."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/basics/_index.adoc:1617
+#: documentation/content/en/books/handbook/basics/_index.adoc:1597
#, no-wrap
msgid "Common Environment Variables"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1621
+#: documentation/content/en/books/handbook/basics/_index.adoc:1601
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1624
+#: documentation/content/en/books/handbook/basics/_index.adoc:1604
#, no-wrap
msgid "`USER`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1626
+#: documentation/content/en/books/handbook/basics/_index.adoc:1606
#, no-wrap
msgid "Current logged in user's name."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1627
+#: documentation/content/en/books/handbook/basics/_index.adoc:1607
#, no-wrap
msgid "`PATH`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1629
+#: documentation/content/en/books/handbook/basics/_index.adoc:1609
#, no-wrap
msgid "Colon-separated list of directories to search for binaries."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1630
+#: documentation/content/en/books/handbook/basics/_index.adoc:1610
#, no-wrap
msgid "`DISPLAY`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1632
+#: documentation/content/en/books/handbook/basics/_index.adoc:1612
#, no-wrap
msgid "Network name of the Xorg display to connect to, if available."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1633
+#: documentation/content/en/books/handbook/basics/_index.adoc:1613
#, no-wrap
msgid "`SHELL`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1635
+#: documentation/content/en/books/handbook/basics/_index.adoc:1615
#, no-wrap
msgid "The current shell."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1636
+#: documentation/content/en/books/handbook/basics/_index.adoc:1616
#, no-wrap
msgid "`TERM`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1638
+#: documentation/content/en/books/handbook/basics/_index.adoc:1618
#, no-wrap
msgid "The name of the user's type of terminal. Used to determine the capabilities of the terminal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1639
+#: documentation/content/en/books/handbook/basics/_index.adoc:1619
#, no-wrap
msgid "`TERMCAP`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1641
+#: documentation/content/en/books/handbook/basics/_index.adoc:1621
#, no-wrap
msgid "Database entry of the terminal escape codes to perform various terminal functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1642
+#: documentation/content/en/books/handbook/basics/_index.adoc:1622
#, no-wrap
msgid "`OSTYPE`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1644
+#: documentation/content/en/books/handbook/basics/_index.adoc:1624
#, no-wrap
msgid "Type of operating system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1645
+#: documentation/content/en/books/handbook/basics/_index.adoc:1625
#, no-wrap
msgid "`MACHTYPE`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1647
+#: documentation/content/en/books/handbook/basics/_index.adoc:1627
#, no-wrap
msgid "The system's CPU architecture."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1648
+#: documentation/content/en/books/handbook/basics/_index.adoc:1628
#, no-wrap
msgid "`EDITOR`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1650
+#: documentation/content/en/books/handbook/basics/_index.adoc:1630
#, no-wrap
msgid "The user's preferred text editor."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1651
+#: documentation/content/en/books/handbook/basics/_index.adoc:1631
#, no-wrap
msgid "`PAGER`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1653
+#: documentation/content/en/books/handbook/basics/_index.adoc:1633
#, no-wrap
msgid "The user's preferred utility for viewing text one page at a time."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1654
+#: documentation/content/en/books/handbook/basics/_index.adoc:1634
#, no-wrap
msgid "`MANPATH`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/basics/_index.adoc:1655
+#: documentation/content/en/books/handbook/basics/_index.adoc:1635
#, no-wrap
msgid "Colon-separated list of directories to search for manual pages."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1661
+#: documentation/content/en/books/handbook/basics/_index.adoc:1641
msgid ""
"How to set an environment variable differs between shells. In man:tcsh[1] "
"and man:csh[1], use `setenv` to set environment variables. In man:sh[1] and "
"`bash`, use `export` to set the current environment variables. This example "
-"sets the default `EDITOR` to [.filename]#/usr/local/bin/emacs# for the man:"
-"tcsh[1] shell:"
+"sets the default `EDITOR` to `/usr/local/bin/emacs` for the man:tcsh[1] "
+"shell:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1665
+#: documentation/content/en/books/handbook/basics/_index.adoc:1645
#, no-wrap
msgid "% setenv EDITOR /usr/local/bin/emacs\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1668
+#: documentation/content/en/books/handbook/basics/_index.adoc:1648
msgid "The equivalent command for `bash` would be:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1672
+#: documentation/content/en/books/handbook/basics/_index.adoc:1652
#, no-wrap
msgid "% export EDITOR=\"/usr/local/bin/emacs\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1676
+#: documentation/content/en/books/handbook/basics/_index.adoc:1656
msgid ""
"To expand an environment variable in order to see its current setting, type "
"a `$` character in front of its name on the command line. For example, "
"`echo $TERM` displays the current `$TERM` setting."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1681
+#: documentation/content/en/books/handbook/basics/_index.adoc:1661
msgid ""
"Shells treat special characters, known as meta-characters, as special "
"representations of data. The most common meta-character is `\\*`, which "
"represents any number of characters in a filename. Meta-characters can be "
"used to perform filename globbing. For example, `echo *` is equivalent to "
"`ls` because the shell takes all the files that match `*` and `echo` lists "
"them on the command line."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1684
+#: documentation/content/en/books/handbook/basics/_index.adoc:1664
msgid ""
"To prevent the shell from interpreting a special character, escape it from "
"the shell by starting it with a backslash (`\\`). For example, `echo $TERM` "
"prints the terminal setting whereas `echo \\$TERM` literally prints the "
"string `$TERM`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1686
+#: documentation/content/en/books/handbook/basics/_index.adoc:1666
#, no-wrap
msgid "Changing the Shell"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1691
+#: documentation/content/en/books/handbook/basics/_index.adoc:1671
msgid ""
"The easiest way to permanently change the default shell is to use `chsh`. "
"Running this command will open the editor that is configured in the `EDITOR` "
"environment variable, which by default is set to man:vi[1]. Change the "
"`Shell:` line to the full path of the new shell."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1694
+#: documentation/content/en/books/handbook/basics/_index.adoc:1674
msgid ""
"Alternately, use `chsh -s` which will set the specified shell without "
"opening an editor. For example, to change the shell to `bash`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1698
+#: documentation/content/en/books/handbook/basics/_index.adoc:1678
#, no-wrap
msgid "% chsh -s /usr/local/bin/bash\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1705
+#: documentation/content/en/books/handbook/basics/_index.adoc:1685
msgid ""
-"The new shell _must_ be present in [.filename]#/etc/shells#. If the shell "
-"was installed from the FreeBSD Ports Collection as described in crossref:"
+"The new shell _must_ be present in `/etc/shells`. If the shell was "
+"installed from the FreeBSD Ports Collection as described in crossref:"
"ports[ports,Installing Applications: Packages and Ports], it should be "
"automatically added to this file. If it is missing, add it using this "
"command, replacing the path with the path of the shell:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1709
+#: documentation/content/en/books/handbook/basics/_index.adoc:1689
#, no-wrap
msgid "# echo /usr/local/bin/bash >> /etc/shells\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1712
+#: documentation/content/en/books/handbook/basics/_index.adoc:1692
msgid "Then, rerun man:chsh[1]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1714
+#: documentation/content/en/books/handbook/basics/_index.adoc:1694
#, no-wrap
msgid "Advanced Shell Techniques"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1718
+#: documentation/content/en/books/handbook/basics/_index.adoc:1698
msgid ""
"The UNIX(R) shell is not just a command interpreter, it acts as a powerful "
"tool which allows users to execute commands, redirect their output, redirect "
"their input and chain commands together to improve the final command "
"output. When this functionality is mixed with built in commands, the user "
"is provided with an environment that can maximize efficiency."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1721
+#: documentation/content/en/books/handbook/basics/_index.adoc:1701
msgid ""
"Shell redirection is the action of sending the output or the input of a "
"command into another command or into a file. To capture the output of the "
"man:ls[1] command, for example, into a file, redirect the output:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1725
+#: documentation/content/en/books/handbook/basics/_index.adoc:1705
#, no-wrap
msgid "% ls > directory_listing.txt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1730
+#: documentation/content/en/books/handbook/basics/_index.adoc:1710
msgid ""
-"The directory contents will now be listed in [.filename]#directory_listing."
-"txt#. Some commands can be used to read input, such as man:sort[1]. To "
-"sort this listing, redirect the input:"
+"The directory contents will now be listed in `directory_listing.txt`. Some "
+"commands can be used to read input, such as man:sort[1]. To sort this "
+"listing, redirect the input:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1734
+#: documentation/content/en/books/handbook/basics/_index.adoc:1714
#, no-wrap
msgid "% sort < directory_listing.txt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1738
+#: documentation/content/en/books/handbook/basics/_index.adoc:1718
msgid ""
"The input will be sorted and placed on the screen. To redirect that input "
"into another file, one could redirect the output of man:sort[1] by mixing "
"the direction:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1742
+#: documentation/content/en/books/handbook/basics/_index.adoc:1722
#, no-wrap
msgid "% sort < directory_listing.txt > sorted.txt\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1750
+#: documentation/content/en/books/handbook/basics/_index.adoc:1730
msgid ""
"In all of the previous examples, the commands are performing redirection "
"using file descriptors. Every UNIX(R) system has file descriptors, which "
"include standard input (stdin), standard output (stdout), and standard error "
"(stderr). Each one has a purpose, where input could be a keyboard or a "
"mouse, something that provides input. Output could be a screen or paper in "
"a printer. And error would be anything that is used for diagnostic or error "
"messages. All three are considered I/O based file descriptors and sometimes "
"considered streams."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1753
+#: documentation/content/en/books/handbook/basics/_index.adoc:1733
msgid ""
"Through the use of these descriptors, the shell allows output and input to "
"be passed around through various commands and redirected to or from a file. "
"Another method of redirection is the pipe operator."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1756
+#: documentation/content/en/books/handbook/basics/_index.adoc:1736
msgid ""
"The UNIX(R) pipe operator, \"|\" allows the output of one command to be "
"directly passed or directed to another program. Basically, a pipe allows "
"the standard output of a command to be passed as standard input to another "
"command, for example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1760
+#: documentation/content/en/books/handbook/basics/_index.adoc:1740
#, no-wrap
msgid "% cat directory_listing.txt | sort | less\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1764
+#: documentation/content/en/books/handbook/basics/_index.adoc:1744
msgid ""
-"In that example, the contents of [.filename]#directory_listing.txt# will be "
-"sorted and the output passed to man:less[1]. This allows the user to scroll "
-"through the output at their own pace and prevent it from scrolling off the "
-"screen."
+"In that example, the contents of `directory_listing.txt` will be sorted and "
+"the output passed to man:less[1]. This allows the user to scroll through "
+"the output at their own pace and prevent it from scrolling off the screen."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1766
+#: documentation/content/en/books/handbook/basics/_index.adoc:1746
#, no-wrap
msgid "Text Editors"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1770
+#: documentation/content/en/books/handbook/basics/_index.adoc:1750
msgid ""
"Most FreeBSD configuration is done by editing text files, so it is a good "
"idea to become familiar with a text editor. FreeBSD comes with a few as "
"part of the base system, and many more are available in the Ports Collection."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1777
+#: documentation/content/en/books/handbook/basics/_index.adoc:1757
msgid ""
"A simple editor to learn is man:ee[1], which stands for easy editor. To "
"start this editor, type `ee _filename_` where _filename_ is the name of the "
"file to be edited. Once inside the editor, all of the commands for "
"manipulating the editor's functions are listed at the top of the display. "
"The caret (`^`) represents kbd:[Ctrl], so `^e` expands to kbd:[Ctrl+e]. To "
"leave man:ee[1], press kbd:[Esc], then choose the \"leave editor\" option "
"from the main menu. The editor will prompt to save any changes if the file "
"has been modified."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1782
+#: documentation/content/en/books/handbook/basics/_index.adoc:1762
msgid ""
"FreeBSD also comes with more powerful text editors, such as man:vi[1], as "
"part of the base system. Other editors, like package:editors/emacs[] and "
"package:editors/vim[], are part of the FreeBSD Ports Collection. These "
"editors offer more functionality at the expense of being more complicated to "
"learn. Learning a more powerful editor such as vim or Emacs can save more "
"time in the long run."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1785
+#: documentation/content/en/books/handbook/basics/_index.adoc:1765
msgid ""
"Many applications which modify files or require typed input will "
"automatically open a text editor. To change the default editor, set the "
"`EDITOR` environment variable as described in <<shells>>."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1787
+#: documentation/content/en/books/handbook/basics/_index.adoc:1767
#, no-wrap
msgid "Devices and Device Nodes"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1792
+#: documentation/content/en/books/handbook/basics/_index.adoc:1772
msgid ""
"A device is a term used mostly for hardware-related activities in a system, "
"including disks, printers, graphics cards, and keyboards. When FreeBSD "
"boots, the majority of the boot messages refer to devices being detected. A "
-"copy of the boot messages are saved to [.filename]#/var/run/dmesg.boot#."
+"copy of the boot messages is saved to `/var/run/dmesg.boot`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1795
+#: documentation/content/en/books/handbook/basics/_index.adoc:1775
msgid ""
-"Each device has a device name and number. For example, [.filename]#ada0# is "
-"the first SATA hard drive, while [.filename]#kbd0# represents the keyboard."
+"Each device has a device name and number. For example, `ada0` is the first "
+"SATA hard drive, while `kbd0` represents the keyboard."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1797
+#: documentation/content/en/books/handbook/basics/_index.adoc:1777
msgid ""
"Most devices in FreeBSD must be accessed through special files called device "
-"nodes, which are located in [.filename]#/dev#."
+"nodes, which are located in `/dev`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/basics/_index.adoc:1799
+#: documentation/content/en/books/handbook/basics/_index.adoc:1779
#, no-wrap
msgid "Manual Pages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1804
+#: documentation/content/en/books/handbook/basics/_index.adoc:1784
msgid ""
"The most comprehensive documentation on FreeBSD is in the form of manual "
"pages. Nearly every program on the system comes with a short reference "
"manual explaining the basic operation and available arguments. These "
"manuals can be viewed using `man`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1808
+#: documentation/content/en/books/handbook/basics/_index.adoc:1788
#, no-wrap
msgid "% man command\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1812
+#: documentation/content/en/books/handbook/basics/_index.adoc:1792
msgid ""
"where _command_ is the name of the command to learn about. For example, to "
"learn more about man:ls[1], type:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1816
+#: documentation/content/en/books/handbook/basics/_index.adoc:1796
#, no-wrap
msgid "% man ls\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1820
+#: documentation/content/en/books/handbook/basics/_index.adoc:1800
msgid ""
"Manual pages are divided into sections which represent the type of topic. "
"In FreeBSD, the following sections are available:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1822
+#: documentation/content/en/books/handbook/basics/_index.adoc:1802
msgid "User commands."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1823
+#: documentation/content/en/books/handbook/basics/_index.adoc:1803
msgid "System calls and error numbers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1824
+#: documentation/content/en/books/handbook/basics/_index.adoc:1804
msgid "Functions in the C libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1825
+#: documentation/content/en/books/handbook/basics/_index.adoc:1805
msgid "Device drivers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1826
+#: documentation/content/en/books/handbook/basics/_index.adoc:1806
msgid "File formats."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1827
+#: documentation/content/en/books/handbook/basics/_index.adoc:1807
msgid "Games and other diversions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1828
+#: documentation/content/en/books/handbook/basics/_index.adoc:1808
msgid "Miscellaneous information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1829
+#: documentation/content/en/books/handbook/basics/_index.adoc:1809
msgid "System maintenance and operation commands."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1830
+#: documentation/content/en/books/handbook/basics/_index.adoc:1810
msgid "System kernel interfaces."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1834
+#: documentation/content/en/books/handbook/basics/_index.adoc:1814
msgid ""
"In some cases, the same topic may appear in more than one section of the "
"online manual. For example, there is a `chmod` user command and a `chmod()` "
"system call. To tell man:man[1] which section to display, specify the "
"section number:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1838
+#: documentation/content/en/books/handbook/basics/_index.adoc:1818
#, no-wrap
msgid "% man 1 chmod\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1842
+#: documentation/content/en/books/handbook/basics/_index.adoc:1822
msgid ""
"This will display the manual page for the user command man:chmod[1]. "
"References to a particular section of the online manual are traditionally "
"placed in parenthesis in written documentation, so man:chmod[1] refers to "
"the user command and man:chmod[2] refers to the system call."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1844
+#: documentation/content/en/books/handbook/basics/_index.adoc:1824
msgid ""
"If the name of the manual page is unknown, use `man -k` to search for "
"keywords in the manual page descriptions:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1848
+#: documentation/content/en/books/handbook/basics/_index.adoc:1828
#, no-wrap
msgid "% man -k mail\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1852
+#: documentation/content/en/books/handbook/basics/_index.adoc:1832
msgid ""
"This command displays a list of commands that have the keyword \"mail\" in "
"their descriptions. This is equivalent to using man:apropos[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1854
-msgid ""
-"To read the descriptions for all of the commands in [.filename]#/usr/sbin#, "
-"type:"
+#: documentation/content/en/books/handbook/basics/_index.adoc:1834
+msgid "To read the descriptions for all of the commands in `/usr/sbin`, type:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1859
+#: documentation/content/en/books/handbook/basics/_index.adoc:1839
#, no-wrap
msgid ""
"% cd /usr/sbin\n"
"% man -f * | more\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1862
+#: documentation/content/en/books/handbook/basics/_index.adoc:1842
msgid "or"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1867
+#: documentation/content/en/books/handbook/basics/_index.adoc:1847
#, no-wrap
msgid ""
"% cd /usr/sbin\n"
"% whatis * |more\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/basics/_index.adoc:1870
+#: documentation/content/en/books/handbook/basics/_index.adoc:1850
#, no-wrap
msgid "GNU Info Files"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1875
+#: documentation/content/en/books/handbook/basics/_index.adoc:1855
msgid ""
"FreeBSD includes several applications and utilities produced by the Free "
"Software Foundation (FSF). In addition to manual pages, these programs may "
"include hypertext documents called `info` files. These can be viewed using "
"man:info[1] or, if package:editors/emacs[] is installed, the info mode of "
"emacs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1877
+#: documentation/content/en/books/handbook/basics/_index.adoc:1857
msgid "To use man:info[1], type:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/basics/_index.adoc:1881
+#: documentation/content/en/books/handbook/basics/_index.adoc:1861
#, no-wrap
msgid "% info\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/basics/_index.adoc:1884
+#: documentation/content/en/books/handbook/basics/_index.adoc:1864
msgid ""
"For a brief introduction, type `h`. For a quick command reference, type `?`."
msgstr ""
diff --git a/documentation/content/en/books/handbook/bibliography/_index.po b/documentation/content/en/books/handbook/bibliography/_index.po
index 5d7ba4a0fc..3fff4cc88d 100644
--- a/documentation/content/en/books/handbook/bibliography/_index.po
+++ b/documentation/content/en/books/handbook/bibliography/_index.po
@@ -1,680 +1,243 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/bibliography/_index.adoc:1
#, no-wrap
msgid "FreeBSD Handbook Bibliography"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/bibliography/_index.adoc:1
#, no-wrap
msgid "Part V. Appendices"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/bibliography/_index.adoc:1
#, no-wrap
msgid "Appendix B. Bibliography"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/bibliography/_index.adoc:16
#, no-wrap
msgid "Bibliography"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:55
msgid ""
"While manual pages provide a definitive reference for individual pieces of "
"the FreeBSD operating system, they seldom illustrate how to put the pieces "
"together to make the whole operating system run smoothly. For this, there "
"is no substitute for a good book or users' manual on UNIX(R) system "
"administration."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/bibliography/_index.adoc:57
#, no-wrap
-msgid "Books Specific to FreeBSD"
+msgid "FreeBSD Bibliography"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:60
-msgid "International books:"
+#, no-wrap
+msgid "*Absolute FreeBSD: The Complete Guide To FreeBSD*, Third Edition, published by link:https://nostarch.com/absfreebsd3[No Starch Press], 2018. ISBN: 978-1593278922\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:61
+#, no-wrap
+msgid "*FreeBSD Mastery: Storage Essentials*, published by link:https://www.tiltedwindmillpress.com/product/freebsd-mastery-storage-essentials/[Tilted Windmill Press], 2014. ISBN: 978-1642350098\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:62
-msgid ""
-"http://jdli.tw.FreeBSD.org/publication/book/freebsd2/index.htm[Using "
-"FreeBSD] (in Traditional Chinese), published by http://www.drmaster.com.tw/"
-"[Drmaster], 1997. ISBN 9-578-39435-7."
+#, no-wrap
+msgid "*FreeBSD Mastery: Specialty Filesystems*, published by link:https://www.tiltedwindmillpress.com/product/fmspf/[Tilted Windmill Press], 2015. ISBN: 978-1642350111\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:63
-msgid ""
-"FreeBSD Unleashed (Simplified Chinese translation), published by http://www."
-"hzbook.com/[China Machine Press]. ISBN 7-111-10201-0."
+#, no-wrap
+msgid "*FreeBSD Mastery: ZFS*, published by link:https://www.tiltedwindmillpress.com/product/fmzfs/[Tilted Windmill Press], 2015. ISBN: 978-1642350005\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:64
-msgid ""
-"FreeBSD From Scratch Second Edition (in Simplified Chinese), published by "
-"China Machine Press. ISBN 7-111-10286-X."
+#, no-wrap
+msgid "*FreeBSD Mastery: Advanced ZFS*, published by link:https://www.tiltedwindmillpress.com/product/fmaz/[Tilted Windmill Press], 2016. ISBN: 978-0692688687\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:65
-msgid ""
-"FreeBSD Handbook Second Edition (Simplified Chinese translation), published "
-"by http://www.ptpress.com.cn/[Posts & Telecom Press]. ISBN 7-115-10541-3."
+#, no-wrap
+msgid "*FreeBSD Mastery: Jails*, published by link:https://www.tiltedwindmillpress.com/product/fmjail/[Tilted Windmill Press], 2019. ISBN: 978-1642350241\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:66
-msgid ""
-"FreeBSD & Windows (in Simplified Chinese), published by http://www.tdpress."
-"com/[China Railway Publishing House]. ISBN 7-113-03845-X"
+#, no-wrap
+msgid "*FreeBSD Device Drivers: A Guide for the Intrepid*, published by link:https://nostarch.com/bsddrivers.htm[No Starch Press], 2012. ISBN: 978-1593272043\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bibliography/_index.adoc:67
-msgid ""
-"FreeBSD Internet Services HOWTO (in Simplified Chinese), published by China "
-"Railway Publishing House. ISBN 7-113-03423-3"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:68
-msgid ""
-"FreeBSD (in Japanese), published by CUTT. ISBN 4-906391-22-2 C3055 P2400E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:69
-msgid ""
-"http://www.shoeisha.com/book/Detail.asp?bid=650[Complete Introduction to "
-"FreeBSD] (in Japanese), published by http://www.shoeisha.co.jp/[Shoeisha "
-"Co., Ltd]. ISBN 4-88135-473-6 P3600E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:70
-msgid ""
-"http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html[Personal UNIX "
-"Starter Kit FreeBSD] (in Japanese), published by http://www.ascii.co.jp/"
-"[ASCII]. ISBN 4-7561-1733-3 P3000E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:71
-msgid ""
-"FreeBSD Handbook (Japanese translation), published by http://www.ascii.co.jp/"
-"[ASCII]. ISBN 4-7561-1580-2 P3800E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:72
-msgid ""
-"FreeBSD mit Methode (in German), published by http://www.cul.de[Computer und "
-"Literatur Verlag]/Vertrieb Hanser, 1998. ISBN 3-932311-31-0."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:73
-msgid ""
-"http://www.mitp.de/vmi/mitp/detail/pWert/1343/[FreeBSD de Luxe] (in German), "
-"published by http://www.mitp.de[Verlag Modere Industrie], 2003. ISBN "
-"3-8266-1343-0."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:74
-msgid ""
-"http://www.pc.mycom.co.jp/FreeBSD/install-manual.html[FreeBSD Install and "
-"Utilization Manual] (in Japanese), published by http://www.pc.mycom.co.jp/"
-"[Mainichi Communications Inc.], 1998. ISBN 4-8399-0112-0."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:75
-msgid ""
-"Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo _http://maxwell."
-"itb.ac.id/[Building Internet Server with FreeBSD]_ (in Indonesia Language), "
-"published by http://www.elexmedia.co.id/[Elex Media Komputindo]."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:76
-msgid ""
-"Absolute BSD: The Ultimate Guide to FreeBSD (Traditional Chinese "
-"translation), published by http://www.grandtech.com.tw/[GrandTech Press], "
-"2003. ISBN 986-7944-92-5."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:77
-msgid ""
-"http://www.twbsd.org/cht/book/[The FreeBSD 6.0 Book] (in Traditional "
-"Chinese), published by Drmaster, 2006. ISBN 9-575-27878-X."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:79
-msgid "English language books:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:81
-msgid ""
-"Absolute FreeBSD: The Complete Guide To FreeBSD, Third Edition, published by "
-"http://www.nostarch.com/[No Starch Press], 2018. ISBN: 9781593278922"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:82
-msgid ""
-"The Complete FreeBSD, published by http://www.oreilly.com/[O'Reilly], 2003. "
-"ISBN: 0596005164"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:83
-msgid ""
-"http://www.freebsdmall.com/cgi-bin/fm/bsdcomp[The Complete FreeBSD], "
-"published by http://www.oreilly.com/[O'Reilly], 2003. ISBN: 0596005164"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:84
-msgid ""
-"http://www.freebsd-corp-net-guide.com/[The FreeBSD Corporate Networker's "
-"Guide], published by http://www.awl.com/aw/[Addison-Wesley], 2000. ISBN: "
-"0201704811"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:85
-msgid ""
-"FreeBSD: An Open-Source Operating System for Your Personal Computer, "
-"published by The Bit Tree Press, 2001. ISBN: 0971204500"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:86
-msgid ""
-"Teach Yourself FreeBSD in 24 Hours, published by http://www.samspublishing."
-"com/[Sams], 2002. ISBN: 0672324245"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:87
-msgid ""
-"FreeBSD 6 Unleashed, published by http://www.samspublishing.com/[Sams], "
-"2006. ISBN: 0672328755"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:88
-msgid ""
-"FreeBSD: The Complete Reference, published by http://books.mcgraw-hill."
-"com[McGrawHill], 2003. ISBN: 0072224096"
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:90
#, no-wrap
-msgid "Users' Guides"
+msgid "*The Design And Implementation Of The Freebsd Operating System*, Second Edition, published by link:https://www.pearson.com/store/p/design-and-implementation-of-the-freebsd-operating-system-the/P200000000463/9780321968975[Pearson Education, Inc.], 2014. ISBN: 978-0321968975\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:93
-msgid ""
-"Ohio State University has written a http://www.cs.duke.edu/csl/docs/"
-"unix_course/[UNIX Introductory Course] which is available online in HTML and "
-"PostScript format."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:95
-msgid ""
-"An Italian https://www.FreeBSD.org/doc/it_IT.ISO8859-15/books/unix-"
-"introduction/[translation] of this document is available as part of the "
-"FreeBSD Italian Documentation Project."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:96
-msgid ""
-"http://www.jp.FreeBSD.org/[Jpman Project, Japan FreeBSD Users Group]. "
-"FreeBSD User's Reference Manual (Japanese translation). http://www.pc.mycom."
-"co.jp/[Mainichi Communications Inc.], 1998. ISBN4-8399-0088-4 P3800E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:97
-msgid ""
-"http://www.ed.ac.uk/[Edinburgh University] has written an http://www.ed.ac."
-"uk/information-services/help-consultancy/is-skills/catalogue/program-op-sys-"
-"catalogue/unix1[Online Guide] for newcomers to the UNIX environment."
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:99
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:68
#, no-wrap
-msgid "Administrators' Guides"
+msgid "*UNIX and Linux System Administration Handbook*, Fifth Edition, published by link:https://www.pearson.com/en-us/subject-catalog/p/unix-and-linux-system-administration-handbook/P200000000513/9780137460359[Pearson Education, Inc.], 2017. ISBN: 978-0134277554\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:102
-msgid ""
-"http://www.jp.FreeBSD.org/[Jpman Project, Japan FreeBSD Users Group]. "
-"FreeBSD System Administrator's Manual (Japanese translation). http://www.pc."
-"mycom.co.jp/[Mainichi Communications Inc.], 1998. ISBN4-8399-0109-0 P3300E."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:103
-msgid ""
-"Dreyfus, Emmanuel. http://www.eyrolles.com/Informatique/Livre/9782212114638/"
-"[Cahiers de l'Admin: BSD] 2nd Ed. (in French), Eyrolles, 2004. ISBN "
-"2-212-11463-X"
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:105
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:69
#, no-wrap
-msgid "Programmers' Guides"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:108
-msgid ""
-"Computer Systems Research Group, UC Berkeley. _4.4BSD Programmer's Reference "
-"Manual_. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:109
-msgid ""
-"Computer Systems Research Group, UC Berkeley. _4.4BSD Programmer's "
-"Supplementary Documents_. O'Reilly & Associates, Inc., 1994. ISBN "
-"1-56592-079-1"
+msgid "*Designing BSD Rootkits*, published by link:https://nostarch.com/rootkits.htm[No Starch Press], 2007. ISBN: 978-1593271428\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:110
-msgid ""
-"Harbison, Samuel P. and Steele, Guy L. Jr. _C: A Reference Manual_. 4th Ed. "
-"Prentice Hall, 1995. ISBN 0-13-326224-3"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:111
-msgid ""
-"Kernighan, Brian and Dennis M. Ritchie. _The C Programming Language_. 2nd "
-"Ed. PTR Prentice Hall, 1988. ISBN 0-13-110362-8"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:112
-msgid ""
-"Lehey, Greg. _Porting UNIX Software_. O'Reilly & Associates, Inc., 1995. "
-"ISBN 1-56592-126-7"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:113
-msgid ""
-"Plauger, P. J. _The Standard C Library_. Prentice Hall, 1992. ISBN "
-"0-13-131509-9"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:114
-msgid ""
-"Spinellis, Diomidis. http://www.spinellis.gr/codereading/[Code Reading: The "
-"Open Source Perspective]. Addison-Wesley, 2003. ISBN 0-201-79940-5"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:115
-msgid ""
-"Spinellis, Diomidis. http://www.spinellis.gr/codequality/[Code Quality: The "
-"Open Source Perspective]. Addison-Wesley, 2006. ISBN 0-321-16607-8"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:116
-msgid ""
-"Stevens, W. Richard and Stephen A. Rago. _Advanced Programming in the UNIX "
-"Environment_. 2nd Ed. Reading, Mass. : Addison-Wesley, 2005. ISBN "
-"0-201-43307-9"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:117
-msgid ""
-"Stevens, W. Richard. _UNIX Network Programming_. 2nd Ed, PTR Prentice Hall, "
-"1998. ISBN 0-13-490012-X"
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:119
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:70
#, no-wrap
-msgid "Operating System Internals"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:122
-msgid ""
-"Andleigh, Prabhat K. _UNIX System Architecture_. Prentice-Hall, Inc., 1990. "
-"ISBN 0-13-949843-5"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:123
-msgid ""
-"Jolitz, William. \"Porting UNIX to the 386\". _Dr. Dobb's Journal_. January "
-"1991-July 1992."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:124
-msgid ""
-"Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John "
-"Quarterman _The Design and Implementation of the 4.3BSD UNIX Operating "
-"System_. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:125
-msgid ""
-"Leffler, Samuel J., Marshall Kirk McKusick, _The Design and Implementation "
-"of the 4.3BSD UNIX Operating System: Answer Book_. Reading, Mass. : Addison-"
-"Wesley, 1991. ISBN 0-201-54629-9"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:126
-msgid ""
-"McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John "
-"Quarterman. _The Design and Implementation of the 4.4BSD Operating System_. "
-"Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:128
-msgid ""
-"(Chapter 2 of this book is available extref:{design-44bsd}[online] as part "
-"of the FreeBSD Documentation Project.)"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:129
-msgid ""
-"Marshall Kirk McKusick, George V. Neville-Neil _The Design and "
-"Implementation of the FreeBSD Operating System_. Boston, Mass. : Addison-"
-"Wesley, 2004. ISBN 0-201-70245-2"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:130
-msgid ""
-"Marshall Kirk McKusick, George V. Neville-Neil, Robert N. M. Watson _The "
-"Design and Implementation of the FreeBSD Operating System, 2nd Ed._. "
-"Westford, Mass. : Pearson Education, Inc., 2014. ISBN 0-321-96897-2"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:131
-msgid ""
-"Stevens, W. Richard. _TCP/IP Illustrated, Volume 1: The Protocols_. Reading, "
-"Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:132
-msgid ""
-"Schimmel, Curt. _Unix Systems for Modern Architectures_. Reading, Mass. : "
-"Addison-Wesley, 1994. ISBN 0-201-63338-8"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:133
-msgid ""
-"Stevens, W. Richard. _TCP/IP Illustrated, Volume 3: TCP for Transactions, "
-"HTTP, NNTP and the UNIX Domain Protocols_. Reading, Mass. : Addison-Wesley, "
-"1996. ISBN 0-201-63495-3"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:134
-msgid ""
-"Vahalia, Uresh. _UNIX Internals -- The New Frontiers_. Prentice Hall, 1996. "
-"ISBN 0-13-101908-2"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:135
-msgid ""
-"Wright, Gary R. and W. Richard Stevens. _TCP/IP Illustrated, Volume 2: The "
-"Implementation_. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X"
+msgid "*FreeBSD Jails using VNETs*, published in link:https://rderik.gumroad.com/l/uwOLZ[gumroad]\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:137
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:72
#, no-wrap
msgid "Security Reference"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:140
-msgid ""
-"Cheswick, William R. and Steven M. Bellovin. _Firewalls and Internet "
-"Security: Repelling the Wily Hacker_. Reading, Mass. : Addison-Wesley, 1995. "
-"ISBN 0-201-63357-4"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:141
-msgid ""
-"Garfinkel, Simson. _PGP Pretty Good Privacy_ O'Reilly & Associates, Inc., "
-"1995. ISBN 1-56592-098-8"
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:143
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:75
#, no-wrap
-msgid "Hardware Reference"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:146
-msgid ""
-"Anderson, Don and Tom Shanley. _Pentium Processor System Architecture_. 2nd "
-"Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5"
+msgid "*The Book of PF: A No-Nonsense Guide to the OpenBSD Firewall*, Third Edition, published by link:https://nostarch.com/pf3[No Starch Press], 2014. ISBN: 978-1593275891\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:147
-msgid ""
-"Ferraro, Richard F. _Programmer's Guide to the EGA, VGA, and Super VGA "
-"Cards_. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:148
-msgid ""
-"Intel Corporation publishes documentation on their CPUs, chipsets and "
-"standards on their http://developer.intel.com/[developer web site], usually "
-"as PDF files."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:149
-msgid ""
-"Shanley, Tom. _80486 System Architecture_. 3rd Ed. Reading, Mass. : Addison-"
-"Wesley, 1995. ISBN 0-201-40994-1"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:150
-msgid ""
-"Shanley, Tom. _ISA System Architecture_. 3rd Ed. Reading, Mass. : Addison-"
-"Wesley, 1995. ISBN 0-201-40996-8"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:151
-msgid ""
-"Shanley, Tom. _PCI System Architecture_. 4th Ed. Reading, Mass. : Addison-"
-"Wesley, 1999. ISBN 0-201-30974-2"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:152
-msgid ""
-"Van Gilluwe, Frank. _The Undocumented PC_, 2nd Ed. Reading, Mass: Addison-"
-"Wesley Pub. Co., 1996. ISBN 0-201-47950-8"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:153
-msgid ""
-"Messmer, Hans-Peter. _The Indispensable PC Hardware Book_, 4th Ed. Reading, "
-"Mass : Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4"
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:76
+#, no-wrap
+msgid "*SSH Mastery: OpenSSH, PuTTY, Tunnels, and Keys*, Second Edition, 2018. ISBN: 978-1642350029\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:155
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:78
#, no-wrap
msgid "UNIX(R) History"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:158
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:81
msgid ""
"Lion, John _Lion's Commentary on UNIX, 6th Ed. With Source Code_. ITP Media "
"Group, 1996. ISBN 1573980137"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:159
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:82
msgid ""
"Raymond, Eric S. _The New Hacker's Dictionary, 3rd edition_. MIT Press, "
"1996. ISBN 0-262-68092-0. Also known as the http://www.catb.org/~esr/jargon/"
"html/index.html[Jargon File]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:160
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:83
msgid ""
"Salus, Peter H. _A quarter century of UNIX_. Addison-Wesley Publishing "
"Company, Inc., 1994. ISBN 0-201-54777-5"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:161
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:84
msgid ""
"Simon Garfinkel, Daniel Weise, Steven Strassmann. _The UNIX-HATERS "
"Handbook_. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1. Out of "
"print, but available http://www.simson.net/ref/ugh.pdf[online]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:162
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:85
msgid ""
"Don Libes, Sandy Ressler _Life with UNIX_ - special edition. Prentice-Hall, "
"Inc., 1989. ISBN 0-13-536657-7"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:163
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:86
msgid ""
"_The BSD family tree_. https://cgit.freebsd.org/src/tree/share/misc/bsd-"
"family-tree[https://cgit.freebsd.org/src/tree/share/misc/bsd-family-tree] or "
"link:file://localhost/usr/share/misc/bsd-family-tree[/usr/share/misc/bsd-"
"family-tree] on a FreeBSD machine."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:164
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:87
msgid "_Networked Computer Science Technical Reports Library_."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:165
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:88
msgid ""
"_Old BSD releases from the Computer Systems Research group (CSRG)_. http://"
"www.mckusick.com/csrg/[http://www.mckusick.com/csrg/]: The 4CD set covers "
"all BSD versions from 1BSD to 4.4BSD and 4.4BSD-Lite2 (but not 2.11BSD, "
"unfortunately). The last disk also holds the final sources plus the SCCS "
"files."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:166
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:89
msgid ""
"Kernighan, Brian _Unix: A History and a Memoir_. Kindle Direct Publishing, "
"2020. ISBN 978-169597855-3"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:168
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:91
#, no-wrap
msgid "Periodicals, Journals, and Magazines"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:171
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:94
msgid ""
-"http://www.admin-magazin.de/[Admin Magazin] (in German), published by "
+"https://www.admin-magazin.de/[Admin Magazin] (in German), published by "
"Medialinx AG. ISSN: 2190-1066"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:172
-msgid ""
-"http://www.bsdmag.org/[BSD Magazine], published by Software Press Sp. z o.o. "
-"SK. ISSN: 1898-9144"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:173
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:95
msgid ""
-"http://www.bsdnow.tv/[BSD Now - Video Podcast], published by Jupiter "
+"https://www.bsdnow.tv/[BSD Now - Video Podcast], published by Jupiter "
"Broadcasting LLC"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:174
-msgid "http://bsdtalk.blogspot.com/[BSD Talk Podcast], by Will Backman"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bibliography/_index.adoc:174
+#: documentation/content/en/books/handbook/bibliography/_index.adoc:95
msgid ""
-"http://freebsdjournal.com/[FreeBSD Journal], published by S&W Publishing, "
-"sponsored by The FreeBSD Foundation. ISBN: 978-0-615-88479-0"
+"https://freebsdfoundation.org/our-work/journal/[FreeBSD Journal], published "
+"by S&W Publishing, sponsored by The FreeBSD Foundation. ISBN: "
+"978-0-615-88479-0"
msgstr ""
diff --git a/documentation/content/en/books/handbook/boot/_index.po b/documentation/content/en/books/handbook/boot/_index.po
index 0c1d18be34..a6abe845c6 100644
--- a/documentation/content/en/books/handbook/boot/_index.po
+++ b/documentation/content/en/books/handbook/boot/_index.po
@@ -1,1005 +1,1005 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/boot/_index.adoc:1
#, no-wrap
msgid "An introduction to the FreeBSD Booting Process, demonstrates how to customize the FreeBSD boot process, including everything that happens until the FreeBSD kernel has started, probed for devices, and started init"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/boot/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/boot/_index.adoc:1
#, no-wrap
-msgid "Chapter 13. The FreeBSD Booting Process"
+msgid "Chapter 14. The FreeBSD Booting Process"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/boot/_index.adoc:15
#, no-wrap
msgid "The FreeBSD Booting Process"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/boot/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:57
msgid ""
"The process of starting a computer and loading the operating system is "
"referred to as \"the bootstrap process\", or \"booting\". FreeBSD's boot "
"process provides a great deal of flexibility in customizing what happens "
"when the system starts, including the ability to select from different "
"operating systems installed on the same computer, different versions of the "
"same operating system, or a different installed kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:61
msgid ""
"This chapter details the configuration options that can be set. It "
"demonstrates how to customize the FreeBSD boot process, including everything "
"that happens until the FreeBSD kernel has started, probed for devices, and "
"started man:init[8]. This occurs when the text color of the boot messages "
"changes from bright white to grey."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:63
msgid "After reading this chapter, you will recognize:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:65
msgid "The components of the FreeBSD bootstrap system and how they interact."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:66
msgid ""
"The options that can be passed to the components in the FreeBSD bootstrap in "
"order to control the boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:67
msgid "The basics of setting device hints."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:68
msgid ""
"How to boot into single- and multi-user mode and how to properly shut down a "
"FreeBSD system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:72
msgid ""
"This chapter only describes the boot process for FreeBSD running on x86 and "
"amd64 systems."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/boot/_index.adoc:75
#, no-wrap
msgid "FreeBSD Boot Process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:81
msgid ""
"Turning on a computer and starting the operating system poses an interesting "
"dilemma. By definition, the computer does not know how to do anything until "
"the operating system is started. This includes running programs from the "
"disk. If the computer can not run a program from the disk without the "
"operating system, and the operating system programs are on the disk, how is "
"the operating system started?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:86
msgid ""
"This problem parallels one in the book The Adventures of Baron Munchausen. "
"A character had fallen part way down a manhole, and pulled himself out by "
"grabbing his bootstraps and lifting. In the early days of computing, the "
"term _bootstrap_ was applied to the mechanism used to load the operating "
"system. It has since become shortened to \"booting\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:90
msgid ""
"On x86 hardware, the Basic Input/Output System (BIOS) is responsible for "
"loading the operating system. The BIOS looks on the hard disk for the "
"Master Boot Record (MBR), which must be located in a specific place on the "
"disk. The BIOS has enough knowledge to load and run the MBR, and assumes "
"that the MBR can then carry out the rest of the tasks involved in loading "
"the operating system, possibly with the help of the BIOS."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:97
msgid ""
"FreeBSD provides for booting from both the older MBR standard, and the newer "
"GUID Partition Table (GPT). GPT partitioning is often found on computers "
"with the Unified Extensible Firmware Interface (UEFI). However, FreeBSD can "
"boot from GPT partitions even on machines with only a legacy BIOS with man:"
"gptboot[8]. Work is under way to provide direct UEFI booting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:102
msgid ""
"The code within the MBR is typically referred to as a _boot manager_, "
"especially when it interacts with the user. The boot manager usually has "
"more code in the first track of the disk or within the file system. "
"Examples of boot managers include the standard FreeBSD boot manager boot0, "
"also called Boot Easy, and GNU GRUB, which is used by many Linux(R) "
"distributions."
msgstr ""
#. There is extref:{faq}[a frequently asked question] about GRUB. Beyond the answer there, //
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:107
msgid ""
"Users of GRUB should refer to https://www.gnu.org/software/grub/grub-"
"documentation.html[GNU-provided documentation]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:111
msgid ""
"If only one operating system is installed, the MBR searches for the first "
"bootable (active) slice on the disk, and then runs the code on that slice to "
"load the remainder of the operating system. When multiple operating systems "
"are present, a different boot manager can be installed to display a list of "
"operating systems so the user can select one to boot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:118
msgid ""
"The remainder of the FreeBSD bootstrap system is divided into three stages. "
"The first stage knows just enough to get the computer into a specific state "
"and run the second stage. The second stage can do a little bit more, before "
"running the third stage. The third stage finishes the task of loading the "
"operating system. The work is split into three stages because the MBR puts "
"limits on the size of the programs that can be run at stages one and two. "
"Chaining the tasks together allows FreeBSD to provide a more flexible loader."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:121
msgid ""
"The kernel is then started and begins to probe for devices and initialize "
"them for use. Once the kernel boot process is finished, the kernel passes "
"control to the user process man:init[8], which makes sure the disks are in a "
"usable state, starts the user-level resource configuration which mounts file "
"systems, sets up network cards to communicate on the network, and starts the "
"processes which have been configured to run at startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:123
msgid ""
"This section describes these stages in more detail and demonstrates how to "
"interact with the FreeBSD boot process."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/boot/_index.adoc:125
#, no-wrap
msgid "The Boot Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:129
msgid ""
"The boot manager code in the MBR is sometimes referred to as _stage zero_ of "
"the boot process. By default, FreeBSD uses the boot0 boot manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:133
msgid ""
"The MBR installed by the FreeBSD installer is based on [.filename]#/boot/"
"boot0#. The size and capability of boot0 is restricted to 446 bytes due to "
"the slice table and `0x55AA` identifier at the end of the MBR. If boot0 and "
"multiple operating systems are installed, a message similar to this example "
"will be displayed at boot time:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/boot/_index.adoc:135
#, no-wrap
msgid "[.filename]#boot0# Screenshot"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:143
#, no-wrap
msgid ""
"F1 Win\n"
"F2 FreeBSD\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:145
#, no-wrap
msgid "Default: F2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:151
msgid ""
"Other operating systems will overwrite an existing MBR if they are installed "
"after FreeBSD. If this happens, or to replace the existing MBR with the "
"FreeBSD MBR, use the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:155
#, no-wrap
msgid "# fdisk -B -b /boot/boot0 device\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:159
msgid ""
"where _device_ is the boot disk, such as [.filename]#ad0# for the first IDE "
"disk, [.filename]#ad2# for the first IDE disk on a second IDE controller, or "
"[.filename]#da0# for the first SCSI disk. To create a custom configuration "
"of the MBR, refer to man:boot0cfg[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/boot/_index.adoc:161
#, no-wrap
msgid "Stage One and Stage Two"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:166
msgid ""
"Conceptually, the first and second stages are part of the same program on "
"the same area of the disk. Due to space constraints, they have been split "
"into two, but are always installed together. They are copied from the "
"combined [.filename]#/boot/boot# by the FreeBSD installer or `bsdlabel`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:169
msgid ""
"These two stages are located outside file systems, in the first track of the "
"boot slice, starting with the first sector. This is where boot0, or any "
"other boot manager, expects to find a program to run which will continue the "
"boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:172
msgid ""
"The first stage, [.filename]#boot1#, is very simple, since it can only be "
"512 bytes in size. It knows just enough about the FreeBSD _bsdlabel_, which "
"stores information about the slice, to find and execute [.filename]#boot2#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:177
msgid ""
"Stage two, [.filename]#boot2#, is slightly more sophisticated, and "
"understands the FreeBSD file system enough to find files. It can provide a "
"simple interface to choose the kernel or loader to run. It runs loader, "
"which is much more sophisticated and provides a boot configuration file. If "
"the boot process is interrupted at stage two, the following interactive "
"screen is displayed:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/boot/_index.adoc:179
#, no-wrap
msgid "[.filename]#boot2# Screenshot"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:188
#, no-wrap
msgid ""
">> FreeBSD/i386 BOOT\n"
"Default: 0:ad(0,a)/boot/loader\n"
"boot:\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:193
msgid ""
"To replace the installed [.filename]#boot1# and [.filename]#boot2#, use "
"`bsdlabel`, where _diskslice_ is the disk and slice to boot from, such as [."
"filename]#ad0s1# for the first slice on the first IDE disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:197
#, no-wrap
msgid "# bsdlabel -B diskslice\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:203
msgid ""
"If just the disk name is used, such as [.filename]#ad0#, `bsdlabel` will "
"create the disk in \"dangerously dedicated mode\", without slices. This is "
"probably not the desired action, so double check the _diskslice_ before "
"pressing kbd:[Return]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/boot/_index.adoc:206
#, no-wrap
msgid "Stage Three"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:210
msgid ""
"The loader is the final stage of the three-stage bootstrap process. It is "
"located on the file system, usually as [.filename]#/boot/loader#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:212
msgid ""
"The loader is intended as an interactive method for configuration, using a "
"built-in command set, backed up by a more powerful interpreter which has a "
"more complex command set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:215
msgid ""
"During initialization, loader will probe for a console and for disks, and "
"figure out which disk it is booting from. It will set variables "
"accordingly, and an interpreter is started where user commands can be passed "
"from a script or interactively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:218
msgid ""
"The loader will then read [.filename]#/boot/loader.rc#, which by default "
"reads in [.filename]#/boot/defaults/loader.conf# which sets reasonable "
"defaults for variables and reads [.filename]#/boot/loader.conf# for local "
"changes to those variables. [.filename]#loader.rc# then acts on these "
"variables, loading whichever modules and kernel are selected."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:223
msgid ""
"Finally, by default, loader issues a 10 second wait for key presses, and "
"boots the kernel if it is not interrupted. If interrupted, the user is "
"presented with a prompt which understands the command set, where the user "
"may adjust variables, unload all modules, load modules, and then finally "
"boot or reboot. <<boot-loader-commands>> lists the most commonly used "
"loader commands. For a complete discussion of all available commands, refer "
"to man:loader[8]."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/boot/_index.adoc:225
#, no-wrap
msgid "Loader Built-In Commands"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:229
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:231
#: documentation/content/en/books/handbook/boot/_index.adoc:320
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:232
#, no-wrap
msgid "autoboot _seconds_"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:234
#, no-wrap
msgid "Proceeds to boot the kernel if not interrupted within the time span given, in seconds. It displays a countdown, and the default time span is 10 seconds."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:235
#, no-wrap
msgid "boot [`-options`] [`kernelname`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:237
#, no-wrap
msgid "Immediately proceeds to boot the kernel, with any specified options or kernel name. Providing a kernel name on the command-line is only applicable after an `unload` has been issued. Otherwise, the previously-loaded kernel will be used. If _kernelname_ is not qualified, it will be searched under _/boot/kernel_ and _/boot/modules_."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:238
#, no-wrap
msgid "boot-conf"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:240
#, no-wrap
msgid "Goes through the same automatic configuration of modules based on specified variables, most commonly `kernel`. This only makes sense if `unload` is used first, before changing some variables."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:241
#, no-wrap
msgid "help [`_topic_`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:243
#, no-wrap
msgid "Shows help messages read from [.filename]#/boot/loader.help#. If the topic given is `index`, the list of available topics is displayed."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:244
#, no-wrap
msgid "include `_filename_` ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:246
#, no-wrap
msgid "Reads the specified file and interprets it line by line. An error immediately stops the `include`."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:247
#, no-wrap
msgid "load [-t ``_type_``] `_filename_`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:249
#, no-wrap
msgid "Loads the kernel, kernel module, or file of the type given, with the specified filename. Any arguments after _filename_ are passed to the file. If _filename_ is not qualified, it will be searched under _/boot/kernel_ and _/boot/modules_."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:250
#, no-wrap
msgid "ls [-l] [``_path_``]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:252
#, no-wrap
msgid "Displays a listing of files in the given path, or the root directory, if the path is not specified. If `-l` is specified, file sizes will also be shown."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:253
#, no-wrap
msgid "lsdev [`-v`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:255
#, no-wrap
msgid "Lists all of the devices from which it may be possible to load modules. If `-v` is specified, more details are printed."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:256
#, no-wrap
msgid "lsmod [`-v`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:258
#, no-wrap
msgid "Displays loaded modules. If `-v` is specified, more details are shown."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:259
#, no-wrap
msgid "more `_filename_`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:261
#, no-wrap
msgid "Displays the files specified, with a pause at each `LINES` displayed."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:262
#, no-wrap
msgid "reboot"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:264
#, no-wrap
msgid "Immediately reboots the system."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:265
#, no-wrap
msgid "set `_variable_`, set `_variable=value_`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:267
#, no-wrap
msgid "Sets the specified environment variables."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:268
#, no-wrap
msgid "unload"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:269
#, no-wrap
msgid "Removes all loaded modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:273
msgid ""
"Here are some practical examples of loader usage. To boot the usual kernel "
"in single-user mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:277
#, no-wrap
msgid " boot -s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:280
msgid ""
"To unload the usual kernel and modules and then load the previous or "
"another, specified kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:285
#, no-wrap
msgid ""
" unload\n"
" load /path/to/kernelfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:288
msgid ""
"Use the qualified [.filename]#/boot/GENERIC/kernel# to refer to the default "
"kernel that comes with an installation, or [.filename]#/boot/kernel.old/"
"kernel#, to refer to the previously installed kernel before a system upgrade "
"or before configuring a custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:291
msgid ""
"Use the following to load the usual modules with another kernel. Note that "
"in this case it is not necessary the qualified name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:297
#, no-wrap
msgid ""
"unload\n"
"set kernel=\"mykernel\"\n"
"boot-conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:300
msgid "To load an automated kernel configuration script:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:304
#, no-wrap
msgid " load -t userconfig_script /boot/kernel.conf\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/boot/_index.adoc:307
#, no-wrap
msgid "Last Stage"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:312
msgid ""
"Once the kernel is loaded by either loader or by boot2, which bypasses "
"loader, it examines any boot flags and adjusts its behavior as necessary. "
"<<boot-kernel>> lists the commonly used boot flags. Refer to man:boot[8] "
"for more information on the other boot flags."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/boot/_index.adoc:314
#, no-wrap
msgid "Kernel Interaction During Boot"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:318
#, no-wrap
msgid "Option"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:321
#, no-wrap
msgid "`-a`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:323
#, no-wrap
msgid "During kernel initialization, ask for the device to mount as the root file system."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:324
#, no-wrap
msgid "`-C`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:326
#, no-wrap
msgid "Boot the root file system from a CDROM."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:327
#, no-wrap
msgid "`-s`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:329
#, no-wrap
msgid "Boot into single-user mode."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:330
#, no-wrap
msgid "`-v`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/boot/_index.adoc:331
#, no-wrap
msgid "Be more verbose during kernel startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:335
msgid ""
"Once the kernel has finished booting, it passes control to the user process "
"man:init[8], which is located at [.filename]#/sbin/init#, or the program "
"path specified in the `init_path` variable in `loader`. This is the last "
"stage of the boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:339
msgid ""
"The boot sequence makes sure that the file systems available on the system "
"are consistent. If a UFS file system is not, and `fsck` cannot fix the "
"inconsistencies, init drops the system into single-user mode so that the "
"system administrator can resolve the problem directly. Otherwise, the "
"system boots into multi-user mode."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/boot/_index.adoc:341
#, no-wrap
msgid "Single-User Mode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:346
msgid ""
"A user can specify this mode by booting with `-s` or by setting the "
"`boot_single` variable in loader. It can also be reached by running "
"`shutdown now` from multi-user mode. Single-user mode begins with this "
"message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:350
#, no-wrap
msgid "Enter full pathname of shell or RETURN for /bin/sh:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:354
msgid ""
"If the user presses kbd:[Enter], the system will enter the default Bourne "
"shell. To specify a different shell, input the full path to the shell."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:359
msgid ""
"Single-user mode is usually used to repair a system that will not boot due "
"to an inconsistent file system or an error in a boot configuration file. It "
"can also be used to reset the `root` password when it is unknown. These "
"actions are possible as the single-user mode prompt gives full, local access "
"to the system and its configuration files. There is no networking in this "
"mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:362
msgid ""
"While single-user mode is useful for repairing a system, it poses a security "
"risk unless the system is in a physically secure location. By default, any "
"user who can gain physical access to a system will have full control of that "
"system after booting into single-user mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:365
msgid ""
"If the system `console` is changed to `insecure` in [.filename]#/etc/ttys#, "
"the system will first prompt for the `root` password before initiating "
"single-user mode. This adds a measure of security while removing the "
"ability to reset the `root` password when it is unknown."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/boot/_index.adoc:367
#, no-wrap
msgid "Configuring an Insecure Console in [.filename]#/etc/ttys#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:377
#, no-wrap
msgid ""
"# name getty type status comments\n"
"#\n"
"# If console is marked \"insecure\", then init will ask for the root password\n"
"# when going to single-user mode.\n"
"console none unknown off insecure\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:382
msgid ""
"An `insecure` console means that physical security to the console is "
"considered to be insecure, so only someone who knows the `root` password may "
"use single-user mode."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/boot/_index.adoc:384
#, no-wrap
msgid "Multi-User Mode"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:387
msgid ""
"If init finds the file systems to be in order, or once the user has finished "
"their commands in single-user mode and has typed `exit` to leave single-user "
"mode, the system enters multi-user mode, in which it starts the resource "
"configuration of the system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:391
msgid ""
"The resource configuration system reads in configuration defaults from [."
"filename]#/etc/defaults/rc.conf# and system-specific details from [."
"filename]#/etc/rc.conf#. It then proceeds to mount the system file systems "
"listed in [.filename]#/etc/fstab#. It starts up networking services, "
"miscellaneous system daemons, then the startup scripts of locally installed "
"packages."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:393
msgid ""
"To learn more about the resource configuration system, refer to man:rc[8] "
"and examine the scripts located in [.filename]#/etc/rc.d#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/boot/_index.adoc:395
#, no-wrap
msgid "Device Hints"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:400
msgid ""
"During initial system startup, the boot man:loader[8] reads man:device."
"hints[5]. This file stores kernel boot information known as variables, "
"sometimes referred to as \"device hints\". These \"device hints\" are used "
"by device drivers for device configuration."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:405
msgid ""
"Device hints may also be specified at the Stage 3 boot loader prompt, as "
"demonstrated in <<boot-loader>>. Variables can be added using `set`, "
"removed with `unset`, and viewed `show`. Variables set in [.filename]#/boot/"
"device.hints# can also be overridden. Device hints entered at the boot "
"loader are not permanent and will not be applied on the next reboot."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:407
msgid ""
"Once the system is booted, man:kenv[1] can be used to dump all of the "
"variables."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:410
msgid ""
"The syntax for [.filename]#/boot/device.hints# is one variable per line, "
"using the hash \"#\" as comment markers. Lines are constructed as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:414
#, no-wrap
msgid " hint.driver.unit.keyword=\"value\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:417
msgid "The syntax for the Stage 3 boot loader is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/boot/_index.adoc:421
#, no-wrap
msgid " set hint.driver.unit.keyword=value\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:425
msgid ""
"where `driver` is the device driver name, `unit` is the device driver unit "
"number, and `keyword` is the hint keyword. The keyword may consist of the "
"following options:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:427
msgid "`at`: specifies the bus which the device is attached to."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:428
msgid "`port`: specifies the start address of the I/O to be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:429
msgid "`irq`: specifies the interrupt request number to be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:430
msgid "`drq`: specifies the DMA channel number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:431
msgid "`maddr`: specifies the physical memory address occupied by the device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:432
msgid "`flags`: sets various flag bits for the device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:433
msgid "`disabled`: if set to `1` the device is disabled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:436
msgid ""
"Since device drivers may accept or require more hints not listed here, "
"viewing a driver's manual page is recommended. For more information, refer "
"to man:device.hints[5], man:kenv[1], man:loader.conf[5], and man:loader[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/boot/_index.adoc:438
#, no-wrap
msgid "Shutdown Sequence"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:441
msgid ""
"Upon controlled shutdown using man:shutdown[8], man:init[8] will attempt to "
"run the script [.filename]#/etc/rc.shutdown#, and then proceed to send all "
"processes the `TERM` signal, and subsequently the `KILL` signal to any that "
"do not terminate in a timely manner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:447
msgid ""
"To power down a FreeBSD machine on architectures and systems that support "
"power management, use `shutdown -p now` to turn the power off immediately. "
"To reboot a FreeBSD system, use `shutdown -r now`. One must be `root` or a "
"member of `operator` in order to run man:shutdown[8]. One can also use man:"
"halt[8] and man:reboot[8]. Refer to their manual pages and to man:"
"shutdown[8] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/boot/_index.adoc:449
msgid ""
"Modify group membership by referring to crossref:basics[users-"
"synopsis,“Users and Basic Account Management”]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/boot/_index.adoc:453
msgid ""
"Power management requires man:acpi[4] to be loaded as a module or statically "
"compiled into a custom kernel."
msgstr ""
diff --git a/documentation/content/en/books/handbook/bsdinstall/_index.po b/documentation/content/en/books/handbook/bsdinstall/_index.po
index bb99eb2096..b02336aa20 100644
--- a/documentation/content/en/books/handbook/bsdinstall/_index.po
+++ b/documentation/content/en/books/handbook/bsdinstall/_index.po
@@ -1,3577 +1,3722 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1
#, no-wrap
msgid "Guide about how to install FreeBSD, the minimum hardware requirements and supported architectures, how to create the installation media, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1
#, no-wrap
msgid "Chapter 2. Installing FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:15
#, no-wrap
msgid "Installing FreeBSD"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:57
msgid ""
-"There are several different ways of getting FreeBSD to run, depending on the "
-"environment. Those are:"
+"FreeBSD supports different architectures including amd64, ARM(R), RISC-V(R), "
+"and PowerPC(R). Depending on the architecture and platform, different "
+"images can be link:https://www.freebsd.org/where/[downloaded] to install or "
+"directly run FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:59
-msgid ""
-"Virtual Machine images, to download and import on a virtual environment of "
-"choice. These can be downloaded from the https://www.freebsd.org/where/"
-"[Download FreeBSD] page. There are images for KVM (\"qcow2\"), VMWare (\"vmdk"
-"\"), Hyper-V (\"vhd\"), and raw device images that are universally "
-"supported. These are not installation images, but rather the preconfigured "
-"(\"already installed\") instances, ready to run and perform post-"
-"installation tasks."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:60
-msgid ""
-"Virtual Machine images available at Amazon's https://aws.amazon.com/"
-"marketplace/pp/prodview-ukzmy5dzc6nbq[AWS Marketplace], https://"
-"azuremarketplace.microsoft.com/en-US/marketplace/apps/thefreebsdfoundation."
-"freebsd-13_0[Microsoft Azure Marketplace], and https://console.cloud.google."
-"com/marketplace/product/freebsd-cloud/freebsd-13[Google Cloud Platform], to "
-"run on their respective hosting services. For more information on deploying "
-"FreeBSD on Azure please consult the relevant chapter in the https://docs."
-"microsoft.com/en-us/azure/virtual-machines/linux/freebsd-intro-on-"
-"azure[Azure Documentation]."
+msgid "The image types are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:61
msgid ""
-"SD card images, for embedded systems such as Raspberry Pi or BeagleBone "
-"Black. These can be downloaded from the https://www.freebsd.org/where/"
-"[Download FreeBSD] page. These files must be uncompressed and written as a "
-"raw image to an SD card, from which the board will then boot."
+"Virtual Machine disk images, such as `qcow2`, `vmdk`, `vhd`, and raw device "
+"images. These are not installation images, but images that have FreeBSD "
+"preinstalled and ready for post-installation tasks. Virtual machine images "
+"are also commonly used in cloud environments."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:62
msgid ""
-"Installation images, to install FreeBSD on a hard drive for the usual "
-"desktop, laptop, or server systems."
+"SD card images, for embedded systems such as Raspberry Pi. These files must "
+"be uncompressed and written as a raw image to an SD card, from which the "
+"board will boot."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:64
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:63
msgid ""
-"The rest of this chapter describes the fourth case, explaining how to "
-"install FreeBSD using the text-based installation program named bsdinstall."
+"Installation images to boot from an ISO or USB device to install FreeBSD on "
+"a drive for the usual desktop, laptop, or server system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:68
-msgid ""
-"In general, the installation instructions in this chapter are written for "
-"the i386(TM) and AMD64 architectures. Where applicable, instructions "
-"specific to other platforms will be listed. There may be minor differences "
-"between the installer and what is shown here, so use this chapter as a "
-"general guide rather than as a set of literal instructions."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:72
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:66
msgid ""
-"Users who prefer to install FreeBSD using a graphical installer may be "
-"interested in https://ghostbsd.org[GhostBSD], https://www.midnightbsd."
-"org[MidnightBSD] or https://nomadbsd.org[NomadBSD]."
+"The rest of this chapter describes the third case, explaining how to install "
+"FreeBSD using the text-based installation program named bsdinstall. There "
+"may be minor differences between the installer and what is shown here, so "
+"use this chapter as a general guide rather than as a set of literal "
+"instructions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:75
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:68
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:77
-msgid "The minimum hardware requirements and FreeBSD supported architectures."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:70
+msgid "How to obtain FreeBSD images and create FreeBSD installation media."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:78
-msgid "How to create the FreeBSD installation media."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:79
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:71
msgid "How to start bsdinstall."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:80
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:72
msgid ""
"The questions bsdinstall will ask, what they mean, and how to answer them."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:81
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:73
msgid "How to troubleshoot a failed installation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:82
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:74
msgid ""
"How to access a live version of FreeBSD before committing to an installation."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:84
-msgid "Before reading this chapter, you should:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:86
-msgid ""
-"Read the supported hardware list that shipped with the version of FreeBSD to "
-"be installed and verify that the system's hardware is supported."
-msgstr ""
-
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:88
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:76
#, no-wrap
msgid "Minimum Hardware Requirements"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:93
-msgid ""
-"The hardware requirements to install FreeBSD vary by architecture. Hardware "
-"architectures and devices supported by a FreeBSD release are listed on the "
-"link:https://www.FreeBSD.org/releases/[FreeBSD Release Information] page. "
-"The link:https://www.FreeBSD.org/where/[FreeBSD download page] also has "
-"recommendations for choosing the correct image for different architectures."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:98
-msgid ""
-"A FreeBSD installation requires a minimum of 96 MB of RAM and 1.5 GB of free "
-"hard drive space. However, such small amounts of memory and disk space are "
-"really only suitable for custom applications like embedded appliances. "
-"General-purpose desktop systems need more resources. 2-4 GB RAM and at "
-"least 8 GB hard drive space is a good starting point."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:100
-msgid "These are the processor requirements for each architecture:"
-msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:101
-#, no-wrap
-msgid "amd64"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:105
-msgid ""
-"This is the most common desktop and laptop processor type, used in most "
-"modern systems. Intel(R) calls it Intel64. Other manufacturers sometimes "
-"call it x86-64."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:107
-msgid ""
-"Examples of amd64 compatible processors include: AMD Athlon(TM)64, AMD "
-"Opteron(TM), multi-core Intel(R) Xeon(TM), and Intel(R) Core(TM) 2 and later "
-"processors."
-msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:108
-#, no-wrap
-msgid "i386"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:110
-msgid "Older desktops and laptops often use this 32-bit, x86 architecture."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:114
-msgid ""
-"Almost all i386-compatible processors with a floating point unit are "
-"supported. All Intel(R) processors 486 or higher are supported. However, "
-"binaries released by the project are compiled for the 686 processor, so a "
-"special build will be needed for 486 and 586 systems."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:118
-msgid ""
-"FreeBSD will take advantage of Physical Address Extensions (PAE) support on "
-"CPUs with this feature. A kernel with the PAE feature enabled will detect "
-"memory above 4 GB and allow it to be used by the system. However, using PAE "
-"places constraints on device drivers and other features of FreeBSD."
-msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:119
-#, no-wrap
-msgid "arm64"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:122
-msgid ""
-"Most embedded boards are 64-bit ARM computers. A number of arm64 servers "
-"are supported."
-msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:123
-#, no-wrap
-msgid "arm"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:125
-msgid "Older armv7 boards are supported."
-msgstr ""
-
-#. type: Labeled list
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:126
-#, no-wrap
-msgid "powerpc"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:129
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:81
msgid ""
-"All New World ROM Apple(R) Mac(R) systems with built-in USB are supported. "
-"SMP is supported on machines with multiple CPUs."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:131
-msgid "A 32-bit kernel can only use the first 2 GB of RAM."
+"The hardware requirements to install FreeBSD vary by architecture and "
+"version. Hardware architectures and devices supported by a FreeBSD release "
+"are listed on the link:https://www.FreeBSD.org/releases/[FreeBSD Release "
+"Information] page. The link:https://www.FreeBSD.org/where/[FreeBSD download "
+"page] also has recommendations for choosing the correct image for different "
+"architectures."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:133
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:83
#, no-wrap
msgid "Pre-Installation Tasks"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:137
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:87
msgid ""
"Once it has been determined that the system meets the minimum hardware "
"requirements for installing FreeBSD, the installation file should be "
"downloaded and the installation media prepared. Before doing this, check "
"that the system is ready for an installation by verifying the items in this "
"checklist:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:140
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:91
#, no-wrap
msgid "*Back Up Important Data*\n"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:146
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:97
msgid ""
-"Before installing any operating system, _always_ backup all important data "
+"Before installing any operating system, *always* backup all important data "
"first. Do not store the backup on the system being installed. Instead, "
"save the data to a removable disk such as a USB drive, another system on the "
"network, or an online backup service. Test the backup before starting the "
"installation to make sure it contains all of the needed files. Once the "
"installer formats the system's disk, all data stored on that disk will be "
"lost."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:147
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:98
#, no-wrap
msgid "*Decide Where to Install FreeBSD*\n"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:150
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:101
msgid ""
"If FreeBSD will be the only operating system installed, this step can be "
"skipped. But if FreeBSD will share the disk with another operating system, "
"decide which disk or partition will be used for FreeBSD."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:157
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:108
msgid ""
"In the i386 and amd64 architectures, disks can be divided into multiple "
"partitions using one of two partitioning schemes. A traditional _Master "
"Boot Record_ (MBR) holds a partition table defining up to four _primary "
"partitions_. For historical reasons, FreeBSD calls these primary partition "
"_slices_. One of these primary partitions can be made into an _extended "
"partition_ containing multiple _logical partitions_. The _GUID Partition "
"Table_ (GPT) is a newer and simpler method of partitioning a disk. Common "
"GPT implementations allow up to 128 partitions per disk, eliminating the "
"need for logical partitions."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:161
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:112
msgid ""
"The FreeBSD boot loader requires either a primary or GPT partition. If all "
"of the primary or GPT partitions are already in use, one must be freed for "
"FreeBSD. To create a partition without deleting existing data, use a "
"partition resizing tool to shrink an existing partition and create a new "
"partition using the freed space."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:165
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:115
msgid ""
-"A variety of free and commercial partition resizing tools are listed at "
-"http://en.wikipedia.org/wiki/List_of_disk_partitioning_software[http://en."
-"wikipedia.org/wiki/List_of_disk_partitioning_software]. GParted Live "
-"(https://gparted.org/livecd.php[https://gparted.org/livecd.php]) is a free "
-"live CD which includes the GParted partition editor. GParted is also "
-"included with many other Linux live CD distributions."
+"A variety of free and commercial partition resizing tools are listed at link:"
+"https://en.wikipedia.org/wiki/List_of_disk_partitioning_software[List of "
+"disk partitioning software wikipedia entry]. link:https://gparted.org/"
+"livecd.php[GParted Live] is a free live CD which includes the GParted "
+"partition editor."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:170
+#. type: delimited block = 6
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:120
msgid ""
"When used properly, disk shrinking utilities can safely create space for "
"creating a new partition. Since the possibility of selecting the wrong "
"partition exists, always backup any important data and verify the integrity "
"of the backup before modifying disk partitions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:174
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:124
msgid ""
"Disk partitions containing different operating systems make it possible to "
"install multiple operating systems on one computer. An alternative is to "
"use virtualization (crossref:virtualization[virtualization,Virtualization]) "
"which allows multiple operating systems to run at the same time without "
"modifying any disk partitions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:175
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:125
#, no-wrap
msgid "*Collect Network Information*\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:178
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:128
msgid ""
"Some FreeBSD installation methods require a network connection in order to "
"download the installation files. After any installation, the installer will "
"offer to setup the system's network interfaces."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:181
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:131
msgid ""
"If the network has a DHCP server, it can be used to provide automatic "
"network configuration. If DHCP is not available, the following network "
"information for the system must be obtained from the local network "
"administrator or Internet service provider:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:184
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:134
msgid "Required Network Information"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:186
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:136
msgid "IP address"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:187
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:137
msgid "Subnet mask"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:188
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:138
msgid "IP address of default gateway"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:189
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:139
msgid "Domain name of the network"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:190
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:140
msgid "IP addresses of the network's DNS servers"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:192
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:142
#, no-wrap
msgid "*Check for FreeBSD Errata*\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:197
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:147
msgid ""
"Although the FreeBSD Project strives to ensure that each release of FreeBSD "
"is as stable as possible, bugs occasionally creep into the process. On very "
"rare occasions those bugs affect the installation process. As these "
-"problems are discovered and fixed, they are noted in the FreeBSD Errata "
-"(link:https://www.FreeBSD.org/releases/{rel130-current}R/errata/[https://www."
-"freebsd.org/releases/{rel130-current}R/errata/]) on the FreeBSD web site. "
-"Check the errata before installing to make sure that there are no problems "
-"that might affect the installation."
+"problems are discovered and fixed, they are noted in the FreeBSD Errata page "
+"of each version. Check the errata before installing to make sure that there "
+"are no problems that might affect the installation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:199
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:149
msgid ""
-"Information and errata for all the releases can be found on the release "
-"information section of the FreeBSD web site (link:https://www.FreeBSD.org/"
-"releases/[https://www.freebsd.org/releases/])."
+"Information and errata for all the releases can be found on the link:https://"
+"www.FreeBSD.org/releases/[FreeBSD Release Information] page."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:201
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:152
#, no-wrap
msgid "Prepare the Installation Media"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:205
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:156
msgid ""
"The FreeBSD installer is not an application that can be run from within "
"another operating system. Instead, download a FreeBSD installation file, "
"burn it to the media associated with its file type and size (CD, DVD, or "
"USB), and boot the system to install from the inserted media."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:209
-msgid ""
-"FreeBSD installation files are available at link:https://www.FreeBSD.org/"
-"where/[www.freebsd.org/where/]. Each installation file's name includes the "
-"release version of FreeBSD, the architecture, and the type of file. For "
-"example, to install FreeBSD 13.0 on an amd64 system from a DVD, download [."
-"filename]#FreeBSD-13.0-RELEASE-amd64-dvd1.iso#, burn this file to a DVD, and "
-"boot the system with the DVD inserted."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:212
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:159
msgid ""
-"Installation files are available in several formats. The formats vary "
-"depending on computer architecture and media type."
+"FreeBSD installation files are available at the link:https://www.FreeBSD.org/"
+"where/[FreeBSD download page]. Each installation file's name includes the "
+"release version of FreeBSD, the architecture, and the type of file."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:216
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:162
msgid ""
-"Additional installation files are included for computers that boot with UEFI "
-"(Unified Extensible Firmware Interface). The names of these files include "
-"the string [.filename]#uefi#."
+"Installation files are available in several formats, compressed with man:"
+"xz[1] or uncompressed. The formats vary depending on computer architecture "
+"and media type."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:218
-msgid "File types:"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:164
+msgid "Installation file types:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:220
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:166
msgid ""
-"`-bootonly.iso`: This is the smallest installation file as it only contains "
-"the installer. A working Internet connection is required during installation "
-"as the installer will download the files it needs to complete the FreeBSD "
-"installation. This file should be burned to a CD using a CD burning "
-"application."
+"`*-bootonly.iso*`: This is the smallest installation file as it only "
+"contains the installer. A working Internet connection is required during "
+"installation as the installer will download the files it needs to complete "
+"the FreeBSD installation. This file should be burned to optical media."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:221
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:167
msgid ""
-"`-disc1.iso`: This file contains all of the files needed to install FreeBSD, "
-"its source, and the Ports Collection. It should be burned to a CD using a CD "
-"burning application."
+"`*-disc1.iso*`: This file contains all of the files needed to install "
+"FreeBSD, its source, and the Ports Collection. This file should be burned to "
+"optical media."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:222
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:168
msgid ""
-"`-dvd1.iso`: This file contains all of the files needed to install FreeBSD, "
-"its source, and the Ports Collection. It also contains a set of popular "
-"binary packages for installing a window manager and some applications so "
-"that a complete system can be installed from media without requiring a "
-"connection to the Internet. This file should be burned to a DVD using a DVD "
-"burning application."
+"`*-dvd1.iso*`: This file contains all of the files needed to install "
+"FreeBSD, its source, and the Ports Collection. It also contains a set of "
+"popular binary packages for installing a window manager and some "
+"applications so that a complete system can be installed from media without "
+"requiring a connection to the Internet. This file should be burned to "
+"optical media."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:223
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:169
msgid ""
-"`-memstick.img`: This file contains all of the files needed to install "
-"FreeBSD, its source, and the Ports Collection. It should be burned to a USB "
-"stick using the instructions below."
+"`*-memstick.img*`: This file contains all of the files needed to install "
+"FreeBSD, its source, and the Ports Collection. Write this file to a USB "
+"stick as shown in <<bsdinstall-usb>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:224
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:170
msgid ""
-"`-mini-memstick.img`: Like `-bootonly.iso`, does not include installation "
-"files, but downloads them as needed. A working internet connection is "
-"required during installation. Write this file to a USB stick as shown in "
-"<<bsdinstall-usb>>."
+"`*-mini-memstick.img*`: Like `*-bootonly.iso*`, does not include "
+"installation files, but downloads them as needed. A working internet "
+"connection is required during installation. It should be written to a USB "
+"stick as shown in <<bsdinstall-usb>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:228
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:174
msgid ""
"After downloading the image file, download at least one _checksum_ file from "
"the same directory. There are two _checksum_ files available, named after "
-"the release number and the architecture name. For example: [."
-"filename]#CHECKSUM.SHA256-FreeBSD-13.1-RELEASE-amd64# and [."
-"filename]#CHECKSUM.SHA512-FreeBSD-13.1-RELEASE-amd64#."
+"the release number and the architecture name. For example: `CHECKSUM.SHA256-"
+"FreeBSD-13.1-RELEASE-amd64` and `CHECKSUM.SHA512-FreeBSD-13.1-RELEASE-amd64`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:233
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:179
msgid ""
"After downloading one of the files (or both), calculate the _checksum_ for "
"the image file and compare it with the one shown in the _checksum_ file. "
"Note that you need to compare the calculated _checksum_ against the correct "
"file, as they correspond to two different algorithms: SHA256 and SHA512. "
"FreeBSD provides man:sha256[1] and man:sha512[1] that can be used for "
"calculating the _checksum_. Other operating systems have similar programs."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:235
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:181
msgid ""
"Verifying the _checksum_ in FreeBSD can be done automatically using man:"
"sha256sum[1] (and man:sha512sum[1]) by executing:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:240
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:186
#, no-wrap
msgid ""
"% sha256sum -c CHECKSUM.SHA256-FreeBSD-13.1-RELEASE-amd64 FreeBSD-13.1-RELEASE-amd64-dvd1.iso\n"
"FreeBSD-13.1-RELEASE-amd64-dvd1.iso: OK\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:243
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:190
msgid ""
"The checksums must match exactly. If the checksums do not match, the image "
"file is corrupt and must be downloaded again."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:245
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:192
#, no-wrap
msgid "Writing an Image File to USB"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:251
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:198
msgid ""
-"The [.filename]#\\*.img# file is an _image_ of the complete contents of a "
+"The `\\*memstick.img` file is an _image_ of the complete contents of a "
"memory stick. It _cannot_ be copied to the target device as a file. "
-"Several applications are available for writing the [.filename]#*.img# to a "
-"USB stick. This section describes two of these utilities."
+"Several applications are available for writing the `*.img` to a USB stick. "
+"This section describes two of these utilities."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:256
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:203
msgid ""
"Before proceeding, back up any important data on the USB stick. This "
"procedure will erase the existing data on the stick."
msgstr ""
-#. type: delimited block * 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:262
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:209
#, no-wrap
msgid "*Procedure. Using `dd` to Write the Image* +\n"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:267
+#. type: delimited block = 6
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:214
msgid ""
-"This example uses [.filename]#/dev/da0# as the target device where the image "
-"will be written. Be _very careful_ that the correct device is used as this "
-"command will destroy the existing data on the specified target device."
+"This example uses `/dev/da0` as the target device where the image will be "
+"written. Be *very careful* that the correct device is used as this command "
+"will destroy the existing data on the specified target device."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:270
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:217
msgid ""
"The command-line utility is available on BSD, Linux(R), and Mac OS(R) "
"systems. To burn the image using `dd`, insert the USB stick and determine "
"its device name. Then, specify the name of the downloaded installation file "
"and the device name for the USB stick. This example burns the amd64 "
"installation image to the first USB device on an existing FreeBSD system."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:274
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:221
#, no-wrap
msgid "# dd if=FreeBSD-13.0-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:281
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:224
msgid ""
"If this command fails, verify that the USB stick is not mounted and that the "
-"device name is for the disk, not a partition. Some operating systems might "
-"require this command to be run with man:sudo[8]. The man:dd[1] syntax "
-"varies slightly across different platforms; for example, Mac OS(R) requires "
-"a lower-case `bs=1m`. Systems like Linux(R) might buffer writes. To force "
-"all writes to complete, use man:sync[8]."
+"device name is for the disk, not a partition."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:286
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:229
+msgid ""
+"Some operating systems might require this command to be run with man:"
+"sudo[8]. The man:dd[1] syntax varies slightly across different platforms; "
+"for example, Mac OS(R) requires a lower-case `bs=1m`. Systems like Linux(R) "
+"might buffer writes. To force all writes to complete, use man:sync[8]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:234
#, no-wrap
msgid "*Procedure. Using Windows(R) to Write the Image* +\n"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:291
+#. type: delimited block = 6
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:238
msgid ""
"Be sure to give the correct drive letter as the existing data on the "
"specified drive will be overwritten and destroyed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:293
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:241
#, no-wrap
msgid "*Obtaining Image Writer for Windows(R)*\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:296
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:244
msgid ""
"Image Writer for Windows(R) is a free application that can correctly write "
"an image file to a memory stick. Download it from https://sourceforge.net/"
-"projects/win32diskimager/[https://sourceforge.net/projects/win32diskimager/] "
-"and extract it into a folder."
+"projects/win32diskimager/[win32diskimager home page] and extract it into a "
+"folder."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:298
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:246
#, no-wrap
msgid "*Writing the Image with Image Writer*\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:305
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:253
msgid ""
"Double-click the Win32DiskImager icon to start the program. Verify that the "
"drive letter shown under `Device` is the drive with the memory stick. Click "
"the folder icon and select the image to be written to the memory stick. "
"Click btn:[Save] to accept the image file name. Verify that everything is "
"correct, and that no folders on the memory stick are open in other windows. "
"When everything is ready, click btn:[Write] to write the image file to the "
"memory stick."
msgstr ""
-#. type: delimited block * 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:308
-msgid "You are now ready to start installing FreeBSD."
-msgstr ""
-
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:310
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:256
#, no-wrap
msgid "Starting the Installation"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:315
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:261
msgid ""
"By default, the installation will not make any changes to the disk(s) before "
"the following message:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:322
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:268
#, no-wrap
msgid ""
"Your changes will now be written to disk. If you\n"
"have chosen to overwrite existing data, it will\n"
"be PERMANENTLY ERASED. Are you sure you want to\n"
"commit your changes?\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:326
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:272
msgid ""
"The install can be exited at any time prior to this warning. If there is a "
"concern that something is incorrectly configured, just turn the computer off "
"before this point and no changes will be made to the system's disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:332
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:278
msgid ""
"This section describes how to boot the system from the installation media "
"which was prepared using the instructions in <<bsdinstall-installation-"
"media>>. When using a bootable USB stick, plug in the USB stick before "
"turning on the computer. When booting from CD or DVD, turn on the computer "
"and insert the media at the first opportunity. How to configure the system "
"to boot from the inserted media depends upon the architecture."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:334
-#, no-wrap
-msgid "Booting on i386(TM) and amd64"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:340
-msgid ""
-"These architectures provide a BIOS menu for selecting the boot device. "
-"Depending upon the installation media being used, select the CD/DVD or USB "
-"device as the first boot device. Most systems also provide a key for "
-"selecting the boot device during startup without having to enter the BIOS. "
-"Typically, the key is either kbd:[F10], kbd:[F11], kbd:[F12], or kbd:"
-"[Escape]."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:342
-msgid ""
-"If the computer loads the existing operating system instead of the FreeBSD "
-"installer, then either:"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:344
-msgid ""
-"The installation media was not inserted early enough in the boot process. "
-"Leave the media inserted and try restarting the computer."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:345
-msgid ""
-"The BIOS changes were incorrect or not saved. Double-check that the right "
-"boot device is selected as the first boot device."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:346
-msgid ""
-"This system is too old to support booting from the chosen media. In this "
-"case, the Plop Boot Manager (http://www.plop.at/en/bootmanagers.html[]) can "
-"be used to boot the system from the selected media."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:347
-#, no-wrap
-msgid "Booting on PowerPC(R)"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:352
-msgid ""
-"On most machines, holding kbd:[C] on the keyboard during boot will boot from "
-"the CD. Otherwise, hold kbd:[Command+Option+O+F], or kbd:[Windows+Alt+O+F] "
-"on non-Apple(R) keyboards. At the `0 >` prompt, enter"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:356
-#, no-wrap
-msgid " boot cd:,\\ppc\\loader cd:0\n"
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:359
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:280
#, no-wrap
msgid "FreeBSD Boot Menu"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:362
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:283
msgid ""
"Once the system boots from the installation media, a menu similar to the "
"following will be displayed:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:364
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:285
#, no-wrap
msgid "FreeBSD Boot Loader Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:286
+#, no-wrap
+msgid "FreeBSD boot loader menu"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:365
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:286
#, no-wrap
msgid "bsdinstall-newboot-loader-menu.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:371
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:292
msgid ""
"By default, the menu will wait ten seconds for user input before booting "
"into the FreeBSD installer or, if FreeBSD is already installed, before "
"booting into FreeBSD. To pause the boot timer in order to review the "
"selections, press kbd:[Space]. To select an option, press its highlighted "
"number, character, or key. The following options are available."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:373
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:294
msgid ""
"`Boot Multi User`: This will continue the FreeBSD boot process. If the boot "
"timer has been paused, press kbd:[1], upper- or lower-case kbd:[B], or kbd:"
"[Enter]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:374
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:295
msgid ""
"`Boot Single User`: This mode can be used to fix an existing FreeBSD "
"installation as described in crossref:boot[boot-singleuser,“Single-User "
"Mode”]. Press kbd:[2] or the upper- or lower-case kbd:[S] to enter this mode."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:375
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:296
msgid ""
"`Escape to loader prompt`: This will boot the system into a repair prompt "
"that contains a limited number of low-level commands. This prompt is "
"described in crossref:boot[boot-loader,“Stage Three”]. Press kbd:[3] or kbd:"
"[Esc] to boot into this prompt."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:376
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:297
msgid "`Reboot`: Reboots the system."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:377
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:298
+msgid ""
+"`Cons`: Allow to continue the installation by `video`, `serial`, `Dual "
+"(serial primary)` or `Dual (Video primary)`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:299
msgid "`Kernel`: Loads a different kernel."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:378
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:300
msgid ""
"`Boot Options`: Opens the menu shown in, and described under, <<bsdinstall-"
"boot-options-menu>>."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:380
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:302
#, no-wrap
msgid "FreeBSD Boot Options Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:303
+#, no-wrap
+msgid "Menu showing the different boot options supported"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:381
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:303
#, no-wrap
msgid "bsdinstall-boot-options-menu.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:385
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:307
msgid ""
"The boot options menu is divided into two sections. The first section can "
"be used to either return to the main boot menu or to reset any toggled "
"options back to their defaults."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:389
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:311
msgid ""
"The next section is used to toggle the available options to `On` or `Off` by "
"pressing the option's highlighted number or character. The system will "
"always boot using the settings for these options until they are modified. "
"Several options can be toggled using this menu:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:391
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:313
msgid ""
"`ACPI Support`: If the system hangs during boot, try toggling this option to "
"`Off`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:392
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:314
msgid ""
"`Safe Mode`: If the system still hangs during boot even with `ACPI Support` "
"set to `Off`, try setting this option to `On`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:393
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:315
msgid ""
"`Single User`: Toggle this option to `On` to fix an existing FreeBSD "
"installation as described in crossref:boot[boot-singleuser,“Single-User "
"Mode”]. Once the problem is fixed, set it back to `Off`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:394
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:316
msgid ""
"`Verbose`: Toggle this option to `On` to see more detailed messages during "
"the boot process. This can be useful when troubleshooting a piece of "
"hardware."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:398
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:320
msgid ""
"After making the needed selections, press kbd:[1] or kbd:[Backspace] to "
"return to the main boot menu, then press kbd:[Enter] to continue booting "
"into FreeBSD. A series of boot messages will appear as FreeBSD carries out "
"its hardware device probes and loads the installation program. Once the "
"boot is complete, the welcome menu shown in <<bsdinstall-choose-mode>> will "
"be displayed."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:400
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:322
#, no-wrap
msgid "Welcome Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:323
+#, no-wrap
+msgid "FreeBSD installation welcome menu"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:401
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:323
#, no-wrap
msgid "bsdinstall-choose-mode.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:409
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:331
msgid ""
"Press kbd:[Enter] to select the default of btn:[Install] to enter the "
"installer. The rest of this chapter describes how to use this installer. "
"Otherwise, use the right or left arrows or the colorized letter to select "
"the desired menu item. The btn:[Shell] can be used to access a FreeBSD "
"shell in order to use command line utilities to prepare the disks before "
"installation. The btn:[Live CD] option can be used to try out FreeBSD "
"before installing it. The live version is described in <<using-live-cd>>."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:415
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:337
msgid ""
"To review the boot messages, including the hardware device probe, press the "
"upper- or lower-case kbd:[S] and then kbd:[Enter] to access a shell. At the "
"shell prompt, type `more /var/run/dmesg.boot` and use the space bar to "
"scroll through the messages. When finished, type `exit` to return to the "
"welcome menu."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:418
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:340
#, no-wrap
msgid "Using bsdinstall"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:423
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:345
msgid ""
"This section shows the order of the bsdinstall menus and the type of "
"information that will be asked before the system is installed. Use the "
"arrow keys to highlight a menu option, then kbd:[Space] to select or "
"deselect that menu item. When finished, press kbd:[Enter] to save the "
"selection and move onto the next screen."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:425
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:347
#, no-wrap
msgid "Selecting the Keymap Menu"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:428
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:350
msgid ""
-"Before starting the process, bsdinstall will load the keymap files as show "
+"Before starting the process, bsdinstall will load the keymap files as shown "
"in <<bsdinstall-keymap-loading>>."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:430
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:352
#, no-wrap
msgid "Keymap Loading"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:353
+#, no-wrap
+msgid "Keymap loading"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:431
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:353
#, no-wrap
msgid "bsdinstall-keymap-loading.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:436
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:358
msgid ""
"After the keymaps have been loaded, bsdinstall displays the menu shown in "
"<<bsdinstall-keymap-10>>. Use the up and down arrows to select the keymap "
"that most closely represents the mapping of the keyboard attached to the "
"system. Press kbd:[Enter] to save the selection."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:438
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:360
#, no-wrap
msgid "Keymap Selection Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:361
+#, no-wrap
+msgid "Keymap selection menu showing all supported keyboards"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:439
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:361
#, no-wrap
msgid "bsdinstall-keymap-10.png"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:445
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:367
msgid ""
"Pressing kbd:[Esc] will exit this menu and use the default keymap. If the "
"choice of keymap is not clear, [.guimenuitem]#United States of America "
"ISO-8859-1# is also a safe option."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:448
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:370
msgid ""
"In addition, when selecting a different keymap, the user can try the keymap "
"and ensure it is correct before proceeding, as shown in <<bsdinstall-keymap-"
"testing>>."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:450
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:372
#, no-wrap
msgid "Keymap Testing Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:373
+#, no-wrap
+msgid "Keymap testing menu"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:451
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:373
#, no-wrap
msgid "bsdinstall-keymap-testing.png"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:454
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:459
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:376
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:381
#, no-wrap
msgid "Setting the Hostname"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:457
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:379
msgid ""
"The next bsdinstall menu is used to set the hostname for the newly installed "
"system."
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:382
+#, no-wrap
+msgid "Setting the hostname"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:460
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:382
#, no-wrap
msgid "bsdinstall-config-hostname.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:464
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:386
msgid ""
"Type in a hostname that is unique for the network. It should be a fully-"
"qualified hostname, such as `machine3.example.com`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:466
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:471
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:388
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:393
#, no-wrap
msgid "Selecting Components to Install"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:469
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:391
msgid "Next, bsdinstall will prompt to select optional components to install."
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:394
+#, no-wrap
+msgid "Different components that can be installed. Example: base-dbg"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:472
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:394
#, no-wrap
msgid "bsdinstall-config-components.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:477
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:399
msgid ""
"Deciding which components to install will depend largely on the intended use "
"of the system and the amount of disk space available. The FreeBSD kernel "
"and userland, collectively known as the _base system_, are always "
"installed. Depending on the architecture, some of these components may not "
"appear:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:479
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:401
msgid ""
"`base-dbg` - Base tools like cat and ls, among many others, with debug "
"symbols activated."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:480
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:402
msgid "`kernel-dbg` - Kernel and modules with debug symbols activated."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:481
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:403
msgid ""
"`lib32-dbg` - Compatibility libraries for running 32-bit applications on a "
"64-bit version of FreeBSD with debug symbols activated."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:482
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:404
msgid ""
"`lib32` - Compatibility libraries for running 32-bit applications on a 64-"
"bit version of FreeBSD."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:483
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:405
msgid ""
"`ports` - The FreeBSD Ports Collection is a collection of files which "
"automates the downloading, compiling and installation of third-party "
"software packages. crossref:ports[ports,Installing Applications: Packages "
"and Ports] discusses how to use the Ports Collection."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:489
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:411
msgid ""
"The installation program does not check for adequate disk space. Select "
"this option only if sufficient hard disk space is available. The FreeBSD "
"Ports Collection takes up about {ports-size} of disk space."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:492
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:414
msgid ""
"`src` - The complete FreeBSD source code for both the kernel and the "
"userland. Although not required for the majority of applications, it may be "
"required to build device drivers, kernel modules, or some applications from "
"the Ports Collection. It is also used for developing FreeBSD itself. The "
"full source tree requires 1 GB of disk space and recompiling the entire "
"FreeBSD system requires an additional 5 GB of space."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:493
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:415
msgid "`tests` - FreeBSD Test Suite."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:495
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:502
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:417
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:424
#, no-wrap
msgid "Installing from the Network"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:500
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:422
msgid ""
"The menu shown in <<bsdinstall-netinstall-notify>> only appears when "
-"installing from a [.filename]#-bootonly.iso# or [.filename]#-mini-memstick."
-"img#, as this installation media does not hold copies of the installation "
-"files. Since the installation files must be retrieved over a network "
-"connection, this menu indicates that the network interface must be "
-"configured first. If this menu is shown in any step of the process, "
-"remember to follow the instructions in <<bsdinstall-config-network-dev>>."
+"installing from a `-bootonly.iso` or `-mini-memstick.img`, as this "
+"installation media does not hold copies of the installation files. Since "
+"the installation files must be retrieved over a network connection, this "
+"menu indicates that the network interface must be configured first. If this "
+"menu is shown in any step of the process, remember to follow the "
+"instructions in <<bsdinstall-config-network-dev>>."
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:425
+#, no-wrap
+msgid "Indicates that certain components have not been found and will be downloaded using the network."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:503
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:425
#, no-wrap
msgid "bsdinstall-netinstall-files.png"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:506
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:428
#, no-wrap
msgid "Allocating Disk Space"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:509
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:431
msgid ""
"The next menu is used to determine the method for allocating disk space."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:511
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:433
#, no-wrap
msgid "Partitioning Choices"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:434
+#, no-wrap
+msgid "Shows the different partition options. Example: Manual"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:512
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:434
#, no-wrap
msgid "bsdinstall-zfs-partmenu.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:515
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:437
msgid "bsdinstall gives the user four methods for allocating disk space:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:517
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:439
+msgid ""
+"`Auto (ZFS)` partitioning creates a root-on-ZFS system with optional GELI "
+"encryption support for _boot environments_."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:440
msgid ""
"`Auto (UFS)` partitioning automatically sets up the disk partitions using "
"the `UFS` file system."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:518
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:441
msgid ""
"`Manual` partitioning allows advanced users to create customized partitions "
"from menu options."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:519
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:442
msgid ""
"`Shell` opens a shell prompt where advanced users can create customized "
"partitions using command-line utilities like man:gpart[8], man:fdisk[8], and "
"man:bsdlabel[8]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:520
-msgid ""
-"`Auto (ZFS)` partitioning creates a root-on-ZFS system with optional GELI "
-"encryption support for _boot environments_."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:523
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:445
msgid ""
"This section describes what to consider when laying out the disk "
"partitions. It then demonstrates how to use the different partitioning "
"methods."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:525
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:447
#, no-wrap
msgid "Designing the Partition Layout"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:530
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:454
msgid ""
+"The default partition layout for file systems includes one file system for "
+"the entire system. When using `UFS` it may be worth considering the use of "
+"multiple file systems if you have sufficient disk space or multiple disks. "
"When laying out file systems, remember that hard drives transfer data faster "
"from the outer tracks to the inner. Thus, smaller and heavier-accessed file "
"systems should be closer to the outside of the drive, while larger "
-"partitions like [.filename]#/usr# should be placed toward the inner parts of "
-"the disk. It is a good idea to create partitions in an order similar to: [."
-"filename]#/#, swap, [.filename]#/var#, and [.filename]#/usr#."
+"partitions like `/usr` should be placed toward the inner parts of the disk. "
+"It is a good idea to create partitions in an order similar to: `/`, swap, `/"
+"var`, and `/usr`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:535
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:459
msgid ""
-"The size of the [.filename]#/var# partition reflects the intended machine's "
-"usage. This partition is used to hold mailboxes, log files, and printer "
-"spools. Mailboxes and log files can grow to unexpected sizes depending on "
-"the number of users and how long log files are kept. On average, most users "
-"rarely need more than about a gigabyte of free disk space in [.filename]#/"
-"var#."
+"The size of the `/var` partition reflects the intended machine's usage. "
+"This partition is used to hold mailboxes, log files, and printer spools. "
+"Mailboxes and log files can grow to unexpected sizes depending on the number "
+"of users and how long log files are kept. On average, most users rarely "
+"need more than about a gigabyte of free disk space in `/var`."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:541
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:465
msgid ""
-"Sometimes, a lot of disk space is required in [.filename]#/var/tmp#. When "
-"new software is installed, the packaging tools extract a temporary copy of "
-"the packages under [.filename]#/var/tmp#. Large software packages, like "
-"Firefox or LibreOffice may be tricky to install if there is not enough disk "
-"space under [.filename]#/var/tmp#."
+"Sometimes, a lot of disk space is required in `/var/tmp`. When new software "
+"is installed, the packaging tools extract a temporary copy of the packages "
+"under `/var/tmp`. Large software packages, like Firefox or LibreOffice may "
+"be tricky to install if there is not enough disk space under `/var/tmp`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:545
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:471
msgid ""
-"The [.filename]#/usr# partition holds many of the files which support the "
-"system, including the FreeBSD Ports Collection and system source code. At "
-"least 2 gigabytes of space is recommended for this partition."
+"The `/usr` partition holds many of the files which support the system, "
+"including the FreeBSD Ports Collection and system source code. At least 2 "
+"gigabytes of space is recommended for this partition. Also, note that home "
+"directories for users are placed in `/usr/home` by default, but can be "
+"placed on another partition. By default, `/home` is a symbolic link to `/"
+"usr/home`."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:548
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:474
msgid ""
"When selecting partition sizes, keep the space requirements in mind. "
"Running out of space in one partition while barely using another can be a "
"hassle."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:552
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:478
msgid ""
"As a rule of thumb, the swap partition should be about double the size of "
-"physical memory (RAM). Systems with minimal RAM may perform better with "
-"more swap. Configuring too little swap can lead to inefficiencies in the VM "
-"page scanning code and might create issues later if more memory is added."
+"physical memory (RAM). Systems with minimal RAM (less for larger-memory "
+"configurations) may perform better with more swap. Configuring too little "
+"swap can lead to inefficiencies in the VM page scanning code and might "
+"create issues later if more memory is added."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:559
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:486
msgid ""
"On larger systems with multiple SCSI disks or multiple IDE disks operating "
"on different controllers, it is recommended that swap be configured on each "
"drive, up to four drives. The swap partitions should be approximately the "
"same size. The kernel can handle arbitrary sizes, but internal data "
"structures scale to 4 times the largest swap partition. Keeping the swap "
"partitions near the same size will allow the kernel to optimally stripe swap "
-"space across disks. Large swap sizes are fine, even if swap is not used "
-"much. It might be easier to recover from a runaway program before being "
-"forced to reboot."
+"space across disks. Large swap sizes may elicit a kernel warning message "
+"about the total configured swap. The limit is raised by increasing the "
+"amount of memory allowed for keeping track of swap allocations, as "
+"instructed by the warning message. It might be easier to recover from a "
+"runaway program before being forced to reboot."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:563
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:490
msgid ""
"By properly partitioning a system, fragmentation introduced in the smaller "
"write-heavy partitions will not bleed over into the mostly read partitions. "
"Keeping the write-loaded partitions closer to the disk's edge will increase "
"I/O performance in the partitions where it occurs the most. While I/O "
"performance in the larger partitions may be needed, shifting them more "
"toward the edge of the disk will not lead to a significant performance "
-"improvement over moving [.filename]#/var# to the edge."
+"improvement over moving `/var` to the edge."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:565
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:492
#, no-wrap
msgid "Guided Partitioning Using UFS"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:569
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:496
msgid ""
"When this method is selected, a menu will display the available disk(s). If "
"multiple disks are connected, choose the one where FreeBSD is to be "
"installed."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:571
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:498
#, no-wrap
msgid "Selecting from Multiple Disks"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:499
+#, no-wrap
+msgid "Shows the list of disks on which FreeBSD can be installed"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:572
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:499
#, no-wrap
msgid "bsdinstall-part-guided-disk.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:577
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:504
msgid ""
"Once the disk is selected, the next menu prompts to install to either the "
"entire disk or to create a partition using free space. If btn:[Entire Disk] "
"is chosen, a general partition layout filling the whole disk is "
"automatically created. Selecting btn:[Partition] creates a partition layout "
"from the unused space on the disk."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:579
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:506
#, no-wrap
msgid "Selecting Entire Disk or Partition"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:507
+#, no-wrap
+msgid "Menu asking the user if he wants to use all the available space on the disk or wants to make a partition"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:580
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:507
#, no-wrap
msgid "bsdinstall-part-entire-part.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:583
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:510
msgid ""
-"After btn:[Entire Disk] is chosen, bsdinstall displays a dialog indicating "
-"that the disk will be erased."
+"After the btn:[Entire Disk] option is chosen, bsdinstall displays a dialog "
+"indicating that the disk will be erased."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:585
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:512
#, no-wrap
msgid "Confirmation"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:513
+#, no-wrap
+msgid "Menu indicating the user that all data on the disk will be deleted and asking for confirmation"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:586
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:513
#, no-wrap
msgid "bsdinstall-ufs-warning.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:593
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:520
msgid ""
"The next menu shows a list with the available partition scheme types. GPT "
"is usually the most appropriate choice for amd64 computers. Older computers "
"that are not compatible with GPT should use MBR. The other partition "
"schemes are generally used for uncommon or older computers. More "
"information is available in <<partition-schemes>>."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:595
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:522
#, no-wrap
msgid "Select Partition Scheme"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:523
+#, no-wrap
+msgid "Menu showing the user the different the different types of partition that exist and requesting one of them"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:596
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:631
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:523
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:558
#, no-wrap
msgid "bsdinstall-part-manual-partscheme.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:602
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:529
msgid ""
"After the partition layout has been created, review it to ensure it meets "
"the needs of the installation. Selecting btn:[Revert] will reset the "
"partitions to their original values. Pressing btn:[Auto] will recreate the "
"automatic FreeBSD partitions. Partitions can also be manually created, "
"modified, or deleted. When the partitioning is correct, select btn:[Finish] "
"to continue with the installation."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:604
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:531
#, no-wrap
msgid "Review Created Partitions"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:532
+#, no-wrap
+msgid "Menu showing created partitions"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:605
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:532
#, no-wrap
msgid "bsdinstall-part-review.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:611
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:538
msgid ""
"Once the disks are configured, the next menu provides the last chance to "
"make changes before the selected drives are formatted. If changes need to "
"be made, select btn:[Back] to return to the main partitioning menu. btn:"
"[Revert & Exit] exits the installer without making any changes to the "
"drive. Otherwise, select btn:[Commit] to start the installation process."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:613
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:540
#, no-wrap
msgid "Final Confirmation"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:541
+#, no-wrap
+msgid "Menu indicating to the user that all changes will be written to disk and informing that if he decides to continue the existing data will be permanently deleted."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:614
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:541
#, no-wrap
msgid "bsdinstall-final-confirmation.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:617
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:544
msgid ""
"To continue with the installation process, go to <<bsdinstall-fetching-"
"distribution>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:619
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:546
#, no-wrap
msgid "Manual Partitioning"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:622
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:549
msgid "Selecting this method opens the partition editor:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:624
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:630
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:661
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:551
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:557
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:588
#, no-wrap
msgid "Manually Create Partitions"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:552
+#, no-wrap
+msgid "Menu showing the Partition Editor."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:625
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:552
#, no-wrap
msgid "bsdinstall-part-manual-create.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:628
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:555
msgid ""
-"Highlight the installation drive ([.filename]#ada0# in this example) and "
-"select btn:[Create] to display a menu of available partition schemes:"
+"Highlight the installation drive (`ada0` in this example) and select btn:"
+"[Create] to display a menu of available partition schemes:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:636
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:558
+#, no-wrap
+msgid "Menu showing the different kind of partition schemes"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:563
msgid ""
"GPT is usually the most appropriate choice for amd64 computers. Older "
"computers that are not compatible with GPT should use MBR. The other "
"partition schemes are generally used for uncommon or older computers."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:638
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:565
#, no-wrap
msgid "Partitioning Schemes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:642
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:569
#, no-wrap
msgid "Abbreviation"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:644
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:571
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:645
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:572
#, no-wrap
msgid "APM"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:647
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:574
#, no-wrap
msgid "Apple Partition Map, used by PowerPC(R)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:648
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:575
#, no-wrap
msgid "BSD"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:650
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:577
#, no-wrap
msgid "BSD label without an MBR, sometimes called _dangerously dedicated mode_ as non-BSD disk utilities may not recognize it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:651
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:578
#, no-wrap
msgid "GPT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:653
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:580
#, no-wrap
-msgid "GUID Partition Table (http://en.wikipedia.org/wiki/GUID_Partition_Table[http://en.wikipedia.org/wiki/GUID_Partition_Table])."
+msgid "link:https://en.wikipedia.org/wiki/GUID_Partition_Table[GUID Partition Table]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:654
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:581
#, no-wrap
msgid "MBR"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:655
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:582
#, no-wrap
-msgid "Master Boot Record (http://en.wikipedia.org/wiki/Master_boot_record[http://en.wikipedia.org/wiki/Master_boot_record])."
+msgid "link:https://en.wikipedia.org/wiki/Master_boot_record[Master Boot Record]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:659
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:586
msgid ""
"After the partitioning scheme has been selected and created, select btn:"
"[Create] again to create the partitions. The kbd:[Tab] key is used to move "
"the cursor between fields."
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:589
+#, no-wrap
+msgid "Menu requesting type"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:662
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:589
#, no-wrap
msgid "bsdinstall-part-manual-addpart.png"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:665
-msgid "A standard FreeBSD GPT installation uses at least three partitions:"
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:592
+msgid ""
+"A standard FreeBSD GPT installation uses at least three partitions, "
+"including either UFS or ZFS:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:667
-msgid "`freebsd-boot` - Holds the FreeBSD boot code."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:594
+msgid "`freebsd-boot` or `efi` - Holds the FreeBSD boot code."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:668
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:595
msgid "`freebsd-ufs` - A FreeBSD UFS file system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:669
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:596
msgid ""
"`freebsd-zfs` - A FreeBSD ZFS file system. More information about ZFS is "
"available in crossref:zfs[zfs,The Z File System (ZFS)]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:670
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:597
msgid "`freebsd-swap` - FreeBSD swap space."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:672
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:599
msgid ""
"Refer to man:gpart[8] for descriptions of the available GPT partition types."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:675
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:601
msgid ""
"Multiple file system partitions can be created. Some people prefer a "
-"traditional layout with separate partitions for [.filename]#/#, [.filename]#/"
-"var#, [.filename]#/tmp#, and [.filename]#/usr#. See <<bsdinstall-part-"
-"manual-splitfs>> for an example."
+"traditional layout with separate partitions for `/`, `/var`, `/tmp`, and `/"
+"usr`."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:605
+msgid ""
+"Note that `/tmp` can be added later as a memory-based file system (man:"
+"tmpfs[5]) on systems with sufficient memory."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:608
+msgid "See <<bsdinstall-part-manual-splitfs>> for an example."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:677
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:610
msgid ""
"The `Size` may be entered with common abbreviations: _K_ for kilobytes, _M_ "
"for megabytes, or _G_ for gigabytes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:683
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:616
msgid ""
"Proper sector alignment provides the best performance, and making partition "
"sizes even multiples of 4K bytes helps to ensure alignment on drives with "
"either 512-byte or 4K-byte sectors. Generally, using partition sizes that "
"are even multiples of 1M or 1G is the easiest way to make sure every "
"partition starts at an even multiple of 4K. There is one exception: the "
"_freebsd-boot_ partition should be no larger than 512K due to current boot "
"code limitations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:687
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:620
msgid ""
"A `Mountpoint` is needed if the partition will contain a file system. If "
-"only a single UFS partition will be created, the mountpoint should be [."
-"filename]#/#."
+"only a single UFS partition will be created, the mountpoint should be `/`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:693
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:626
msgid ""
"The `Label` is a name by which the partition will be known. Drive names or "
"numbers can change if the drive is connected to a different controller or "
"port, but the partition label does not change. Referring to labels instead "
-"of drive names and partition numbers in files like [.filename]#/etc/fstab# "
-"makes the system more tolerant to hardware changes. GPT labels appear in [."
-"filename]#/dev/gpt/# when a disk is attached. Other partitioning schemes "
-"have different label capabilities and their labels appear in different "
-"directories in [.filename]#/dev/#."
+"of drive names and partition numbers in files like `/etc/fstab` makes the "
+"system more tolerant to hardware changes. GPT labels appear in `/dev/gpt/` "
+"when a disk is attached. Other partitioning schemes have different label "
+"capabilities and their labels appear in different directories in `/dev/`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:699
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:632
msgid ""
"Use a unique label on every partition to avoid conflicts from identical "
"labels. A few letters from the computer's name, use, or location can be "
"added to the label. For instance, use `labroot` or `rootfslab` for the UFS "
"root partition on the computer named `lab`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:702
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:635
#, no-wrap
msgid "Creating Traditional Split File System Partitions"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:709
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:642
msgid ""
-"For a traditional partition layout where the [.filename]#/#, [.filename]#/"
-"var#, [.filename]#/tmp#, and [.filename]#/usr# directories are separate file "
-"systems on their own partitions, create a GPT partitioning scheme, then "
-"create the partitions as shown. Partition sizes shown are typical for a 20G "
-"target disk. If more space is available on the target disk, larger swap or "
-"[.filename]#/var# partitions may be useful. Labels shown here are prefixed "
-"with `ex` for \"example\", but readers should use other unique label values "
-"as described above."
+"For a traditional partition layout where the `/`, `/var`, `/tmp`, and `/usr` "
+"directories are separate file systems on their own partitions, create a GPT "
+"partitioning scheme, then create the partitions as shown. Partition sizes "
+"shown are typical for a 20G target disk. If more space is available on the "
+"target disk, larger swap or `/var` partitions may be useful. Labels shown "
+"here are prefixed with `ex` for \"example\", but readers should use other "
+"unique label values as described above."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:711
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:644
msgid ""
-"By default, FreeBSD's [.filename]#gptboot# expects the first UFS partition "
-"to be the [.filename]#/# partition."
+"By default, FreeBSD's `gptboot` expects the first UFS partition to be the `/"
+"` partition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:716
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:649
#, no-wrap
msgid "Partition Type"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:717
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:650
#, no-wrap
msgid "Size"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:718
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:651
#, no-wrap
msgid "Mountpoint"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:720
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:653
#, no-wrap
msgid "Label"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:721
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:654
#, no-wrap
msgid "`freebsd-boot`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:722
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:655
#, no-wrap
msgid "`512K`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:726
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:736
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:741
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:746
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:659
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:669
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:674
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:679
#, no-wrap
msgid "`freebsd-ufs`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:727
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:737
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:660
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:670
#, no-wrap
msgid "`2G`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:728
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:661
#, no-wrap
-msgid "[.filename]#/#"
+msgid "`/`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:730
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:663
#, no-wrap
msgid "`exrootfs`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:731
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:664
#, no-wrap
msgid "`freebsd-swap`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:732
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:665
#, no-wrap
msgid "`4G`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:735
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:668
#, no-wrap
msgid "`exswap`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:738
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:671
#, no-wrap
-msgid "[.filename]#/var#"
+msgid "`/var`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:740
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:673
#, no-wrap
msgid "`exvarfs`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:742
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:675
#, no-wrap
msgid "`1G`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:743
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:676
#, no-wrap
-msgid "[.filename]#/tmp#"
+msgid "`/tmp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:745
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:678
#, no-wrap
msgid "`extmpfs`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:747
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:680
#, no-wrap
msgid "accept the default (remainder of the disk)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:748
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:681
#, no-wrap
-msgid "[.filename]#/usr#"
+msgid "`/usr`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:749
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:682
#, no-wrap
msgid "`exusrfs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:753
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:686
msgid ""
"After the custom partitions have been created, select btn:[Finish] to "
"continue with the installation and go to <<bsdinstall-fetching-"
"distribution>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:755
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:688
#, no-wrap
msgid "Guided Partitioning Using Root-on-ZFS"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:759
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:692
msgid ""
"This partitioning mode only works with whole disks and will erase the "
"contents of the entire disk. The main ZFS configuration menu offers a "
"number of options to control the creation of the pool."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:761
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:694
#, no-wrap
msgid "ZFS Partitioning Menu"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:695
+#, no-wrap
+msgid "Menu showing the different options to configure the ZFS pool"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:762
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:695
#, no-wrap
msgid "bsdinstall-zfs-menu.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:765
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:698
msgid "Here is a summary of the options in this menu:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:767
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:700
msgid "`Install` - Proceed with the installation with the selected options."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:768
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:701
msgid ""
"`Pool Type/Disks` - Configure the `Pool Type` and the disk(s) that will "
"constitute the pool. The automatic ZFS installer currently only supports the "
"creation of a single top level vdev, except in stripe mode. To create more "
"complex pools, use the instructions in <<bsdinstall-part-shell>> to create "
"the pool."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:769
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:702
msgid "`Rescan Devices` - Repopulate the list of available disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:770
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:703
msgid ""
"`Disk Info` - This menu can be used to inspect each disk, including its "
"partition table and various other information such as the device model "
"number and serial number, if available."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:771
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:704
msgid ""
"`Pool Name` - Establish the name of the pool. The default name is _zroot_."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:772
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:705
msgid ""
"`Force 4K Sectors?` - Force the use of 4K sectors. By default, the installer "
"will automatically create partitions aligned to 4K boundaries and force ZFS "
"to use 4K sectors. This is safe even with 512 byte sector disks, and has the "
"added benefit of ensuring that pools created on 512 byte disks will be able "
"to have 4K sector disks added in the future, either as additional storage "
"space or as replacements for failed disks. Press the kbd:[Enter] key to "
"chose to activate it or not."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:773
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:706
msgid ""
"`Encrypt Disks?` - Encrypting the disks allows the user to encrypt the disks "
"using GELI. More information about disk encryption is available in crossref:"
"disks[disks-encrypting-geli,“Disk Encryption with geli”]. Press the kbd:"
-"[Enter] key to chose activate it or not."
+"[Enter] key to choose whether to activate it or not."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:774
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:707
msgid ""
"`Partition Scheme` - Choose the partition scheme. GPT is the recommended "
"option in most cases. Press the kbd:[Enter] key to chose between the "
"different options."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:775
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:708
msgid "`Swap Size` - Establish the amount of swap space."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:776
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:709
msgid ""
"`Mirror Swap?` - Whether to mirror the swap between the disks. Be aware that "
"enabling mirror swap will break crash dumps. Press the kbd:[Enter] key to "
"activate it or not."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:777
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:710
msgid ""
"`Encrypt Swap?` - Whether to encrypt the swap. This will encrypt the swap "
"with a temporary key each time the system boots, and discards it on reboot. "
-"Press the kbd:[Enter] key to chose activate it or not. More information "
+"Press the kbd:[Enter] key to choose to activate it or not. More information "
"about swap encryption in crossref:disks[swap-encrypting,“Encrypting Swap”]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:779
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:712
msgid ""
"Select kbd:[T] to configure the `Pool Type` and the disk(s) that will "
"constitute the pool."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:781
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:714
#, no-wrap
msgid "ZFS Pool Type"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:715
+#, no-wrap
+msgid "Menu requesting the Virtual Device type. Ex: stripe"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:782
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:715
#, no-wrap
msgid "bsdinstall-zfs-vdev_type.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:785
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:718
msgid "Here is a summary of the `Pool Type` that can be selected in this menu:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:787
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:720
msgid ""
"`stripe` - Striping provides maximum storage of all connected devices, but "
"no redundancy. If just one disk fails the data on the pool is lost "
"irrevocably."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:788
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:721
msgid ""
"`mirror` - Mirroring stores a complete copy of all data on every disk. "
"Mirroring provides good read performance because data is read from all disks "
"in parallel. Write performance is slower as the data must be written to all "
"disks in the pool. Allows all but one disk to fail. This option requires at "
"least two disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:789
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:722
msgid ""
"`raid10` - Striped mirrors. Provides the best performance, but the least "
"storage. This option needs at least an even number of disks and a minimum of "
"four disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:790
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:723
msgid ""
"`raidz1` - Single Redundant RAID. Allow one disk to fail concurrently. This "
"option needs at least three disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:791
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:724
msgid ""
"`raidz2` - Double Redundant RAID. Allows two disks to fail concurrently. "
"This option needs at least four disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:792
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:725
msgid ""
"`raidz3` - Triple Redundant RAID. Allows three disks to fail concurrently. "
"This option needs at least five disks."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:796
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:729
msgid ""
"Once a `Pool Type` has been selected, a list of available disks is "
"displayed, and the user is prompted to select one or more disks to make up "
"the pool. The configuration is then validated to ensure that enough disks "
"are selected. If validation fails, select btn:[<Change Selection>] to "
"return to the list of disks or btn:[<Back>] to change the `Pool Type`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:798
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:731
#, no-wrap
msgid "Disk Selection"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:732
+#, no-wrap
+msgid "Menu requesting how many disks will be added to the pool"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:799
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:732
#, no-wrap
msgid "bsdinstall-zfs-disk_select.png"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:802
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:735
#, no-wrap
msgid "Invalid Selection"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:736
+#, no-wrap
+msgid "Menu indicating that not enough disks have been selected."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:803
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:736
#, no-wrap
msgid "bsdinstall-zfs-vdev_invalid.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:806
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:739
msgid ""
"If one or more disks are missing from the list, or if disks were attached "
"after the installer was started, select btn:[- Rescan Devices] to repopulate "
"the list of available disks."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:808
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:741
#, no-wrap
msgid "Rescan Devices"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:742
+#, no-wrap
+msgid "Device rescan"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:809
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:742
#, no-wrap
msgid "bsdinstall-zfs-rescan-devices.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:812
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:745
msgid ""
"To avoid accidentally erasing the wrong disk, the btn:[- Disk Info] menu can "
"be used to inspect each disk, including its partition table and various "
"other information such as the device model number and serial number, if "
"available."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:814
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:747
#, no-wrap
msgid "Analyzing a Disk"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:748
+#, no-wrap
+msgid "Menu showing the information of the partitions."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:815
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:748
#, no-wrap
msgid "bsdinstall-zfs-disk_info.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:819
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:752
msgid ""
"Select kbd:[N] to configure the `Pool Name`. Enter the desired name, then "
"select btn:[<OK>] to establish it or btn:[<Cancel>] to return to the main "
"menu and leave the default name."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:821
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:754
#, no-wrap
msgid "Pool Name"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:755
+#, no-wrap
+msgid "Menu requesting the name of the pool."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:822
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:755
#, no-wrap
msgid "bsdinstall-zfs-pool-name.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:826
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:759
msgid ""
"Select kbd:[S] to set the amount of swap. Enter the desired amount of swap, "
"then select btn:[<OK>] to establish it or btn:[<Cancel>] to return to the "
"main menu and let the default amount."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:828
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:761
#, no-wrap
msgid "Swap Amount"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:762
+#, no-wrap
+msgid "Menu requesting the amount of swap memory"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:829
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:762
#, no-wrap
msgid "bsdinstall-zfs-swap-amount.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:833
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:766
msgid ""
"Once all options have been set to the desired values, select the btn:[>>> "
"Install] option at the top of the menu. The installer then offers a last "
"chance to cancel before the contents of the selected drives are destroyed to "
"create the ZFS pool."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:835
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:768
#, no-wrap
msgid "Last Chance"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:769
+#, no-wrap
+msgid "Menu indicating to the user that the data will be lost"
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:836
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:769
#, no-wrap
msgid "bsdinstall-zfs-warning.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:840
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:773
msgid ""
"If GELI disk encryption was enabled, the installer will prompt twice for the "
"passphrase to be used to encrypt the disks. Initialization of the "
"encryption then begins."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:842
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:775
#, no-wrap
msgid "Disk Encryption Password"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:776
+#, no-wrap
+msgid "Menu requesting the password to encrypt the devices."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:843
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:776
#, no-wrap
msgid "bsdinstall-zfs-geli_password.png"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:846
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:779
#, no-wrap
msgid "Initializing Encryption"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:780
+#, no-wrap
+msgid "Menu showing that the encryption is initializing."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:847
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:780
#, no-wrap
msgid "bsdinstall-zfs-init-encription.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:851
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:784
msgid ""
"The installation then proceeds normally. To continue with the installation, "
"go to <<bsdinstall-fetching-distribution>>."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:853
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:786
#, no-wrap
msgid "Shell Mode Partitioning"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:858
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:791
msgid ""
"When creating advanced installations, the bsdinstall partitioning menus may "
"not provide the level of flexibility required. Advanced users can select "
"the btn:[Shell] option from the partitioning menu in order to manually "
-"partition the drives, create the file system(s), populate [.filename]#/tmp/"
-"bsdinstall_etc/fstab#, and mount the file systems under [.filename]#/mnt#. "
-"Once this is done, type `exit` to return to bsdinstall and continue the "
-"installation."
+"partition the drives, create the file system(s), populate `/tmp/"
+"bsdinstall_etc/fstab`, and mount the file systems under `/mnt`. Once this "
+"is done, type `exit` to return to bsdinstall and continue the installation."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:860
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:869
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:793
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:802
#, no-wrap
msgid "Fetching Distribution Files"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:864
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:797
msgid ""
"Installation time will vary depending on the distributions chosen, "
"installation media, and speed of the computer. A series of messages will "
"indicate the progress."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:867
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:800
msgid ""
"First, the installer formats the selected disk(s) and initializes the "
"partitions. Next, in the case of a `bootonly media` or `mini memstick`, it "
"downloads the selected components:"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:803
+#, no-wrap
+msgid "Menu showing the download of the different components."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:870
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:803
#, no-wrap
msgid "bsdinstall-distfile-fetching.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:873
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:806
msgid ""
"Next, the integrity of the distribution files is verified to ensure they "
"have not been corrupted during download or misread from the installation "
"media:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:875
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:808
#, no-wrap
msgid "Verifying Distribution Files"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:809
+#, no-wrap
+msgid "Menu showing the verification of the different components."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:876
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:809
#, no-wrap
msgid "bsdinstall-distfile-verifying.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:879
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:812
msgid "Finally, the verified distribution files are extracted to the disk:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:881
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:814
#, no-wrap
msgid "Extracting Distribution Files"
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:815
+#, no-wrap
+msgid "Menu showing the extraction of the different components."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:882
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:815
#, no-wrap
msgid "bsdinstall-distfile-extracting.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:886
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:819
msgid ""
"Once all requested distribution files have been extracted, bsdinstall "
"displays the first post-installation configuration screen. The available "
"post-configuration options are described in the next section."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:888
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:821
#, no-wrap
-msgid "Accounts, Time Zone, Services and Hardening"
+msgid "Network Interfaces, Accounts, Time Zone, Services and Hardening"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:891
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:898
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:824
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:831
#, no-wrap
msgid "Setting the `root` Password"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:896
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:829
msgid ""
"First, the `root` password must be set. While entering the password, the "
"characters being typed are not displayed on the screen. The password must "
"be entered twice to prevent typing errors."
msgstr ""
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:832
+#, no-wrap
+msgid "Menu showing requesting the password for the root user."
+msgstr ""
+
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:899
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:832
#, no-wrap
msgid "bsdinstall-post-root-passwd.png"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:902
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:835
#, no-wrap
-msgid "Setting the Time Zone"
+msgid "Configuring Network Interfaces"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:906
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:839
msgid ""
-"The next series of menus are used to determine the correct local time by "
-"selecting the geographic region, country, and time zone. Setting the time "
-"zone allows the system to automatically correct for regional time changes, "
-"such as daylight savings time, and perform other time zone related functions "
-"properly."
+"Next, a list of the network interfaces found on the computer is shown. "
+"Select the interface to configure."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:909
-msgid ""
-"The example shown here is for a machine located in the mainland time zone of "
-"Spain, Europe. The selections will vary according to the geographical "
-"location."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:841
+#, no-wrap
+msgid "Choose a Network Interface"
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:911
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:842
#, no-wrap
-msgid "Select a Region"
+msgid "Menu showing the different network interfaces to configure."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:912
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:842
#, no-wrap
-msgid "bsdinstall-timezone-region.png"
+msgid "bsdinstall-configure-network-interface.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:915
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:846
msgid ""
-"The appropriate region is selected using the arrow keys and then pressing "
-"kbd:[Enter]."
+"If an Ethernet interface is selected, the installer will skip ahead to the "
+"menu shown in <<bsdinstall-configure-net-ipv4>>. If a wireless network "
+"interface is chosen, the system will instead scan for wireless access points:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:917
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:848
#, no-wrap
-msgid "Select a Country"
+msgid "Scanning for Wireless Access Points"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:849
+#, no-wrap
+msgid "Menu showing wireless network scanning."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:918
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:849
#, no-wrap
-msgid "bsdinstall-timezone-country.png"
+msgid "bsdinstall-configure-wireless-scan.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:921
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:856
msgid ""
-"Select the appropriate country using the arrow keys and press kbd:[Enter]."
+"Wireless networks are identified by a Service Set Identifier (SSID); a "
+"short, unique name given to each network. SSIDs found during the scan are "
+"listed, followed by a description of the encryption types available for that "
+"network. If the desired SSID does not appear in the list, select btn:"
+"[Rescan] to scan again. If the desired network still does not appear, check "
+"for problems with antenna connections or try moving the computer closer to "
+"the access point. Rescan after each change is made."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:923
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:858
#, no-wrap
-msgid "Select a Time Zone"
+msgid "Choosing a Wireless Network"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:859
+#, no-wrap
+msgid "Menu showing the different wireless networks to connect to."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:924
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:859
#, no-wrap
-msgid "bsdinstall-timezone-zone.png"
+msgid "bsdinstall-configure-wireless-accesspoints.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:927
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:865
msgid ""
-"The appropriate time zone is selected using the arrow keys and pressing kbd:"
-"[Enter]."
+"Next, enter the encryption information for connecting to the selected "
+"wireless network. WPA2 encryption is strongly recommended over older "
+"encryption types such as WEP, which offer little security. If the network "
+"uses WPA2, input the password, also known as the Pre-Shared Key (PSK). For "
+"security reasons, the characters typed into the input box are displayed as "
+"asterisks."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:929
-#, no-wrap
-msgid "Confirm Time Zone"
-msgstr ""
-
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:930
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:867
#, no-wrap
-msgid "bsdinstall-timezone-confirm.png"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:933
-msgid "Confirm the abbreviation for the time zone is correct."
+msgid "WPA2 Setup"
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:935
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:868
#, no-wrap
-msgid "Select Date"
+msgid "Menu requesting the wireless network password."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:936
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:868
#, no-wrap
-msgid "bsdinstall-timezone-date.png"
+msgid "bsdinstall-configure-wireless-wpa2setup.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:940
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:871
msgid ""
-"The appropriate date is selected using the arrow keys and then pressing btn:"
-"[Set Date]. Otherwise, the date selection can be skipped by pressing btn:"
-"[Skip]."
+"Next, choose whether or not an IPv4 address should be configured on the "
+"Ethernet or wireless interface:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:942
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:873
#, no-wrap
-msgid "Select Time"
+msgid "Choose IPv4 Networking"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:874
+#, no-wrap
+msgid "Menu indicating if IPv4 wants to be configured for the selected interface."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:943
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:874
#, no-wrap
-msgid "bsdinstall-timezone-time.png"
+msgid "bsdinstall-configure-network-interface-ipv4.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:947
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:879
msgid ""
-"The appropriate time is selected using the arrow keys and then pressing btn:"
-"[Set Time]. Otherwise, the time selection can be skipped by pressing btn:"
-"[Skip]."
-msgstr ""
+"There are two methods of IPv4 configuration. DHCP will automatically "
+"configure the network interface correctly and should be used if the network "
+"provides a DHCP server. Otherwise, the addressing information needs to be "
+"input manually as a static configuration."
+msgstr ""
-#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:949
-#, no-wrap
-msgid "Enabling Services"
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:884
+msgid ""
+"Do not enter random network information as it will not work. If a DHCP "
+"server is not available, obtain the information listed in <<bsdinstall-"
+"collect-network-information, Required Network Information>> from the network "
+"administrator or Internet service provider."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:954
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:888
msgid ""
-"The next menu is used to configure which system services will be started "
-"whenever the system boots. All of these services are optional. Only start "
-"the services that are needed for the system to function."
+"If a DHCP server is available, select btn:[Yes] in the next menu to "
+"automatically configure the network interface. The installer will appear to "
+"pause for a minute or so as it finds the DHCP server and obtains the "
+"addressing information for the system."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:956
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:890
#, no-wrap
-msgid "Selecting Additional Services to Enable"
+msgid "Choose IPv4 DHCP Configuration"
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:957
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:891
#, no-wrap
-msgid "bsdinstall-config-services.png"
+msgid "Menu indicating if DHCP wants to be configured for the selected interface."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:960
-msgid "Here is a summary of the services that can be enabled in this menu:"
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:891
+#, no-wrap
+msgid "bsdinstall-configure-network-interface-ipv4-dhcp.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:962
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:894
msgid ""
-"`local_unbound` - Enable the DNS local unbound. It is necessary to keep in "
-"mind that this is the unbound of the base system and is only meant for use "
-"as a local caching forwarding resolver. If the objective is to set up a "
-"resolver for the entire network install package:dns/unbound[]."
+"If a DHCP server is not available, select btn:[No] and input the following "
+"addressing information in this menu:"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:963
-msgid ""
-"`sshd` - The Secure Shell (SSH) daemon is used to remotely access a system "
-"over an encrypted connection. Only enable this service if the system should "
-"be available for remote logins."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:896
+#, no-wrap
+msgid "IPv4 Static Configuration"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:964
-msgid ""
-"`moused` - Enable this service if the mouse will be used from the command-"
-"line system console."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:897
+#, no-wrap
+msgid "Menu requesting data to configure IPv4 network."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:965
-msgid ""
-"`ntpdate` - Enable the automatic clock synchronization at boot time. The "
-"functionality of this program is now available in the man:ntpd[8] daemon. "
-"After a suitable period of mourning, the man:ntpdate[8] utility will be "
-"retired."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:897
+#, no-wrap
+msgid "bsdinstall-configure-network-interface-ipv4-static.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:966
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:900
msgid ""
-"`ntpd` - The Network Time Protocol (NTP) daemon for automatic clock "
-"synchronization. Enable this service if there is a Windows(R), Kerberos, or "
-"LDAP server on the network."
+"`IP Address` - The IPv4 address assigned to this computer. The address must "
+"be unique and not already in use by another device on the local network."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:967
-msgid ""
-"`powerd` - System power control utility for power control and energy saving."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:901
+msgid "`Subnet Mask` - The subnet mask for the network."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:968
-msgid ""
-"`dumpdev` - Crash dumps are useful when debugging issues with the system, so "
-"users are encouraged to enable them."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:970
-#, no-wrap
-msgid "Enabling Hardening Security Options"
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:902
+msgid "`Default Router` - The IP address of the network's default gateway."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:975
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:904
msgid ""
-"The next menu is used to configure which security options will be enabled. "
-"All of these options are optional. But their use is encouraged."
+"The next screen will ask if the interface should be configured for IPv6. If "
+"IPv6 is available and desired, choose btn:[Yes] to select it."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:977
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:906
#, no-wrap
-msgid "Selecting Hardening Security Options"
+msgid "Choose IPv6 Networking"
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:978
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:907
#, no-wrap
-msgid "bsdinstall-hardening.png"
+msgid "Menu indicating if IPv6 wants to be configured for the selected interface."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:981
-msgid "Here is a summary of the options that can be enabled in this menu:"
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:907
+#, no-wrap
+msgid "bsdinstall-configure-network-interface-ipv6.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:983
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:913
msgid ""
-"`hide_uids` - Hide processes running as other users (UID). This prevents "
-"unprivileged users from seeing running processes from other users."
+"IPv6 also has two methods of configuration. StateLess Address "
+"AutoConfiguration (SLAAC) will automatically request the correct "
+"configuration information from a local router. Refer to http://tools.ietf."
+"org/html/rfc4862[rfc4862] for more information. Static configuration "
+"requires manual entry of network information."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:984
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:916
msgid ""
-"`hide_gids` - Hide processes running as other groups (GID). This prevents "
-"unprivileged users from seeing running processes from other groups."
+"If an IPv6 router is available, select btn:[Yes] in the next menu to "
+"automatically configure the network interface. The installer will appear to "
+"pause for a minute or so as it finds the router and obtains the addressing "
+"information for the system."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:985
-msgid ""
-"`hide_jail` - Hide processes running in jails. This prevents unprivileged "
-"users from seeing processes running inside jails."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:918
+#, no-wrap
+msgid "Choose IPv6 SLAAC Configuration"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:986
-msgid ""
-"`read_msgbuf` - Disable reading kernel message buffer for unprivileged "
-"users. Prevent unprivileged users from using man:dmesg[8] to view messages "
-"from the kernel's log buffer."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:919
+#, no-wrap
+msgid "Menu indicating if SLAAC wants to be configured for the selected interface."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:987
-msgid ""
-"`proc_debug` - Disable process debugging facilities for unprivileged users. "
-"Disables a variety of unprivileged inter-process debugging services, "
-"including some procfs functionality, `ptrace()`, and `ktrace()`. Please note "
-"that this will also prevent debugging tools such as man:lldb[1], man:"
-"truss[1] and man:procstat[1], as well as some built-in debugging facilities "
-"in certain scripting languages like PHP."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:919
+#, no-wrap
+msgid "bsdinstall-configure-network-interface-slaac.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:988
-msgid "`random_pid` - Randomize the PID of processes."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:922
+msgid ""
+"If an IPv6 router is not available, select btn:[No] and input the following "
+"addressing information in this menu:"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:989
-msgid "`clear_tmp` - Clean [.filename]#/tmp# when the system starts up."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:924
+#, no-wrap
+msgid "IPv6 Static Configuration"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:990
-msgid ""
-"`disable_syslogd` - Disable opening the syslogd network socket. By default, "
-"FreeBSD runs syslogd in a secure way with `-s`. This prevents the daemon "
-"from listening for incoming UDP requests on port 514. With this option "
-"enabled, syslogd will instead run with `-ss`, which prevents syslogd from "
-"opening any port. For more information, see man:syslogd[8]."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:925
+#, no-wrap
+msgid "Menu requesting data to configure IPv6 network."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:991
-msgid "`disable_sendmail` - Disable the sendmail mail transport agent."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:925
+#, no-wrap
+msgid "bsdinstall-configure-network-interface-ipv6-static.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:992
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:928
msgid ""
-"`secure_console` - Make the command prompt request the `root` password when "
-"entering single-user mode."
+"`IPv6 Address` - The IPv6 address assigned to this computer. The address "
+"must be unique and not already in use by another device on the local network."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:993
-msgid ""
-"`disable_ddtrace` - DTrace can run in a mode that affects the running "
-"kernel. Destructive actions may not be used unless explicitly enabled. Use `-"
-"w` to enable this option when using DTrace. For more information, see man:"
-"dtrace[1]."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:995
-#, no-wrap
-msgid "Add Users"
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:929
+msgid "`Default Router` - The IPv6 address of the network's default gateway."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1001
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:935
msgid ""
-"The next menu prompts to create at least one user account. It is "
-"recommended to log into the system using a user account rather than as "
-"`root`. When logged in as `root`, there are essentially no limits or "
-"protection on what can be done. Logging in as a normal user is safer and "
-"more secure."
+"The last network configuration menu is used to configure the Domain Name "
+"System (DNS) resolver, which converts hostnames to and from network "
+"addresses. If DHCP or SLAAC was used to autoconfigure the network "
+"interface, the `Resolver Configuration` values may already be filled in. "
+"Otherwise, enter the local network's domain name in the `Search` field. "
+"`DNS #1` and `DNS #2` are the IPv4 and/or IPv6 addresses of the DNS "
+"servers. At least one DNS server is required."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1003
-msgid "Select btn:[Yes] to add new users."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:937
+#, no-wrap
+msgid "DNS Configuration"
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1005
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:938
#, no-wrap
-msgid "Add User Accounts"
+msgid "Menu requesting data to configure DNS for the network."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1006
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:938
#, no-wrap
-msgid "bsdinstall-adduser1.png"
+msgid "bsdinstall-configure-network-ipv4-dns.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1010
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:942
msgid ""
-"Follow the prompts and input the requested information for the user "
-"account. The example shown in <<bsdinstall-add-user2>> creates the "
-"`asample` user account."
+"Once the interface is configured, select a mirror site that is located in "
+"the same region of the world as the computer on which FreeBSD is being "
+"installed. Files can be retrieved more quickly when the mirror is close to "
+"the target computer, reducing installation time."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1012
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:944
#, no-wrap
-msgid "Enter User Information"
+msgid "Choosing a Mirror"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:945
+#, no-wrap
+msgid "Menu requesting a network mirror."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1013
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:945
#, no-wrap
-msgid "bsdinstall-adduser2.png"
+msgid "bsdinstall-netinstall-mirrorselect.png"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1016
-msgid "Here is a summary of the information to input:"
+#. type: Title ===
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:948
+#, no-wrap
+msgid "Setting the Time Zone"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1018
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:952
msgid ""
-"`Username` - The name the user will enter to log in. A common convention is "
-"to use the first letter of the first name combined with the last name, as "
-"long as each username is unique for the system. The username is case "
-"sensitive and should not contain any spaces."
+"The next series of menus are used to determine the correct local time by "
+"selecting the geographic region, country, and time zone. Setting the time "
+"zone allows the system to automatically correct for regional time changes, "
+"such as daylight savings time, and perform other time zone related functions "
+"properly."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1019
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:955
msgid ""
-"`Full name` - The user's full name. This can contain spaces and is used as a "
-"description for the user account."
+"The example shown here is for a machine located in the mainland time zone of "
+"Spain, Europe. The selections will vary according to the geographical "
+"location."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1020
-msgid ""
-"`Uid` - User ID. This is typically left blank so the system automatically "
-"assigns a value."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:957
+#, no-wrap
+msgid "Select a Region"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1021
-msgid ""
-"`Login group` - The user's group. This is typically left blank to accept the "
-"default."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:958
+#, no-wrap
+msgid "Menu requesting the timezone region."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1022
-msgid ""
-"`Invite _user_ into other groups?` - Additional groups to which the user "
-"will be added as a member. If the user needs administrative access, type "
-"`wheel` here."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:958
+#, no-wrap
+msgid "bsdinstall-timezone-region.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1023
-msgid "`Login class` - Typically left blank for the default."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:961
+msgid ""
+"The appropriate region is selected using the arrow keys and then pressing "
+"kbd:[Enter]."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1024
-msgid ""
-"`Shell` - Type in one of the listed values to set the interactive shell for "
-"the user. Refer to crossref:basics[shells,Shells] for more information about "
-"shells."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:963
+#, no-wrap
+msgid "Select a Country"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1025
-msgid ""
-"`Home directory` - The user's home directory. The default is usually correct."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:964
+#, no-wrap
+msgid "Menu requesting the timezone country."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1026
-msgid ""
-"`Home directory permissions` - Permissions on the user's home directory. The "
-"default is usually correct."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:964
+#, no-wrap
+msgid "bsdinstall-timezone-country.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1027
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:967
msgid ""
-"`Use password-based authentication?` - Typically `yes` so that the user is "
-"prompted to input their password at login."
+"Select the appropriate country using the arrow keys and press kbd:[Enter]."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1028
-msgid ""
-"`Use an empty password?` - Typically `no` as empty or blank passwords are "
-"insecure."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:969
+#, no-wrap
+msgid "Select a Time Zone"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1029
-msgid ""
-"`Use a random password?` - Typically `no` so that the user can set their own "
-"password in the next prompt."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:970
+#, no-wrap
+msgid "Menu requesting the timezone zone."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1030
-msgid ""
-"`Enter password` - The password for this user. Typed-in characters will not "
-"be shown on the screen."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:970
+#, no-wrap
+msgid "bsdinstall-timezone-zone.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1031
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:973
msgid ""
-"`Enter password again` - The password must be typed again for verification."
+"The appropriate time zone is selected using the arrow keys and pressing kbd:"
+"[Enter]."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1032
-msgid ""
-"`Lock out the account after creation?` - Typically `no` so that the user can "
-"log in."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:975
+#, no-wrap
+msgid "Confirm Time Zone"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:976
+#, no-wrap
+msgid "Menu requesting confirmation of the selected timezone."
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:976
+#, no-wrap
+msgid "bsdinstall-timezone-confirm.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1036
-msgid ""
-"After entering all the details, a summary is shown for review. If a mistake "
-"was made, enter `no` to correct it. Once everything is correct, enter `yes` "
-"to create the new user."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:979
+msgid "Confirm the abbreviation for the time zone is correct."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1038
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:981
#, no-wrap
-msgid "Exit User and Group Management"
+msgid "Select Date"
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1039
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:982
#, no-wrap
-msgid "bsdinstall-adduser3.png"
+msgid "Menu requesting the system date."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1043
-msgid ""
-"If there are more users to add, answer the `Add another user?` question with "
-"`yes`. Enter `no` to finish adding users and continue the installation."
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:982
+#, no-wrap
+msgid "bsdinstall-timezone-date.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1045
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:986
msgid ""
-"For more information on adding users and user management, see crossref:"
-"basics[users-synopsis,Users and Basic Account Management]."
+"The appropriate date is selected using the arrow keys and then pressing btn:"
+"[Set Date]. Otherwise, the date selection can be skipped by pressing btn:"
+"[Skip]."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1047
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1052
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:988
#, no-wrap
-msgid "Final Configuration"
+msgid "Select Time"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1050
-msgid ""
-"After everything has been installed and configured, a final chance is "
-"provided to modify settings."
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:989
+#, no-wrap
+msgid "Menu requesting the system time."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1053
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:989
#, no-wrap
-msgid "bsdinstall-finalconfiguration.png"
+msgid "bsdinstall-timezone-time.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1056
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:993
msgid ""
-"Use this menu to make any changes or to do any additional configuration "
-"before completing the installation."
+"The appropriate time is selected using the arrow keys and then pressing btn:"
+"[Set Time]. Otherwise, the time selection can be skipped by pressing btn:"
+"[Skip]."
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1058
-msgid "`Add User` - Described in <<bsdinstall-addusers>>."
+#. type: Title ===
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:995
+#, no-wrap
+msgid "Enabling Services"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1059
-msgid "`Root Password` - Described in <<bsdinstall-post-root>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1000
+msgid ""
+"The next menu is used to configure which system services will be started "
+"whenever the system boots. All of these services are optional. Only start "
+"the services that are needed for the system to function."
+msgstr ""
+
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1002
+#, no-wrap
+msgid "Selecting Additional Services to Enable"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1003
+#, no-wrap
+msgid "Menu showing the different services available."
+msgstr ""
+
+#. type: Target for macro image
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1003
+#, no-wrap
+msgid "bsdinstall-config-services.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1060
-msgid "`Hostname` - Described in <<bsdinstall-hostname>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1006
+msgid "Here is a summary of the services that can be enabled in this menu:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1061
-msgid "`Network` - Described in <<bsdinstall-config-network-dev>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1008
+msgid ""
+"`local_unbound` - Enable the DNS local unbound. It is necessary to keep in "
+"mind that this is a configuration only meant for use as a local caching "
+"forwarding resolver. If the objective is to set up a resolver for the entire "
+"network, install package:dns/unbound[]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1062
-msgid "`Services` - Described in <<bsdinstall-sysconf>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1009
+msgid ""
+"`sshd` - The Secure Shell (SSH) daemon is used to remotely access a system "
+"over an encrypted connection. Only enable this service if the system should "
+"be available for remote logins."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1063
-msgid "`System Hardening` - Described in <<bsdinstall-hardening>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1010
+msgid ""
+"`moused` - Enable this service if the mouse will be used from the command-"
+"line system console."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1064
-msgid "`Time Zone` - Described in <<bsdinstall-timezone>>."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1011
+msgid ""
+"`ntpdate` - Enable automatic clock synchronization at boot time. Note that "
+"the functionality of this program is now available in the man:ntpd[8] daemon "
+"and the man:ntpdate[8] utility will soon be retired."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1065
-msgid "`Handbook` - Download and install the FreeBSD Handbook."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1012
+msgid ""
+"`ntpd` - The Network Time Protocol (NTP) daemon for automatic clock "
+"synchronization. Enable this service if you wish to synchronise your system "
+"clock with a remote time server or pool."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1067
-msgid "Once configuration is complete, select btn:[Exit]."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1013
+msgid ""
+"`powerd` - System power control utility for power control and energy saving."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1069
-#, no-wrap
-msgid "Manual Configuration"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1014
+msgid ""
+"`dumpdev` - Crash dumps are useful when debugging issues with the system, so "
+"users are encouraged to enable them."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1070
+#. type: Title ===
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1016
#, no-wrap
-msgid "bsdinstall-final-modification-shell.png"
+msgid "Enabling Hardening Security Options"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1074
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1021
msgid ""
-"bsdinstall will prompt for any additional configuration that needs to be "
-"done before rebooting into the new system. Select btn:[Yes] to exit to a "
-"shell within the new system or btn:[No] to proceed to the last step of the "
-"installation."
+"The next menu is used to configure which security options will be enabled. "
+"All of these options are optional. But their use is encouraged."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1076
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1023
#, no-wrap
-msgid "Complete the Installation"
+msgid "Selecting Hardening Security Options"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1024
+#, no-wrap
+msgid "Menu shoring the different hardening security options."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1077
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1024
#, no-wrap
-msgid "bsdinstall-mainexit.png"
+msgid "bsdinstall-hardening.png"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1080
-msgid ""
-"If further configuration or special setup is needed, select btn:[Live CD] to "
-"boot the install media into Live CD mode."
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1027
+msgid "Here is a summary of the options that can be enabled in this menu:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1083
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1029
msgid ""
-"If the installation is complete, select btn:[Reboot] to reboot the computer "
-"and start the new FreeBSD system. Do not forget to remove the FreeBSD "
-"install media or the computer might boot from it again."
+"`hide_uids` - Hide processes running as other users (UID). This prevents "
+"unprivileged users from seeing running processes from other users."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1089
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1030
msgid ""
-"As FreeBSD boots, informational messages are displayed. After the system "
-"finishes booting, a login prompt is displayed. At the `login:` prompt, "
-"enter the username added during the installation. Avoid logging in as "
-"`root`. Refer to crossref:basics[users-superuser,The Superuser Account] for "
-"instructions on how to become the superuser when administrative access is "
-"needed."
+"`hide_gids` - Hide processes running as other groups (GID). This prevents "
+"unprivileged users from seeing running processes from other groups."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1095
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1031
msgid ""
-"The messages that appear during boot can be reviewed by pressing kbd:[Scroll-"
-"Lock] to turn on the scroll-back buffer. The kbd:[PgUp], kbd:[PgDn], and "
-"arrow keys can be used to scroll back through the messages. When finished, "
-"press kbd:[Scroll-Lock] again to unlock the display and return to the "
-"console. To review these messages once the system has been up for some "
-"time, type `less /var/run/dmesg.boot` from a command prompt. Press kbd:[q] "
-"to return to the command line after viewing."
+"`hide_jail` - Hide processes running in jails. This prevents unprivileged "
+"users from seeing processes running inside jails."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1099
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1032
msgid ""
-"If sshd was enabled in <<bsdinstall-config-serv>>, the first boot might be a "
-"bit slower as the system generates SSH host keys. Subsequent boots will be "
-"faster. The fingerprints of the keys are then displayed as in the following "
-"example:"
+"`read_msgbuf` - Disable reading kernel message buffer for unprivileged "
+"users. Prevent unprivileged users from using man:dmesg[8] to view messages "
+"from the kernel's log buffer."
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1137
-#, no-wrap
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1033
msgid ""
-"Generating public/private rsa1 key pair.\n"
-"Your identification has been saved in /etc/ssh/ssh_host_key.\n"
-"Your public key has been saved in /etc/ssh/ssh_host_key.pub.\n"
-"The key fingerprint is:\n"
-"10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com\n"
-"The key's randomart image is:\n"
-"+--[RSA1 1024]----+\n"
-"| o.. |\n"
-"| o . . |\n"
-"| . o |\n"
-"| o |\n"
-"| o S |\n"
-"| + + o |\n"
-"|o . + * |\n"
-"|o+ ..+ . |\n"
-"|==o..o+E |\n"
-"+-----------------+\n"
-"Generating public/private dsa key pair.\n"
-"Your identification has been saved in /etc/ssh/ssh_host_dsa_key.\n"
-"Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.\n"
-"The key fingerprint is:\n"
-"7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com\n"
-"The key's randomart image is:\n"
-"+--[ DSA 1024]----+\n"
-"| .. . .|\n"
-"| o . . + |\n"
-"| . .. . E .|\n"
-"| . . o o . . |\n"
-"| + S = . |\n"
-"| + . = o |\n"
-"| + . * . |\n"
-"| . . o . |\n"
-"| .o. . |\n"
-"+-----------------+\n"
-"Starting sshd.\n"
+"`proc_debug` - Disable process debugging facilities for unprivileged users. "
+"Disables a variety of unprivileged inter-process debugging services, "
+"including some procfs functionality, `ptrace()`, and `ktrace()`. Please note "
+"that this will also prevent debugging tools such as man:lldb[1], man:"
+"truss[1] and man:procstat[1], as well as some built-in debugging facilities "
+"in certain scripting languages like PHP."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1140
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1034
+msgid "`random_pid` - Randomize the PID of processes."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1035
+msgid "`clear_tmp` - Clean `/tmp` when the system starts up."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1036
msgid ""
-"Refer to crossref:security[openssh,\"OpenSSH\"] for more information about "
-"fingerprints and SSH."
+"`disable_syslogd` - Disable opening the syslogd network socket. By default, "
+"FreeBSD runs syslogd in a secure way with `-s`. This prevents the daemon "
+"from listening for incoming UDP requests on port 514. With this option "
+"enabled, syslogd will instead run with `-ss`, which prevents syslogd from "
+"opening any port. For more information, see man:syslogd[8]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1143
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1037
+msgid "`disable_sendmail` - Disable the sendmail mail transport agent."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1038
msgid ""
-"FreeBSD does not install a graphical environment by default. Refer to "
-"crossref:x11[x11,The X Window System] for more information about installing "
-"and configuring a graphical window manager."
+"`secure_console` - Make the command prompt request the `root` password when "
+"entering single-user mode."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1147
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1039
msgid ""
-"Proper shutdown of a FreeBSD computer helps protect data and hardware from "
-"damage. _Do not turn off the power before the system has been properly shut "
-"down!_ If the user is a member of the `wheel` group, become the superuser by "
-"typing `su` at the command line and entering the `root` password. Then, "
-"type `shutdown -p now` and the system will shut down cleanly, and, if the "
-"hardware supports it, turn itself off."
+"`disable_ddtrace` - DTrace can run in a mode that affects the running "
+"kernel. Destructive actions may not be used unless explicitly enabled. Use `-"
+"w` to enable this option when using DTrace. For more information, see man:"
+"dtrace[1]."
msgstr ""
-#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1149
-#, no-wrap
-msgid "Network Interfaces"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1040
+msgid ""
+"`enable_aslr` - Enable address layout randomization. For more information "
+"about address layout randomization the link:https://en.wikipedia.org/wiki/"
+"Address_space_layout_randomization[Wikipedia article] can be consulted."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1152
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1042
#, no-wrap
-msgid "Configuring Network Interfaces"
+msgid "Add Users"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1156
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1048
msgid ""
-"Next, a list of the network interfaces found on the computer is shown. "
-"Select the interface to configure."
+"The next menu prompts to create at least one user account. It is "
+"recommended to log into the system using a user account rather than as "
+"`root`. When logged in as `root`, there are essentially no limits or "
+"protection on what can be done. Logging in as a normal user is safer and "
+"more secure."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1050
+msgid "Select btn:[Yes] to add new users."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1158
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1052
#, no-wrap
-msgid "Choose a Network Interface"
+msgid "Add User Accounts"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1053
+#, no-wrap
+msgid "Menu requesting if a user want to be added to the system."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1159
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1053
#, no-wrap
-msgid "bsdinstall-configure-network-interface.png"
+msgid "bsdinstall-adduser1.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1163
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1057
msgid ""
-"If an Ethernet interface is selected, the installer will skip ahead to the "
-"menu shown in <<bsdinstall-configure-net-ipv4>>. If a wireless network "
-"interface is chosen, the system will instead scan for wireless access points:"
+"Follow the prompts and input the requested information for the user "
+"account. The example shown in <<bsdinstall-add-user2>> creates the "
+"`asample` user account."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1165
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1059
#, no-wrap
-msgid "Scanning for Wireless Access Points"
+msgid "Enter User Information"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1060
+#, no-wrap
+msgid "Menu requesting different information for the new user."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1166
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1060
#, no-wrap
-msgid "bsdinstall-configure-wireless-scan.png"
+msgid "bsdinstall-adduser2.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1173
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1063
+msgid "Here is a summary of the information to input:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1065
msgid ""
-"Wireless networks are identified by a Service Set Identifier (SSID), a "
-"short, unique name given to each network. SSIDs found during the scan are "
-"listed, followed by a description of the encryption types available for that "
-"network. If the desired SSID does not appear in the list, select btn:"
-"[Rescan] to scan again. If the desired network still does not appear, check "
-"for problems with antenna connections or try moving the computer closer to "
-"the access point. Rescan after each change is made."
+"`Username` - The name the user will enter to log in. A common convention is "
+"to use the first letter of the first name combined with the last name, as "
+"long as each username is unique for the system. The username is case "
+"sensitive and should not contain any spaces."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1175
-#, no-wrap
-msgid "Choosing a Wireless Network"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1066
+msgid ""
+"`Full name` - The user's full name. This can contain spaces and is used as a "
+"description for the user account."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1176
-#, no-wrap
-msgid "bsdinstall-configure-wireless-accesspoints.png"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1067
+msgid ""
+"`Uid` - User ID. This is typically left blank so the system automatically "
+"assigns a value."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1182
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1068
msgid ""
-"Next, enter the encryption information for connecting to the selected "
-"wireless network. WPA2 encryption is strongly recommended over older "
-"encryption types such as WEP, which offer little security. If the network "
-"uses WPA2, input the password, also known as the Pre-Shared Key (PSK). For "
-"security reasons, the characters typed into the input box are displayed as "
-"asterisks."
+"`Login group` - The user's group. This is typically left blank to accept the "
+"default."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1184
-#, no-wrap
-msgid "WPA2 Setup"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1069
+msgid ""
+"`Invite _user_ into other groups?` - Additional groups to which the user "
+"will be added as a member. If the user needs administrative access, type "
+"`wheel` here."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1070
+msgid "`Login class` - Typically left blank for the default."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1071
+msgid ""
+"`Shell` - Type in one of the listed values to set the interactive shell for "
+"the user. Refer to crossref:basics[shells,Shells] for more information about "
+"shells."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1072
+msgid ""
+"`Home directory` - The user's home directory. The default is usually correct."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1073
+msgid ""
+"`Home directory permissions` - Permissions on the user's home directory. The "
+"default is usually correct."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1074
+msgid ""
+"`Use password-based authentication?` - Typically `yes` so that the user is "
+"prompted to input their password at login."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1075
+msgid ""
+"`Use an empty password?` - Typically `no` as empty or blank passwords are "
+"insecure."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1076
+msgid ""
+"`Use a random password?` - Typically `no` so that the user can set their own "
+"password in the next prompt."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1077
+msgid ""
+"`Enter password` - The password for this user. Typed-in characters will not "
+"be shown on the screen."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1078
+msgid ""
+"`Enter password again` - The password must be typed again for verification."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1079
+msgid ""
+"`Lock out the account after creation?` - Typically `no` so that the user can "
+"log in."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1083
+msgid ""
+"After entering all the details, a summary is shown for review. If a mistake "
+"was made, enter `no` to correct it. Once everything is correct, enter `yes` "
+"to create the new user."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1185
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1085
#, no-wrap
-msgid "bsdinstall-configure-wireless-wpa2setup.png"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1188
-msgid ""
-"Next, choose whether or not an IPv4 address should be configured on the "
-"Ethernet or wireless interface:"
+msgid "Exit User and Group Management"
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1190
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1086
#, no-wrap
-msgid "Choose IPv4 Networking"
+msgid "Menu showing the information of the new user and requesting if everything is correct."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1191
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1086
#, no-wrap
-msgid "bsdinstall-configure-network-interface-ipv4.png"
+msgid "bsdinstall-adduser3.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1196
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1090
msgid ""
-"There are two methods of IPv4 configuration. DHCP will automatically "
-"configure the network interface correctly and should be used if the network "
-"provides a DHCP server. Otherwise, the addressing information needs to be "
-"input manually as a static configuration."
+"If there are more users to add, answer the `Add another user?` question with "
+"`yes`. Enter `no` to finish adding users and continue the installation."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1201
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1092
msgid ""
-"Do not enter random network information as it will not work. If a DHCP "
-"server is not available, obtain the information listed in <<bsdinstall-"
-"collect-network-information, Required Network Information>> from the network "
-"administrator or Internet service provider."
+"For more information on adding users and user management, see crossref:"
+"basics[users-synopsis,Users and Basic Account Management]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1205
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1094
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1099
+#, no-wrap
+msgid "Final Configuration"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1097
msgid ""
-"If a DHCP server is available, select btn:[Yes] in the next menu to "
-"automatically configure the network interface. The installer will appear to "
-"pause for a minute or so as it finds the DHCP server and obtains the "
-"addressing information for the system."
+"After everything has been installed and configured, a final chance is "
+"provided to modify settings."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1207
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1100
#, no-wrap
-msgid "Choose IPv4DHCP Configuration"
+msgid "Menu showing different options to perform before finishing the installation. Ex: Add user"
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1208
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1100
#, no-wrap
-msgid "bsdinstall-configure-network-interface-ipv4-dhcp.png"
+msgid "bsdinstall-finalconfiguration.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1211
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1103
msgid ""
-"If a DHCP server is not available, select btn:[No] and input the following "
-"addressing information in this menu:"
+"Use this menu to make any changes or to do any additional configuration "
+"before completing the installation."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1213
-#, no-wrap
-msgid "IPv4 Static Configuration"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1105
+msgid "`Add User` - Described in <<bsdinstall-addusers>>."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1214
-#, no-wrap
-msgid "bsdinstall-configure-network-interface-ipv4-static.png"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1106
+msgid "`Root Password` - Described in <<bsdinstall-post-root>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1217
-msgid ""
-"`IP Address` - The IPv4 address assigned to this computer. The address must "
-"be unique and not already in use by another device on the local network."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1107
+msgid "`Hostname` - Described in <<bsdinstall-hostname>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1218
-msgid "`Subnet Mask` - The subnet mask for the network."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1108
+msgid "`Network` - Described in <<bsdinstall-config-network-dev>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1219
-msgid "`Default Router` - The IP address of the network's default gateway."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1109
+msgid "`Services` - Described in <<bsdinstall-sysconf>>."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1221
-msgid ""
-"The next screen will ask if the interface should be configured for IPv6. If "
-"IPv6 is available and desired, choose btn:[Yes] to select it."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1110
+msgid "`System Hardening` - Described in <<bsdinstall-hardening>>."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1223
-#, no-wrap
-msgid "Choose IPv6 Networking"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1111
+msgid "`Time Zone` - Described in <<bsdinstall-timezone>>."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1224
-#, no-wrap
-msgid "bsdinstall-configure-network-interface-ipv6.png"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1112
+msgid "`Handbook` - Download and install the FreeBSD Handbook."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1230
-msgid ""
-"IPv6 also has two methods of configuration. StateLess Address "
-"AutoConfiguration (SLAAC) will automatically request the correct "
-"configuration information from a local router. Refer to http://tools.ietf."
-"org/html/rfc4862[rfc4862] for more information. Static configuration "
-"requires manual entry of network information."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1114
+msgid "Once configuration is complete, select btn:[Exit]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1233
-msgid ""
-"If an IPv6 router is available, select btn:[Yes] in the next menu to "
-"automatically configure the network interface. The installer will appear to "
-"pause for a minute or so as it finds the router and obtains the addressing "
-"information for the system."
+#. type: Block title
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1116
+#, no-wrap
+msgid "Manual Configuration"
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1235
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1117
#, no-wrap
-msgid "Choose IPv6 SLAAC Configuration"
+msgid "Menu showing that the installation has finished. And asking if you want to open a shell to make manual changes."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1236
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1117
#, no-wrap
-msgid "bsdinstall-configure-network-interface-slaac.png"
+msgid "bsdinstall-final-modification-shell.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1239
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1121
msgid ""
-"If an IPv6 router is not available, select btn:[No] and input the following "
-"addressing information in this menu:"
+"bsdinstall will prompt for any additional configuration that needs to be "
+"done before rebooting into the new system. Select btn:[Yes] to exit to a "
+"shell within the new system or btn:[No] to proceed to the last step of the "
+"installation."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1241
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1123
#, no-wrap
-msgid "IPv6 Static Configuration"
+msgid "Complete the Installation"
+msgstr ""
+
+#. type: Positional ($1) AttributeList argument for macro 'image'
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1124
+#, no-wrap
+msgid "Menu showing that the installation has finished and asking whether to reboot the system or access the Live CD."
msgstr ""
#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1242
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1124
#, no-wrap
-msgid "bsdinstall-configure-network-interface-ipv6-static.png"
+msgid "bsdinstall-mainexit.png"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1245
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1127
msgid ""
-"`IPv6 Address` - The IPv6 address assigned to this computer. The address "
-"must be unique and not already in use by another device on the local network."
+"If further configuration or special setup is needed, select btn:[Live CD] to "
+"boot the install media into Live CD mode."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1246
-msgid "`Default Router` - The IPv6 address of the network's default gateway."
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1130
+msgid ""
+"If the installation is complete, select btn:[Reboot] to reboot the computer "
+"and start the new FreeBSD system. Do not forget to remove the FreeBSD "
+"install media or the computer might boot from it again."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1252
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1136
msgid ""
-"The last network configuration menu is used to configure the Domain Name "
-"System (DNS) resolver, which converts hostnames to and from network "
-"addresses. If DHCP or SLAAC was used to autoconfigure the network "
-"interface, the `Resolver Configuration` values may already be filled in. "
-"Otherwise, enter the local network's domain name in the `Search` field. "
-"`DNS #1` and `DNS #2` are the IPv4 and/or IPv6 addresses of the DNS "
-"servers. At least one DNS server is required."
+"As FreeBSD boots, informational messages are displayed. After the system "
+"finishes booting, a login prompt is displayed. At the `login:` prompt, "
+"enter the username added during the installation. Avoid logging in as "
+"`root`. Refer to crossref:basics[users-superuser,The Superuser Account] for "
+"instructions on how to become the superuser when administrative access is "
+"needed."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1254
-#, no-wrap
-msgid "DNS Configuration"
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1142
+msgid ""
+"The messages that appear during boot can be reviewed by pressing kbd:[Scroll-"
+"Lock] to turn on the scroll-back buffer. The kbd:[PgUp], kbd:[PgDn], and "
+"arrow keys can be used to scroll back through the messages. When finished, "
+"press kbd:[Scroll-Lock] again to unlock the display and return to the "
+"console. To review these messages once the system has been up for some "
+"time, type `less /var/run/dmesg.boot` from a command prompt. Press kbd:[q] "
+"to return to the command line after viewing."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1255
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1146
+msgid ""
+"If sshd was enabled in <<bsdinstall-config-serv>>, the first boot might be a "
+"bit slower as the system generates SSH host keys. Subsequent boots will be "
+"faster. The fingerprints of the keys are then displayed as in the following "
+"example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1184
#, no-wrap
-msgid "bsdinstall-configure-network-ipv4-dns.png"
+msgid ""
+"Generating public/private rsa1 key pair.\n"
+"Your identification has been saved in /etc/ssh/ssh_host_key.\n"
+"Your public key has been saved in /etc/ssh/ssh_host_key.pub.\n"
+"The key fingerprint is:\n"
+"10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com\n"
+"The key's randomart image is:\n"
+"+--[RSA1 1024]----+\n"
+"| o.. |\n"
+"| o . . |\n"
+"| . o |\n"
+"| o |\n"
+"| o S |\n"
+"| + + o |\n"
+"|o . + * |\n"
+"|o+ ..+ . |\n"
+"|==o..o+E |\n"
+"+-----------------+\n"
+"Generating public/private dsa key pair.\n"
+"Your identification has been saved in /etc/ssh/ssh_host_dsa_key.\n"
+"Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.\n"
+"The key fingerprint is:\n"
+"7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com\n"
+"The key's randomart image is:\n"
+"+--[ DSA 1024]----+\n"
+"| .. . .|\n"
+"| o . . + |\n"
+"| . .. . E .|\n"
+"| . . o o . . |\n"
+"| + S = . |\n"
+"| + . = o |\n"
+"| + . * . |\n"
+"| . . o . |\n"
+"| .o. . |\n"
+"+-----------------+\n"
+"Starting sshd.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1259
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1187
msgid ""
-"Once the interface is configured, select a mirror site that is located in "
-"the same region of the world as the computer on which FreeBSD is being "
-"installed. Files can be retrieved more quickly when the mirror is close to "
-"the target computer, reducing installation time."
+"Refer to crossref:security[openssh,\"OpenSSH\"] for more information about "
+"fingerprints and SSH."
msgstr ""
-#. type: Block title
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1261
-#, no-wrap
-msgid "Choosing a Mirror"
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1190
+msgid ""
+"FreeBSD does not install a graphical environment by default. Refer to "
+"crossref:x11[x11,The X Window System] for more information about installing "
+"and configuring a graphical window manager."
msgstr ""
-#. type: Target for macro image
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1262
-#, no-wrap
-msgid "bsdinstall-netinstall-mirrorselect.png"
+#. type: Plain text
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1194
+msgid ""
+"Proper shutdown of a FreeBSD computer helps protect data and hardware from "
+"damage. _Do not turn off the power before the system has been properly shut "
+"down!_ If the user is a member of the `wheel` group, become the superuser by "
+"typing `su` at the command line and entering the `root` password. Then, "
+"type `shutdown -p now` and the system will shut down cleanly, and, if the "
+"hardware supports it, turn itself off."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1265
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1196
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1268
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1199
msgid ""
"This section covers basic installation troubleshooting, such as common "
"problems people have reported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1273
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1201
msgid ""
-"Check the Hardware Notes (link:https://www.FreeBSD.org/releases/[https://www."
-"freebsd.org/releases/]) document for the version of FreeBSD to make sure the "
-"hardware is supported. If the hardware is supported and locks up or other "
-"problems occur, build a custom kernel using the instructions in crossref:"
-"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel] to add support for "
-"devices which are not present in the [.filename]#GENERIC# kernel. The "
-"default kernel assumes that most hardware devices are in their factory "
-"default configuration in terms of IRQs, I/O addresses, and DMA channels. If "
-"the hardware has been reconfigured, a custom kernel configuration file can "
-"tell FreeBSD where to find things."
+"Check the Hardware Notes listed on the link:https://www.FreeBSD.org/releases/"
+"[FreeBSD Release Information] page for the version of FreeBSD to make sure "
+"the hardware is supported."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1279
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1207
msgid ""
"Some installation problems can be avoided or alleviated by updating the "
"firmware on various hardware components, most notably the motherboard. "
"Motherboard firmware is usually referred to as the BIOS. Most motherboard "
"and computer manufacturers have a website for upgrades and upgrade "
"information."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1282
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1210
msgid ""
"Manufacturers generally advise against upgrading the motherboard BIOS unless "
"there is a good reason for doing so, like a critical update. The upgrade "
"process _can_ go wrong, leaving the BIOS incomplete and the computer "
"inoperative."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1288
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1216
msgid ""
"If the system hangs while probing hardware during boot or behaves strangely "
"during the installation process, ACPI may be the culprit. FreeBSD makes "
"extensive use of the system ACPI service on the i386 and amd64 platforms to "
"aid in system configuration if it is detected during boot. Unfortunately, "
"some bugs still exist in both the ACPI driver and within system motherboards "
"and BIOS firmware. ACPI can be disabled by setting the `hint.acpi.0."
"disabled` hint in the third stage boot loader:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1292
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1220
#, no-wrap
-msgid " set hint.acpi.0.disabled=\"1\"\n"
+msgid "set hint.acpi.0.disabled=\"1\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1296
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1224
msgid ""
"This is reset each time the system is booted, so it is necessary to add "
-"`hint.acpi.0.disabled=\"1\"` to the file [.filename]#/boot/loader.conf#. "
-"More information about the boot loader can be found in crossref:boot[boot-"
+"`hint.acpi.0.disabled=\"1\"` to the file `/boot/loader.conf`. More "
+"information about the boot loader can be found in crossref:boot[boot-"
"synopsis,“Synopsis”]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1298
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1226
#, no-wrap
msgid "Using the Live CD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1302
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1230
msgid ""
"The welcome menu of bsdinstall, shown in <<bsdinstall-choose-mode>>, "
"provides a btn:[Live CD] option. This is useful for those who are still "
"wondering whether FreeBSD is the right operating system for them and want to "
"test some of the features before installing."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1304
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1232
msgid "The following points should be noted before using the btn:[Live CD]:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1306
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1234
msgid ""
"To gain access to the system, authentication is required. The username is "
"`root` and the password is blank."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1307
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1235
msgid ""
"As the system runs directly from the installation media, performance will be "
"significantly slower than that of a system installed on a hard disk."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1307
+#: documentation/content/en/books/handbook/bsdinstall/_index.adoc:1235
msgid ""
"This option only provides a command prompt and not a graphical interface."
msgstr ""
diff --git a/documentation/content/en/books/handbook/config/_index.po b/documentation/content/en/books/handbook/config/_index.po
index dd24b6eea7..edc5d57504 100644
--- a/documentation/content/en/books/handbook/config/_index.po
+++ b/documentation/content/en/books/handbook/config/_index.po
@@ -1,4026 +1,4026 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/config/_index.adoc:1
#, no-wrap
msgid "This chapter explains much of the FreeBSD configuration process, including some of the parameters which can be set to tune a FreeBSD system."
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/config/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/config/_index.adoc:1
#, no-wrap
-msgid "Chapter 12. Configuration and Tuning"
+msgid "Chapter 13. Configuration and Tuning"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/config/_index.adoc:15
#, no-wrap
msgid "Configuration and Tuning"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:57
msgid ""
"One of the important aspects of FreeBSD is proper system configuration. "
"This chapter explains much of the FreeBSD configuration process, including "
"some of the parameters which can be set to tune a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:59
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:61
msgid ""
"The basics of [.filename]#rc.conf# configuration and [.filename]#/usr/local/"
"etc/rc.d# startup scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:62
msgid "How to configure and test a network card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:63
msgid "How to configure virtual hosts on network devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:64
msgid "How to use the various configuration files in [.filename]#/etc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:65
msgid "How to tune FreeBSD using man:sysctl[8] variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:66
msgid "How to tune disk performance and modify kernel limitations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:68
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:70
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:71
msgid ""
"Be familiar with the basics of kernel configuration and compilation "
"(crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:73
#, no-wrap
msgid "Starting Services"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:78
msgid ""
"Many users install third party software on FreeBSD from the Ports Collection "
"and require the installed services to be started upon system "
"initialization. Services, such as package:mail/postfix[] or package:www/"
"apache22[] are just two of the many software packages which may be started "
"during system initialization. This section explains the procedures "
"available for starting third party software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:80
msgid ""
"In FreeBSD, most included services, such as man:cron[8], are started through "
"the system startup scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:81
#, no-wrap
msgid "Extended Application Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:86
msgid ""
"Now that FreeBSD includes [.filename]#rc.d#, configuration of application "
"startup is easier and provides more features. Using the key words discussed "
"in <<configtuning-rcd>>, applications can be set to start after certain "
"other services and extra flags can be passed through [.filename]#/etc/rc."
"conf# in place of hard coded flags in the startup script. A basic script "
"may look similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:94
#, no-wrap
msgid ""
"#!/bin/sh\n"
"#\n"
"# PROVIDE: utility\n"
"# REQUIRE: DAEMON\n"
"# KEYWORD: shutdown\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:96
#, no-wrap
msgid ". /etc/rc.subr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:99
#, no-wrap
msgid ""
"name=utility\n"
"rcvar=utility_enable\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:101
#, no-wrap
msgid "command=\"/usr/local/sbin/utility\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:103
#, no-wrap
msgid "load_rc_config $name\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:110
#, no-wrap
msgid ""
"#\n"
"# DO NOT CHANGE THESE DEFAULT VALUES HERE\n"
"# SET THEM IN THE /etc/rc.conf FILE\n"
"#\n"
"utility_enable=${utility_enable-\"NO\"}\n"
"pidfile=${utility_pidfile-\"/var/run/utility.pid\"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:112
#, no-wrap
msgid "run_rc_command \"$1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:116
msgid ""
"This script will ensure that the provided `utility` will be started after "
"the `DAEMON` pseudo-service. It also provides a method for setting and "
"tracking the process ID (PID)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:118
msgid ""
"This application could then have the following line placed in [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:122
#, no-wrap
msgid "utility_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:125
msgid ""
"This method allows for easier manipulation of command line arguments, "
"inclusion of the default functions provided in [.filename]#/etc/rc.subr#, "
"compatibility with man:rcorder[8], and provides for easier configuration via "
"[.filename]#rc.conf#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:126
#, no-wrap
msgid "Using Services to Start Services"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:130
msgid ""
"Other services can be started using man:inetd[8]. Working with man:inetd[8] "
"and its configuration is described in depth in crossref:network-"
"servers[network-inetd,“The inetd Super-Server”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:134
msgid ""
"In some cases, it may make more sense to use man:cron[8] to start system "
"services. This approach has a number of advantages as man:cron[8] runs "
"these processes as the owner of the man:crontab[5]. This allows regular "
"users to start and maintain their own applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:137
msgid ""
"The `@reboot` feature of man:cron[8], may be used in place of the time "
"specification. This causes the job to run when man:cron[8] is started, "
"normally during system initialization."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:139
#, no-wrap
msgid "Configuring man:cron[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:145
msgid ""
"One of the most useful utilities in FreeBSD is cron. This utility runs in "
"the background and regularly checks [.filename]#/etc/crontab# for tasks to "
"execute and searches [.filename]#/var/cron/tabs# for custom crontab files. "
"These files are used to schedule tasks which cron runs at the specified "
"times. Each entry in a crontab defines a task to run and is known as a "
"_cron job_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:151
msgid ""
"Two different types of configuration files are used: the system crontab, "
"which should not be modified, and user crontabs, which can be created and "
"edited as needed. The format used by these files is documented in man:"
"crontab[5]. The format of the system crontab, [.filename]#/etc/crontab# "
"includes a `who` column which does not exist in user crontabs. In the "
"system crontab, cron runs the command as the user specified in this column. "
"In a user crontab, all commands run as the user who created the crontab."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:154
msgid ""
"User crontabs allow individual users to schedule their own tasks. The "
"`root` user can also have a user [.filename]#crontab# which can be used to "
"schedule tasks that do not exist in the system [.filename]#crontab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:156
msgid ""
"Here is a sample entry from the system crontab, [.filename]#/etc/crontab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:169
#, no-wrap
msgid ""
"# /etc/crontab - root's crontab for FreeBSD\n"
"#\n"
"# $FreeBSD$\n"
"# <.>\n"
"SHELL=/bin/sh\n"
"PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin <.>\n"
"#\n"
"#minute\thour\tmday\tmonth\twday\twho\tcommand <.>\n"
"#\n"
"*/5\t*\t*\t*\t*\troot\t/usr/libexec/atrun <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:172
msgid ""
-"Lines that begin with the `#` character are comments. A comment can be "
+"Lines that begin with the `+#+` character are comments. A comment can be "
"placed in the file as a reminder of what and why a desired action is "
"performed. Comments cannot be on the same line as a command or else they "
"will be interpreted as part of the command; they must be on a new line. "
"Blank lines are ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:174
msgid ""
"The equals (`=`) character is used to define any environment settings. In "
"this example, it is used to define the `SHELL` and `PATH`. If the `SHELL` is "
"omitted, cron will use the default Bourne shell. If the `PATH` is omitted, "
"the full path must be given to the command or script to run."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:176
msgid ""
"This line defines the seven fields used in a system crontab: `minute`, "
"`hour`, `mday`, `month`, `wday`, `who`, and `command`. The `minute` field is "
"the time in minutes when the specified command will be run, the `hour` is "
"the hour when the specified command will be run, the `mday` is the day of "
"the month, `month` is the month, and `wday` is the day of the week. These "
"fields must be numeric values, representing the twenty-four hour clock, or a "
"`*`, representing all values for that field. The `who` field only exists in "
"the system crontab and specifies which user the command should be run as. "
"The last field is the command to be executed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:178
msgid ""
"This entry defines the values for this cron job. The `\\*/5`, followed by "
"several more `*` characters, specifies that `/usr/libexec/atrun` is invoked "
"by `root` every five minutes of every hour, of every day and day of the "
"week, of every month.Commands can include any number of switches. However, "
"commands which extend to multiple lines need to be broken with the backslash "
"\"\\\" continuation character."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:180
#, no-wrap
msgid "Creating a User Crontab"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:183
msgid "To create a user crontab, invoke `crontab` in editor mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:187
#, no-wrap
msgid "% crontab -e\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:192
msgid ""
"This will open the user's crontab using the default text editor. The first "
"time a user runs this command, it will open an empty file. Once a user "
"creates a crontab, this command will open that file for editing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:194
msgid ""
"It is useful to add these lines to the top of the crontab file in order to "
"set the environment variables and to remember the meanings of the fields in "
"the crontab:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:201
#, no-wrap
msgid ""
"SHELL=/bin/sh\n"
"PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin\n"
"# Order of crontab fields\n"
"# minute\thour\tmday\tmonth\twday\tcommand\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:206
msgid ""
"Then add a line for each command or script to run, specifying the time to "
"run the command. This example runs the specified custom Bourne shell script "
"every day at two in the afternoon. Since the path to the script is not "
"specified in `PATH`, the full path to the script is given:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:210
#, no-wrap
msgid "0\t14\t*\t*\t*\t/usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:217
msgid ""
"Before using a custom script, make sure it is executable and test it with "
"the limited set of environment variables set by cron. To replicate the "
"environment that would be used to run the above cron entry, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:221
#, no-wrap
msgid "env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/dru LOGNAME=dru /usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:225
msgid ""
"The environment set by cron is discussed in man:crontab[5]. Checking that "
"scripts operate correctly in a cron environment is especially important if "
"they include any commands that delete files using wildcards."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:230
msgid ""
"When finished editing the crontab, save the file. It will automatically be "
"installed and cron will read the crontab and run its cron jobs at their "
"specified times. To list the cron jobs in a crontab, use this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:235
#, no-wrap
msgid ""
"% crontab -l\n"
"0\t14\t*\t*\t*\t/usr/home/dru/bin/mycustomscript.sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:238
msgid "To remove all of the cron jobs in a user crontab:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:243
#, no-wrap
msgid ""
"% crontab -r\n"
"remove crontab for dru? y\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:246
#, no-wrap
msgid "Managing Services in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:251
msgid ""
"FreeBSD uses the man:rc[8] system of startup scripts during system "
"initialization and for managing services. The scripts listed in [."
"filename]#/etc/rc.d# provide basic services which can be controlled with the "
"`start`, `stop`, and `restart` options to man:service[8]. For instance, man:"
"sshd[8] can be restarted with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:255
#, no-wrap
msgid "# service sshd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:260
msgid ""
"This procedure can be used to start services on a running system. Services "
"will be started automatically at boot time as specified in man:rc.conf[5]. "
"For example, to enable man:natd[8] at system startup, add the following line "
"to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:264
#, no-wrap
msgid "natd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:268
msgid ""
"If a `natd_enable=\"NO\"` line is already present, change the `NO` to "
"`YES`. The man:rc[8] scripts will automatically load any dependent services "
"during the next boot, as described below."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:273
msgid ""
"Since the man:rc[8] system is primarily intended to start and stop services "
"at system startup and shutdown time, the `start`, `stop` and `restart` "
"options will only perform their action if the appropriate [.filename]#/etc/"
"rc.conf# variable is set. For instance, `sshd restart` will only work if "
"`sshd_enable` is set to `YES` in [.filename]#/etc/rc.conf#. To `start`, "
"`stop` or `restart` a service regardless of the settings in [.filename]#/etc/"
"rc.conf#, these commands should be prefixed with \"one\". For instance, to "
"restart man:sshd[8] regardless of the current [.filename]#/etc/rc.conf# "
"setting, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:277
#, no-wrap
msgid "# service sshd onerestart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:281
msgid ""
"To check if a service is enabled in [.filename]#/etc/rc.conf#, run the "
"appropriate man:rc[8] script with `rcvar`. This example checks to see if "
"man:sshd[8] is enabled in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:289
#, no-wrap
msgid ""
"# service sshd rcvar\n"
"# sshd\n"
"#\n"
"sshd_enable=\"YES\"\n"
"# (default: \"\")\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:294
msgid ""
"The `# sshd` line is output from the above command, not a `root` console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:298
msgid ""
"To determine whether or not a service is running, use `status`. For "
"instance, to verify that man:sshd[8] is running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:303
#, no-wrap
msgid ""
"# service sshd status\n"
"sshd is running as pid 433.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:309
msgid ""
"In some cases, it is also possible to `reload` a service. This attempts to "
"send a signal to an individual service, forcing the service to reload its "
"configuration files. In most cases, this means sending the service a "
"`SIGHUP` signal. Support for this feature is not included for every service."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:312
msgid ""
"The man:rc[8] system is used for network services and it also contributes to "
"most of the system initialization. For instance, when the [.filename]#/etc/"
"rc.d/bgfsck# script is executed, it prints out the following message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:316
#, no-wrap
msgid "Starting background file system checks in 60 seconds.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:319
msgid ""
"This script is used for background file system checks, which occur only "
"during system initialization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:324
msgid ""
"Many system services depend on other services to function properly. For "
"example, man:yp[8] and other RPC-based services may fail to start until "
"after the man:rpcbind[8] service has started. To resolve this issue, "
"information about dependencies and other meta-data is included in the "
"comments at the top of each startup script. The man:rcorder[8] program is "
"used to parse these comments during system initialization to determine the "
"order in which system services should be invoked to satisfy the dependencies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:326
msgid ""
"The following key word must be included in all startup scripts as it is "
"required by man:rc.subr[8] to \"enable\" the startup script:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:328
msgid "`PROVIDE`: Specifies the services this file provides."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:331
msgid ""
"The following key words may be included at the top of each startup script. "
"They are not strictly necessary, but are useful as hints to man:rcorder[8]:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:333
msgid ""
"`REQUIRE`: Lists services which are required for this service. The script "
"containing this key word will run _after_ the specified services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:334
msgid ""
"`BEFORE`: Lists services which depend on this service. The script containing "
"this key word will run _before_ the specified services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:336
msgid ""
"By carefully setting these keywords for each startup script, an "
"administrator has a fine-grained level of control of the startup order of "
"the scripts, without the need for \"runlevels\" used by some UNIX(R) "
"operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:339
msgid ""
"Additional information can be found in man:rc[8] and man:rc.subr[8]. Refer "
"to extref:{rc-scripting}[this article] for instructions on how to create "
"custom man:rc[8] scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:341
#, no-wrap
msgid "Managing System-Specific Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:346
msgid ""
"The principal location for system configuration information is [.filename]#/"
"etc/rc.conf#. This file contains a wide range of configuration information "
"and it is read at system startup to configure the system. It provides the "
"configuration information for the [.filename]#rc*# files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:350
msgid ""
"The entries in [.filename]#/etc/rc.conf# override the default settings in [."
"filename]#/etc/defaults/rc.conf#. The file containing the default settings "
"should not be edited. Instead, all system-specific changes should be made "
"to [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:354
msgid ""
"A number of strategies may be applied in clustered applications to separate "
"site-wide configuration from system-specific configuration in order to "
"reduce administration overhead. The recommended approach is to place system-"
"specific configuration into [.filename]#/etc/rc.conf.local#. For example, "
"these entries in [.filename]#/etc/rc.conf# apply to all systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:360
#, no-wrap
msgid ""
"sshd_enable=\"YES\"\n"
"keyrate=\"fast\"\n"
"defaultrouter=\"10.1.1.254\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:363
msgid ""
"Whereas these entries in [.filename]#/etc/rc.conf.local# apply to this "
"system only:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:368
#, no-wrap
msgid ""
"hostname=\"node1.example.org\"\n"
"ifconfig_fxp0=\"inet 10.1.1.1/8\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:371
msgid ""
"Distribute [.filename]#/etc/rc.conf# to every system using an application "
"such as rsync or puppet, while [.filename]#/etc/rc.conf.local# remains "
"unique."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:373
msgid ""
"Upgrading the system will not overwrite [.filename]#/etc/rc.conf#, so system "
"configuration information will not be lost."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:380
msgid ""
"Both [.filename]#/etc/rc.conf# and [.filename]#/etc/rc.conf.local# are "
"parsed by man:sh[1]. This allows system operators to create complex "
"configuration scenarios. Refer to man:rc.conf[5] for further information on "
"this topic."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:383
#, no-wrap
msgid "Setting Up Network Interface Cards"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:386
msgid ""
"Adding and configuring a network interface card (NIC) is a common task for "
"any FreeBSD administrator."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:387
#, no-wrap
msgid "Locating the Correct Driver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:392
msgid ""
"First, determine the model of the NIC and the chip it uses. FreeBSD "
"supports a wide variety of NICs. Check the Hardware Compatibility List for "
"the FreeBSD release to see if the NIC is supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:396
msgid ""
"If the NIC is supported, determine the name of the FreeBSD driver for the "
"NIC. Refer to [.filename]#/usr/src/sys/conf/NOTES# and [.filename]#/usr/src/"
"sys/arch/conf/NOTES# for the list of NIC drivers with some information about "
"the supported chipsets. When in doubt, read the manual page of the driver "
"as it will provide more information about the supported hardware and any "
"known limitations of the driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:400
msgid ""
"The drivers for common NICs are already present in the [.filename]#GENERIC# "
"kernel, meaning the NIC should be probed during boot. The system's boot "
"messages can be viewed by typing `more /var/run/dmesg.boot` and using the "
"spacebar to scroll through the text. In this example, two Ethernet NICs "
"using the man:dc[4] driver are present on the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:417
#, no-wrap
msgid ""
"dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38\n"
"000ff irq 15 at device 11.0 on pci0\n"
"miibus0: <MII bus> on dc0\n"
"bmtphy0: <BCM5201 10/100baseTX PHY> PHY 1 on miibus0\n"
"bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto\n"
"dc0: Ethernet address: 00:a0:cc:da:da:da\n"
"dc0: [ITHREAD]\n"
"dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30\n"
"000ff irq 11 at device 12.0 on pci0\n"
"miibus1: <MII bus> on dc1\n"
"bmtphy1: <BCM5201 10/100baseTX PHY> PHY 1 on miibus1\n"
"bmtphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto\n"
"dc1: Ethernet address: 00:a0:cc:da:da:db\n"
"dc1: [ITHREAD]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:421
msgid ""
"If the driver for the NIC is not present in [.filename]#GENERIC#, but a "
"driver is available, the driver will need to be loaded before the NIC can be "
"configured and used. This may be accomplished in one of two ways:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:423
msgid ""
"The easiest way is to load a kernel module for the NIC using man:kldload[8]. "
"To also automatically load the driver at boot time, add the appropriate line "
"to [.filename]#/boot/loader.conf#. Not all NIC drivers are available as "
"modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:424
msgid ""
"Alternatively, statically compile support for the NIC into a custom kernel. "
"Refer to [.filename]#/usr/src/sys/conf/NOTES#, [.filename]#/usr/src/sys/arch/"
"conf/NOTES# and the manual page of the driver to determine which line to add "
"to the custom kernel configuration file. For more information about "
"recompiling the kernel, refer to crossref:kernelconfig[kernelconfig,"
"Configuring the FreeBSD Kernel]. If the NIC was detected at boot, the kernel "
"does not need to be recompiled."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:426
#, no-wrap
msgid "Using Windows(R) NDIS Drivers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:430
msgid ""
"Unfortunately, there are still many vendors that do not provide schematics "
"for their drivers to the open source community because they regard such "
"information as trade secrets. Consequently, the developers of FreeBSD and "
"other operating systems are left with two choices: develop the drivers by a "
"long and pain-staking process of reverse engineering or using the existing "
"driver binaries available for Microsoft(R) Windows(R) platforms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:435
msgid ""
"FreeBSD provides \"native\" support for the Network Driver Interface "
"Specification (NDIS). It includes man:ndisgen[8] which can be used to "
"convert a Windows(R) XP driver into a format that can be used on FreeBSD. "
"As the man:ndis[4] driver uses a Windows(R) XP binary, it only runs on "
"i386(TM) and amd64 systems. PCI, CardBus, PCMCIA, and USB devices are "
"supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:437
msgid "To use man:ndisgen[8], three things are needed:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:439
msgid "FreeBSD kernel sources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:440
msgid "A Windows(R) XP driver binary with a [.filename]#.SYS# extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:441
msgid ""
"A Windows(R) XP driver configuration file with a [.filename]#.INF# extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:445
msgid ""
"Download the [.filename]#.SYS# and [.filename]#.INF# files for the specific "
"NIC. Generally, these can be found on the driver CD or at the vendor's "
"website. The following examples use [.filename]#W32DRIVER.SYS# and [."
"filename]#W32DRIVER.INF#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:449
msgid ""
"The driver bit width must match the version of FreeBSD. For FreeBSD/i386, "
"use a Windows(R) 32-bit driver. For FreeBSD/amd64, a Windows(R) 64-bit "
"driver is needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:452
msgid ""
"The next step is to compile the driver binary into a loadable kernel "
"module. As `root`, use man:ndisgen[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:456
#, no-wrap
msgid "# ndisgen /path/to/W32DRIVER.INF /path/to/W32DRIVER.SYS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:461
msgid ""
"This command is interactive and prompts for any extra information it "
"requires. A new kernel module will be generated in the current directory. "
"Use man:kldload[8] to load the new module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:465
#, no-wrap
msgid "# kldload ./W32DRIVER_SYS.ko\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:470
msgid ""
"In addition to the generated kernel module, the [.filename]#ndis.ko# and [."
"filename]#if_ndis.ko# modules must be loaded. This should happen "
"automatically when any module that depends on man:ndis[4] is loaded. If "
"not, load them manually, using the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:475
#, no-wrap
msgid ""
"# kldload ndis\n"
"# kldload if_ndis\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:478
msgid ""
"The first command loads the man:ndis[4] miniport driver wrapper and the "
"second loads the generated NIC driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:481
msgid ""
"Check man:dmesg[8] to see if there were any load errors. If all went well, "
"the output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:489
#, no-wrap
msgid ""
"ndis0: <Wireless-G PCI Adapter> mem 0xf4100000-0xf4101fff irq 3 at device 8.0 on pci1\n"
"ndis0: NDIS API version: 5.0\n"
"ndis0: Ethernet address: 0a:b1:2c:d3:4e:f5\n"
"ndis0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps\n"
"ndis0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:492
msgid "From here, [.filename]#ndis0# can be configured like any other NIC."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:495
msgid ""
"To configure the system to load the man:ndis[4] modules at boot time, copy "
"the generated module, [.filename]#W32DRIVER_SYS.ko#, to [.filename]#/boot/"
"modules#. Then, add the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:499
#, no-wrap
msgid "W32DRIVER_SYS_load=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:501
#, no-wrap
msgid "Configuring the Network Card"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:505
msgid ""
"Once the right driver is loaded for the NIC, the card needs to be "
"configured. It may have been configured at installation time by man:"
"bsdinstall[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:507
msgid "To display the NIC configuration, enter the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:529
#, no-wrap
msgid ""
"% ifconfig\n"
"dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=80008<VLAN_MTU,LINKSTATE>\n"
" ether 00:a0:cc:da:da:da\n"
" inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255\n"
" media: Ethernet autoselect (100baseTX <full-duplex>)\n"
" status: active\n"
"dc1: flags=8802<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
" options=80008<VLAN_MTU,LINKSTATE>\n"
" ether 00:a0:cc:da:da:db\n"
" inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255\n"
" media: Ethernet 10baseT/UTP\n"
" status: no carrier\n"
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384\n"
" options=3<RXCSUM,TXCSUM>\n"
" inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4\n"
" inet6 ::1 prefixlen 128\n"
" inet 127.0.0.1 netmask 0xff000000\n"
" nd6 options=3<PERFORMNUD,ACCEPT_RTADV>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:532
msgid "In this example, the following devices were displayed:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:534
msgid "[.filename]#dc0#: The first Ethernet interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:535
msgid "[.filename]#dc1#: The second Ethernet interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:536
msgid "[.filename]#lo0#: The loopback device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:539
msgid ""
"FreeBSD uses the driver name followed by the order in which the card is "
"detected at boot to name the NIC. For example, [.filename]#sis2# is the "
"third NIC on the system using the man:sis[4] driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:542
msgid ""
"In this example, [.filename]#dc0# is up and running. The key indicators are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:544
msgid "`UP` means that the card is configured and ready."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:545
msgid "The card has an Internet (`inet`) address, `192.168.1.3`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:546
msgid ""
"It has a valid subnet mask (`netmask`), where `0xffffff00` is the same as "
"`255.255.255.0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:547
msgid "It has a valid broadcast address, `192.168.1.255`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:548
msgid "The MAC address of the card (`ether`) is `00:a0:cc:da:da:da`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:549
msgid ""
"The physical media selection is on autoselection mode (`media: Ethernet "
"autoselect (100baseTX <full-duplex>)`). In this example, [.filename]#dc1# is "
"configured to run with `10baseT/UTP` media. For more information on "
"available media types for a driver, refer to its manual page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:550
msgid ""
"The status of the link (`status`) is `active`, indicating that the carrier "
"signal is detected. For [.filename]#dc1#, the `status: no carrier` status is "
"normal when an Ethernet cable is not plugged into the card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:552
msgid "If the man:ifconfig[8] output had shown something similar to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:560
#, no-wrap
msgid ""
"dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500\n"
"\toptions=80008<VLAN_MTU,LINKSTATE>\n"
"\tether 00:a0:cc:da:da:da\n"
"\tmedia: Ethernet autoselect (100baseTX <full-duplex>)\n"
"\tstatus: active\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:563
msgid "it would indicate the card has not been configured."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:567
msgid ""
"The card must be configured as `root`. The NIC configuration can be "
"performed from the command line with man:ifconfig[8] but will not persist "
"after a reboot unless the configuration is also added to [.filename]#/etc/rc."
"conf#. If a DHCP server is present on the LAN, just add this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:571
#, no-wrap
msgid "ifconfig_dc0=\"DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:574
msgid "Replace _dc0_ with the correct value for the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:576
msgid ""
"The line added, then, follow the instructions given in <<config-network-"
"testing>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:581
msgid ""
"If the network was configured during installation, some entries for the "
"NIC(s) may be already present. Double check [.filename]#/etc/rc.conf# "
"before adding any lines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:585
msgid ""
"If there is no DHCP server, the NIC(s) must be configured manually. Add a "
"line for each NIC present on the system, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:590
#, no-wrap
msgid ""
"ifconfig_dc0=\"inet 192.168.1.3 netmask 255.255.255.0\"\n"
"ifconfig_dc1=\"inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:594
msgid ""
"Replace [.filename]#dc0# and [.filename]#dc1# and the IP address information "
"with the correct values for the system. Refer to the man page for the "
"driver, man:ifconfig[8], and man:rc.conf[5] for more details about the "
"allowed options and the syntax of [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:597
msgid ""
"If the network is not using DNS, edit [.filename]#/etc/hosts# to add the "
"names and IP addresses of the hosts on the LAN, if they are not already "
"there. For more information, refer to man:hosts[5] and to [.filename]#/usr/"
"share/examples/etc/hosts#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:601
msgid ""
"If there is no DHCP server and access to the Internet is needed, manually "
"configure the default gateway and the nameserver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:606
#, no-wrap
msgid ""
"# sysrc defaultrouter=\"your_default_router\"\n"
"# echo 'nameserver your_DNS_server' >> /etc/resolv.conf\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:611
#, no-wrap
msgid "Testing and Troubleshooting"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:615
msgid ""
"Once the necessary changes to [.filename]#/etc/rc.conf# are saved, a reboot "
"can be used to test the network configuration and to verify that the system "
"restarts without any configuration errors. Alternatively, apply the "
"settings to the networking system with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:619
#, no-wrap
msgid "# service netif restart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:624
msgid ""
"If a default gateway has been set in [.filename]#/etc/rc.conf#, also issue "
"this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:628
#, no-wrap
msgid "# service routing restart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:633
msgid "Once the networking system has been relaunched, test the NICs."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:634
#, no-wrap
msgid "Testing the Ethernet Card"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:637
msgid ""
"To verify that an Ethernet card is configured correctly, man:ping[8] the "
"interface itself, and then man:ping[8] another machine on the LAN:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:647
#, no-wrap
msgid ""
"% ping -c5 192.168.1.3\n"
"PING 192.168.1.3 (192.168.1.3): 56 data bytes\n"
"64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms\n"
"64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:651
#, no-wrap
msgid ""
"--- 192.168.1.3 ping statistics ---\n"
"5 packets transmitted, 5 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:662
#, no-wrap
msgid ""
"% ping -c5 192.168.1.2\n"
"PING 192.168.1.2 (192.168.1.2): 56 data bytes\n"
"64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms\n"
"64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:666
#, no-wrap
msgid ""
"--- 192.168.1.2 ping statistics ---\n"
"5 packets transmitted, 5 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:672
msgid ""
"To test network resolution, use the host name instead of the IP address. If "
"there is no DNS server on the network, [.filename]#/etc/hosts# must first be "
"configured. To this purpose, edit [.filename]#/etc/hosts# to add the names "
"and IP addresses of the hosts on the LAN, if they are not already there. "
"For more information, refer to man:hosts[5] and to [.filename]#/usr/share/"
"examples/etc/hosts#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:673
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:677
msgid ""
"When troubleshooting hardware and software configurations, check the simple "
"things first. Is the network cable plugged in? Are the network services "
"properly configured? Is the firewall configured correctly? Is the NIC "
"supported by FreeBSD? Before sending a bug report, always check the Hardware "
"Notes, update the version of FreeBSD to the latest STABLE version, check the "
"mailing list archives, and search the Internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:680
msgid ""
"If the card works, yet performance is poor, read through man:tuning[7]. "
"Also, check the network configuration as incorrect network settings can "
"cause slow connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:685
msgid ""
"Some users experience one or two `device timeout` messages, which is normal "
"for some cards. If they continue, or are bothersome, determine if the "
"device is conflicting with another device. Double check the cable "
"connections. Consider trying another card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:690
msgid ""
"To resolve `watchdog timeout` errors, first check the network cable. Many "
"cards require a PCI slot which supports bus mastering. On some old "
"motherboards, only one PCI slot allows it, usually slot 0. Check the NIC "
"and the motherboard documentation to determine if that may be the problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:695
msgid ""
"`No route to host` messages occur if the system is unable to route a packet "
"to the destination host. This can happen if no default route is specified "
"or if a cable is unplugged. Check the output of `netstat -rn` and make sure "
"there is a valid route to the host. If there is not, read crossref:advanced-"
"networking[network-routing,“Gateways and Routes”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:699
msgid ""
"`ping: sendto: Permission denied` error messages are often caused by a "
"misconfigured firewall. If a firewall is enabled on FreeBSD but no rules "
"have been defined, the default policy is to deny all traffic, even man:"
"ping[8]. Refer to crossref:firewalls[firewalls,Firewalls] for more "
"information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:704
msgid ""
"Sometimes performance of the card is poor or below average. In these cases, "
"try setting the media selection mode from `autoselect` to the correct media "
"selection. While this works for most hardware, it may or may not resolve "
"the issue. Again, check all the network settings, and refer to man:"
"tuning[7]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:706
#, no-wrap
msgid "Virtual Hosts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:710
msgid ""
"A common use of FreeBSD is virtual site hosting, where one server appears to "
"the network as many servers. This is achieved by assigning multiple network "
"addresses to a single interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:713
msgid ""
"A given network interface has one \"real\" address, and may have any number "
"of \"alias\" addresses. These aliases are normally added by placing alias "
"entries in [.filename]#/etc/rc.conf#, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:717
#, no-wrap
msgid "ifconfig_fxp0_alias0=\"inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:721
msgid ""
"Alias entries must start with `alias__0__` using a sequential number such as "
"`alias0`, `alias1`, and so on. The configuration process will stop at the "
"first missing number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:725
msgid ""
"The calculation of alias netmasks is important. For a given interface, "
"there must be one address which correctly represents the network's netmask. "
"Any other addresses which fall within this network must have a netmask of "
"all ``1``s, expressed as either `255.255.255.255` or `0xffffffff`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:730
msgid ""
"For example, consider the case where the [.filename]#fxp0# interface is "
"connected to two networks: `10.1.1.0` with a netmask of `255.255.255.0` and "
"`202.0.75.16` with a netmask of `255.255.255.240`. The system is to be "
"configured to appear in the ranges `10.1.1.1` through `10.1.1.5` and "
"`202.0.75.17` through `202.0.75.20`. Only the first address in a given "
"network range should have a real netmask. All the rest (`10.1.1.2` through "
"`10.1.1.5` and `202.0.75.18` through `202.0.75.20`) must be configured with "
"a netmask of `255.255.255.255`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:732
msgid ""
"The following [.filename]#/etc/rc.conf# entries configure the adapter "
"correctly for this scenario:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:744
#, no-wrap
msgid ""
"ifconfig_fxp0=\"inet 10.1.1.1 netmask 255.255.255.0\"\n"
"ifconfig_fxp0_alias0=\"inet 10.1.1.2 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias1=\"inet 10.1.1.3 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias2=\"inet 10.1.1.4 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias3=\"inet 10.1.1.5 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias4=\"inet 202.0.75.17 netmask 255.255.255.240\"\n"
"ifconfig_fxp0_alias5=\"inet 202.0.75.18 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias6=\"inet 202.0.75.19 netmask 255.255.255.255\"\n"
"ifconfig_fxp0_alias7=\"inet 202.0.75.20 netmask 255.255.255.255\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:748
msgid ""
"A simpler way to express this is with a space-separated list of IP address "
"ranges. The first address will be given the indicated subnet mask and the "
"additional addresses will have a subnet mask of `255.255.255.255`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:752
#, no-wrap
msgid "ifconfig_fxp0_aliases=\"inet 10.1.1.1-5/24 inet 202.0.75.17-20/28\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:755
#, no-wrap
msgid "Configuring System Logging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:761
msgid ""
"Generating and reading system logs is an important aspect of system "
"administration. The information in system logs can be used to detect "
"hardware and software issues as well as application and system configuration "
"errors. This information also plays an important role in security auditing "
"and incident response. Most system daemons and applications will generate "
"log entries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:767
msgid ""
"FreeBSD provides a system logger, syslogd, to manage logging. By default, "
"syslogd is started when the system boots. This is controlled by the "
"variable `syslogd_enable` in [.filename]#/etc/rc.conf#. There are numerous "
"application arguments that can be set using `syslogd_flags` in [.filename]#/"
"etc/rc.conf#. Refer to man:syslogd[8] for more information on the available "
"arguments."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:769
msgid ""
"This section describes how to configure the FreeBSD system logger for both "
"local and remote logging and how to perform log rotation and log management."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:770
#, no-wrap
msgid "Configuring Local Logging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:777
msgid ""
"The configuration file, [.filename]#/etc/syslog.conf#, controls what syslogd "
"does with log entries as they are received. There are several parameters to "
"control the handling of incoming events. The _facility_ describes which "
"subsystem generated the message, such as the kernel or a daemon, and the "
"_level_ describes the severity of the event that occurred. This makes it "
"possible to configure if and where a log message is logged, depending on the "
"facility and level. It is also possible to take action depending on the "
"application that sent the message, and in the case of remote logging, the "
"hostname of the machine generating the logging event."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:785
msgid ""
"This configuration file contains one line per action, where the syntax for "
"each line is a selector field followed by an action field. The syntax of "
"the selector field is _facility.level_ which will match log messages from "
"_facility_ at level _level_ or higher. It is also possible to add an "
"optional comparison flag before the level to specify more precisely what is "
"logged. Multiple selector fields can be used for the same action, and are "
"separated with a semicolon (`;`). Using `*` will match everything. The "
"action field denotes where to send the log message, such as to a file or "
"remote log host. As an example, here is the default [.filename]#syslog."
"conf# from FreeBSD:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:823
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"# Spaces ARE valid field separators in this file. However,\n"
"# other *nix-like systems still insist on using tabs as field\n"
"# separators. If you are sharing this file between systems, you\n"
"# may want to use only tabs as field separators here.\n"
"# Consult the syslog.conf(5) manpage.\n"
"*.err;kern.warning;auth.notice;mail.crit /dev/console\n"
"*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages\n"
"security.* /var/log/security\n"
"auth.info;authpriv.info /var/log/auth.log\n"
"mail.info /var/log/maillog\n"
"lpr.info /var/log/lpd-errs\n"
"ftp.info /var/log/xferlog\n"
"cron.* /var/log/cron\n"
"!-devd\n"
"*.=debug /var/log/debug.log\n"
"*.emerg *\n"
"# uncomment this to log all writes to /dev/console to /var/log/console.log\n"
"#console.info /var/log/console.log\n"
"# uncomment this to enable logging of all log messages to /var/log/all.log\n"
"# touch /var/log/all.log and chmod it to mode 600 before it will work\n"
"#*.* /var/log/all.log\n"
"# uncomment this to enable logging to a remote loghost named loghost\n"
"#*.* @loghost\n"
"# uncomment these if you're running inn\n"
"# news.crit /var/log/news/news.crit\n"
"# news.err /var/log/news/news.err\n"
"# news.notice /var/log/news/news.notice\n"
"# Uncomment this if you wish to see messages produced by devd\n"
"# !devd\n"
"# *.>=info\n"
"!ppp\n"
"*.* /var/log/ppp.log\n"
"!*\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:826
msgid "In this example:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:828
msgid ""
"Line 8 matches all messages with a level of `err` or higher, as well as "
"`kern.warning`, `auth.notice` and `mail.crit`, and sends these log messages "
"to the console ([.filename]#/dev/console#)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:829
msgid ""
"Line 12 matches all messages from the `mail` facility at level `info` or "
"above and logs the messages to [.filename]#/var/log/maillog#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:830
msgid ""
"Line 17 uses a comparison flag (`=`) to only match messages at level `debug` "
"and logs them to [.filename]#/var/log/debug.log#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:831
msgid ""
"Line 33 is an example usage of a program specification. This makes the rules "
"following it only valid for the specified program. In this case, only the "
"messages generated by ppp are logged to [.filename]#/var/log/ppp.log#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:833
msgid ""
"The available levels, in order from most to least critical are `emerg`, "
"`alert`, `crit`, `err`, `warning`, `notice`, `info`, and `debug`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:836
msgid ""
"The facilities, in no particular order, are `auth`, `authpriv`, `console`, "
"`cron`, `daemon`, `ftp`, `kern`, `lpr`, `mail`, `mark`, `news`, `security`, "
"`syslog`, `user`, `uucp`, and `local0` through `local7`. Be aware that "
"other operating systems might have different facilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:838
msgid ""
"To log everything of level `notice` and higher to [.filename]#/var/log/"
"daemon.log#, add the following entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:842
#, no-wrap
msgid "daemon.notice /var/log/daemon.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:846
msgid ""
"For more information about the different levels and facilities, refer to man:"
"syslog[3] and man:syslogd[8]. For more information about [.filename]#/etc/"
"syslog.conf#, its syntax, and more advanced usage examples, see man:syslog."
"conf[5]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:847
#, no-wrap
msgid "Log Management and Rotation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:856
msgid ""
"Log files can grow quickly, taking up disk space and making it more "
"difficult to locate useful information. Log management attempts to mitigate "
"this. In FreeBSD, newsyslog is used to manage log files. This built-in "
"program periodically rotates and compresses log files, and optionally "
"creates missing log files and signals programs when log files are moved. "
"The log files may be generated by syslogd or by any other program which "
"generates log files. While newsyslog is normally run from man:cron[8], it "
"is not a system daemon. In the default configuration, it runs every hour."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:861
msgid ""
"To know which actions to take, newsyslog reads its configuration file, [."
"filename]#/etc/newsyslog.conf#. This file contains one line for each log "
"file that newsyslog manages. Each line states the file owner, permissions, "
"when to rotate that file, optional flags that affect log rotation, such as "
"compression, and programs to signal when the log is rotated. Here is the "
"default configuration in FreeBSD:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:903
#, no-wrap
msgid ""
"# configuration file for newsyslog\n"
"# $FreeBSD$\n"
"#\n"
"# Entries which do not specify the '/pid_file' field will cause the\n"
"# syslogd process to be signalled when that log file is rotated. This\n"
"# action is only appropriate for log files which are written to by the\n"
"# syslogd process (ie, files listed in /etc/syslog.conf). If there\n"
"# is no process which needs to be signalled when a given log file is\n"
"# rotated, then the entry for that file should include the 'N' flag.\n"
"#\n"
"# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.\n"
"#\n"
"# Note: some sites will want to select more restrictive protections than the\n"
"# defaults. In particular, it may be desirable to switch many of the 644\n"
"# entries to 640 or 600. For example, some sites will consider the\n"
"# contents of maillog, messages, and lpd-errs to be confidential. In the\n"
"# future, these defaults may change to more conservative ones.\n"
"#\n"
"# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]\n"
"/var/log/all.log 600 7 * @T00 J\n"
"/var/log/amd.log 644 7 100 * J\n"
"/var/log/auth.log 600 7 100 @0101T JC\n"
"/var/log/console.log 600 5 100 * J\n"
"/var/log/cron 600 3 100 * JC\n"
"/var/log/daily.log 640 7 * @T00 JN\n"
"/var/log/debug.log 600 7 100 * JC\n"
"/var/log/kerberos.log 600 7 100 * J\n"
"/var/log/lpd-errs 644 7 100 * JC\n"
"/var/log/maillog 640 7 * @T00 JC\n"
"/var/log/messages 644 5 100 @0101T JC\n"
"/var/log/monthly.log 640 12 * $M1D0 JN\n"
"/var/log/pflog 600 3 100 * JB /var/run/pflogd.pid\n"
"/var/log/ppp.log root:network 640 3 100 * JC\n"
"/var/log/devd.log 644 3 100 * JC\n"
"/var/log/security 600 10 100 * JC\n"
"/var/log/sendmail.st 640 10 * 168 B\n"
"/var/log/utx.log 644 3 * @01T05 B\n"
"/var/log/weekly.log 640 5 1 $W6D0 JN\n"
"/var/log/xferlog 600 7 100 * JC\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:912
msgid ""
"Each line starts with the name of the log to be rotated, optionally followed "
"by an owner and group for both rotated and newly created files. The `mode` "
"field sets the permissions on the log file and `count` denotes how many "
"rotated log files should be kept. The `size` and `when` fields tell "
"newsyslog when to rotate the file. A log file is rotated when either its "
"size is larger than the `size` field or when the time in the `when` field "
"has passed. An asterisk (`*`) means that this field is ignored. The "
"_flags_ field gives further instructions, such as how to compress the "
"rotated file or to create the log file if it is missing. The last two "
"fields are optional and specify the name of the Process ID (PID) file of a "
"process and a signal number to send to that process when the file is rotated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:915
msgid ""
"For more information on all fields, valid flags, and how to specify the "
"rotation time, refer to man:newsyslog.conf[5]. Since newsyslog is run from "
"man:cron[8], it cannot rotate files more often than it is scheduled to run "
"from man:cron[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:917
#, no-wrap
msgid "Configuring Remote Logging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:921
msgid ""
"Monitoring the log files of multiple hosts can become unwieldy as the number "
"of systems increases. Configuring centralized logging can reduce some of "
"the administrative burden of log file administration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:925
msgid ""
"In FreeBSD, centralized log file aggregation, merging, and rotation can be "
"configured using syslogd and newsyslog. This section demonstrates an "
"example configuration, where host `A`, named `logserv.example.com`, will "
"collect logging information for the local network. Host `B`, named "
"`logclient.example.com`, will be configured to pass logging information to "
"the logging server."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:926
#, no-wrap
msgid "Log Server Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:930
msgid ""
"A log server is a system that has been configured to accept logging "
"information from other hosts. Before configuring a log server, check the "
"following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:932
msgid ""
"If there is a firewall between the logging server and any logging clients, "
"ensure that the firewall ruleset allows UDP port 514 for both the clients "
"and the server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:933
msgid ""
"The logging server and all client machines must have forward and reverse "
"entries in the local DNS. If the network does not have a DNS server, create "
"entries in each system's [.filename]#/etc/hosts#. Proper name resolution is "
"required so that log entries are not rejected by the logging server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:936
msgid ""
"On the log server, edit [.filename]#/etc/syslog.conf# to specify the name of "
"the client to receive log entries from, the logging facility to be used, and "
"the name of the log to store the host's log entries. This example adds the "
"hostname of `B`, logs all facilities, and stores the log entries in [."
"filename]#/var/log/logclient.log#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/config/_index.adoc:937
#, no-wrap
msgid "Sample Log Server Configuration"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:945
#, no-wrap
msgid ""
"+logclient.example.com\n"
"*.* /var/log/logclient.log\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:951
msgid ""
"When adding multiple log clients, add a similar two-line entry for each "
"client. More information about the available facilities may be found in man:"
"syslog.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:953
msgid "Next, configure [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:958
#, no-wrap
msgid ""
"syslogd_enable=\"YES\"\n"
"syslogd_flags=\"-a logclient.example.com -v -v\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:964
msgid ""
"The first entry starts syslogd at system boot. The second entry allows log "
"entries from the specified client. The `-v -v` increases the verbosity of "
"logged messages. This is useful for tweaking facilities as administrators "
"are able to see what type of messages are being logged under each facility."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:968
msgid ""
"Multiple `-a` options may be specified to allow logging from multiple "
"clients. IP addresses and whole netblocks may also be specified. Refer to "
"man:syslogd[8] for a full list of possible options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:970
msgid "Finally, create the log file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:974
#, no-wrap
msgid "# touch /var/log/logclient.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:977
msgid "At this point, syslogd should be restarted and verified:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:982
#, no-wrap
msgid ""
"# service syslogd restart\n"
"# pgrep syslog\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:986
msgid ""
"If a PID is returned, the server restarted successfully, and client "
"configuration can begin. If the server did not restart, consult [."
"filename]#/var/log/messages# for the error."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:987
#, no-wrap
msgid "Log Client Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:991
msgid ""
"A logging client sends log entries to a logging server on the network. The "
"client also keeps a local copy of its own logs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:993
msgid ""
"Once a logging server has been configured, edit [.filename]#/etc/rc.conf# on "
"the logging client:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:998
#, no-wrap
msgid ""
"syslogd_enable=\"YES\"\n"
"syslogd_flags=\"-s -v -v\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1002
msgid ""
"The first entry enables syslogd on boot up. The second entry prevents logs "
"from being accepted by this client from other hosts (`-s`) and increases the "
"verbosity of logged messages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1005
msgid ""
"Next, define the logging server in the client's [.filename]#/etc/syslog."
"conf#. In this example, all logged facilities are sent to a remote system, "
"denoted by the `@` symbol, with the specified hostname:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1009
#, no-wrap
msgid "*.*\t\t@logserv.example.com\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1012
msgid "After saving the edit, restart syslogd for the changes to take effect:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1016
#: documentation/content/en/books/handbook/config/_index.adoc:1046
#, no-wrap
msgid "# service syslogd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1019
msgid ""
"To test that log messages are being sent across the network, use man:"
"logger[1] on the client to send a message to syslogd:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1023
#, no-wrap
msgid "# logger \"Test message from logclient\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1026
msgid ""
"This message should now exist both in [.filename]#/var/log/messages# on the "
"client and [.filename]#/var/log/logclient.log# on the log server."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1027
#, no-wrap
msgid "Debugging Log Servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1033
msgid ""
"If no messages are being received on the log server, the cause is most "
"likely a network connectivity issue, a hostname resolution issue, or a typo "
"in a configuration file. To isolate the cause, ensure that both the logging "
"server and the logging client are able to `ping` each other using the "
"hostname specified in their [.filename]#/etc/rc.conf#. If this fails, check "
"the network cabling, the firewall ruleset, and the hostname entries in the "
"DNS server or [.filename]#/etc/hosts# on both the logging server and "
"clients. Repeat until the `ping` is successful from both hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1037
msgid ""
"If the `ping` succeeds on both hosts but log messages are still not being "
"received, temporarily increase logging verbosity to narrow down the "
"configuration issue. In the following example, [.filename]#/var/log/"
"logclient.log# on the logging server is empty and [.filename]#/var/log/"
"messages# on the logging client does not indicate a reason for the failure. "
"To increase debugging output, edit the `syslogd_flags` entry on the logging "
"server and issue a restart:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1041
#, no-wrap
msgid "syslogd_flags=\"-d -a logclient.example.com -v -v\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1049
msgid ""
"Debugging data similar to the following will flash on the console "
"immediately after the restart:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1060
#, no-wrap
msgid ""
"logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart\n"
"syslogd: restarted\n"
"logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel\n"
"Logging to FILE /var/log/messages\n"
"syslogd: kernel boot file is /boot/kernel/kernel\n"
"cvthname(192.168.1.10)\n"
"validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;\n"
"rejected in rule 0 due to name mismatch.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1065
msgid ""
"In this example, the log messages are being rejected due to a typo which "
"results in a hostname mismatch. The client's hostname should be "
"`logclient`, not `logclien`. Fix the typo, issue a restart, and verify the "
"results:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1081
#, no-wrap
msgid ""
"# service syslogd restart\n"
"logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart\n"
"syslogd: restarted\n"
"logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel\n"
"syslogd: kernel boot file is /boot/kernel/kernel\n"
"logmsg: pri 166, flags 17, from logserv.example.com,\n"
"msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2\n"
"cvthname(192.168.1.10)\n"
"validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;\n"
"accepted in rule 0.\n"
"logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2\n"
"Logging to FILE /var/log/logclient.log\n"
"Logging to FILE /var/log/messages\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1084
msgid ""
"At this point, the messages are being properly received and placed in the "
"correct file."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1085
#, no-wrap
msgid "Security Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1091
msgid ""
"As with any network service, security requirements should be considered "
"before implementing a logging server. Log files may contain sensitive data "
"about services enabled on the local host, user accounts, and configuration "
"data. Network data sent from the client to the server will not be encrypted "
"or password protected. If a need for encryption exists, consider using "
"package:security/stunnel[], which will transmit the logging data over an "
"encrypted tunnel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1099
msgid ""
"Local security is also an issue. Log files are not encrypted during use or "
"after log rotation. Local users may access log files to gain additional "
"insight into system configuration. Setting proper permissions on log files "
"is critical. The built-in log rotator, newsyslog, supports setting "
"permissions on newly created and rotated log files. Setting log files to "
"mode `600` should prevent unwanted access by local users. Refer to man:"
"newsyslog.conf[5] for additional information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1101
#, no-wrap
msgid "Configuration Files"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1103
#, no-wrap
msgid "[.filename]#/etc# Layout"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1107
msgid ""
"There are a number of directories in which configuration information is "
"kept. These include:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1113
#, no-wrap
msgid "[.filename]#/etc#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1115
#, no-wrap
msgid "Generic system-specific configuration information."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1116
#, no-wrap
msgid "[.filename]#/etc/defaults#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1118
#, no-wrap
msgid "Default versions of system configuration files."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1119
#, no-wrap
msgid "[.filename]#/etc/mail#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1121
#, no-wrap
msgid "Extra man:sendmail[8] configuration and other MTA configuration files."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1122
#, no-wrap
msgid "[.filename]#/etc/ppp#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1124
#, no-wrap
msgid "Configuration for both user- and kernel-ppp programs."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1125
#, no-wrap
msgid "[.filename]#/usr/local/etc#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1127
#, no-wrap
msgid "Configuration files for installed applications. May contain per-application subdirectories."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1128
#, no-wrap
msgid "[.filename]#/usr/local/etc/rc.d#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1130
#, no-wrap
msgid "man:rc[8] scripts for installed applications."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1131
#, no-wrap
msgid "[.filename]#/var/db#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1132
#, no-wrap
msgid "Automatically generated system-specific database files, such as the package database and the man:locate[1] database."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1134
#, no-wrap
msgid "Hostnames"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1136
#, no-wrap
msgid "[.filename]#/etc/resolv.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1139
msgid ""
"How a FreeBSD system accesses the Internet Domain Name System (DNS) is "
"controlled by man:resolv.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1141
msgid "The most common entries to [.filename]#/etc/resolv.conf# are:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1147
#, no-wrap
msgid "`nameserver`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1149
#, no-wrap
msgid "The IP address of a name server the resolver should query. The servers are queried in the order listed with a maximum of three."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1150
#, no-wrap
msgid "`search`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1152
#, no-wrap
msgid "Search list for hostname lookup. This is normally determined by the domain of the local hostname."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1153
#, no-wrap
msgid "`domain`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/config/_index.adoc:1154
#, no-wrap
msgid "The local domain name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1157
msgid "A typical [.filename]#/etc/resolv.conf# looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1163
#, no-wrap
msgid ""
"search example.com\n"
"nameserver 147.11.1.11\n"
"nameserver 147.11.100.30\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1168
msgid "Only one of the `search` and `domain` options should be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1171
msgid ""
"When using DHCP, man:dhclient[8] usually rewrites [.filename]#/etc/resolv."
"conf# with information received from the DHCP server."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1172
#, no-wrap
msgid "[.filename]#/etc/hosts#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1177
msgid ""
"[.filename]#/etc/hosts# is a simple text database which works in conjunction "
"with DNS and NIS to provide host name to IP address mappings. Entries for "
"local computers connected via a LAN can be added to this file for simplistic "
"naming purposes instead of setting up a man:named[8] server. Additionally, "
"[.filename]#/etc/hosts# can be used to provide a local record of Internet "
"names, reducing the need to query external DNS servers for commonly accessed "
"names."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1212
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"#\n"
"# Host Database\n"
"#\n"
"# This file should contain the addresses and aliases for local hosts that\n"
"# share this file. Replace 'my.domain' below with the domainname of your\n"
"# machine.\n"
"#\n"
"# In the presence of the domain name service or NIS, this file may\n"
"# not be consulted at all; see /etc/nsswitch.conf for the resolution order.\n"
"#\n"
"#\n"
"::1\t\t\tlocalhost localhost.my.domain\n"
"127.0.0.1\t\tlocalhost localhost.my.domain\n"
"#\n"
"# Imaginary network.\n"
"#10.0.0.2\t\tmyname.my.domain myname\n"
"#10.0.0.3\t\tmyfriend.my.domain myfriend\n"
"#\n"
"# According to RFC 1918, you can use the following IP networks for\n"
"# private nets which will never be connected to the Internet:\n"
"#\n"
"#\t10.0.0.0\t- 10.255.255.255\n"
"#\t172.16.0.0\t- 172.31.255.255\n"
"#\t192.168.0.0\t- 192.168.255.255\n"
"#\n"
"# In case you want to be able to connect to the Internet, you need\n"
"# real official assigned numbers. Do not try to invent your own network\n"
"# numbers but instead get one from your network provider (if any) or\n"
"# from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)\n"
"#\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1215
msgid "The format of [.filename]#/etc/hosts# is as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1219
#, no-wrap
msgid "[Internet address] [official hostname] [alias1] [alias2] ...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1222
msgid "For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1226
#, no-wrap
msgid "10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1229
msgid "Consult man:hosts[5] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1231
#, no-wrap
msgid "Tuning with man:sysctl[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1236
msgid ""
"man:sysctl[8] is used to make changes to a running FreeBSD system. This "
"includes many advanced options of the TCP/IP stack and virtual memory system "
"that can dramatically improve performance for an experienced system "
"administrator. Over five hundred system variables can be read and set using "
"man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1238
msgid ""
"At its core, man:sysctl[8] serves two functions: to read and to modify "
"system settings."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1240
msgid "To view all readable variables:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1244
#, no-wrap
msgid "% sysctl -a\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1247
msgid "To read a particular variable, specify its name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1252
#, no-wrap
msgid ""
"% sysctl kern.maxproc\n"
"kern.maxproc: 1044\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1255
msgid "To set a particular variable, use the _variable_=_value_ syntax:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1260
#, no-wrap
msgid ""
"# sysctl kern.maxfiles=5000\n"
"kern.maxfiles: 2088 -> 5000\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1263
msgid ""
"Settings of sysctl variables are usually either strings, numbers, or "
"booleans, where a boolean is `1` for yes or `0` for no."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1266
msgid ""
"To automatically set some variables each time the machine boots, add them to "
"[.filename]#/etc/sysctl.conf#. For more information, refer to man:sysctl."
"conf[5] and <<configtuning-sysctlconf>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1268
#, no-wrap
msgid "[.filename]#sysctl.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1274
msgid ""
"The configuration file for man:sysctl[8], [.filename]#/etc/sysctl.conf#, "
"looks much like [.filename]#/etc/rc.conf#. Values are set in a "
"`variable=value` form. The specified values are set after the system goes "
"into multi-user mode. Not all variables are settable in this mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1276
msgid ""
"For example, to turn off logging of fatal signal exits and prevent users "
"from seeing processes started by other users, the following tunables can be "
"set in [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1281
#, no-wrap
msgid ""
"# Do not log fatal signal exits (e.g., sig 11)\n"
"kern.logsigexit=0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1285
#, no-wrap
msgid ""
"# Prevent users from seeing information about processes that\n"
"# are being run under another UID.\n"
"security.bsd.see_other_uids=0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1288
#, no-wrap
msgid "man:sysctl[8] Read-only"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1291
msgid ""
"In some cases it may be desirable to modify read-only man:sysctl[8] values, "
"which will require a reboot of the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1293
msgid ""
"For instance, on some laptop models the man:cardbus[4] device will not probe "
"memory ranges and will fail with errors similar to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1298
#, no-wrap
msgid ""
"cbb0: Could not map register memory\n"
"device_probe_and_attach: cbb0 attach returned 12\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1303
msgid ""
"The fix requires the modification of a read-only man:sysctl[8] setting. Add "
"`hw.pci.allow_unsupported_io_range=1` to [.filename]#/boot/loader.conf# and "
"reboot. Now man:cardbus[4] should work properly."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1305
#, no-wrap
msgid "Tuning Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1312
msgid ""
"The following section will discuss various tuning mechanisms and options "
"which may be applied to disk devices. In many cases, disks with mechanical "
"parts, such as SCSI drives, will be the bottleneck driving down the overall "
"system performance. While a solution is to install a drive without "
"mechanical parts, such as a solid state drive, mechanical drives are not "
"going away anytime in the near future. When tuning disks, it is advisable "
"to utilize the features of the man:iostat[8] command to test various changes "
"to the system. This command will allow the user to obtain valuable "
"information on system IO."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1313
#, no-wrap
msgid "Sysctl Variables"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1315
#, no-wrap
msgid "`vfs.vmiodirenable`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1326
msgid ""
"The `vfs.vmiodirenable` man:sysctl[8] variable may be set to either `0` "
"(off) or `1` (on). It is set to `1` by default. This variable controls how "
"directories are cached by the system. Most directories are small, using "
"just a single fragment (typically 1 K) in the file system and typically 512 "
"bytes in the buffer cache. With this variable turned off, the buffer cache "
"will only cache a fixed number of directories, even if the system has a huge "
"amount of memory. When turned on, this man:sysctl[8] allows the buffer "
"cache to use the VM page cache to cache the directories, making all the "
"memory available for caching directories. However, the minimum in-core "
"memory used to cache a directory is the physical page size (typically 4 K) "
"rather than 512 bytes. Keeping this option enabled is recommended if the "
"system is running any services which manipulate large numbers of files. "
"Such services can include web caches, large mail systems, and news systems. "
"Keeping this option on will generally not reduce performance, even with the "
"wasted memory, but one should experiment to find out."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1327
#, no-wrap
msgid "`vfs.write_behind`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1333
msgid ""
"The `vfs.write_behind` man:sysctl[8] variable defaults to `1` (on). This "
"tells the file system to issue media writes as full clusters are collected, "
"which typically occurs when writing large sequential files. This avoids "
"saturating the buffer cache with dirty buffers when it would not benefit I/O "
"performance. However, this may stall processes and under certain "
"circumstances should be turned off."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1334
#, no-wrap
msgid "`vfs.hirunningspace`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1340
msgid ""
"The `vfs.hirunningspace` man:sysctl[8] variable determines how much "
"outstanding write I/O may be queued to disk controllers system-wide at any "
"given instance. The default is usually sufficient, but on machines with "
"many disks, try bumping it up to four or five _megabytes_. Setting too high "
"a value which exceeds the buffer cache's write threshold can lead to bad "
"clustering performance. Do not set this value arbitrarily high as higher "
"write values may add latency to reads occurring at the same time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1343
msgid ""
"There are various other buffer cache and VM page cache related man:sysctl[8] "
"values. Modifying these values is not recommended as the VM system does a "
"good job of automatically tuning itself."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1344
#, no-wrap
msgid "`vm.swap_idle_enabled`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1352
msgid ""
"The `vm.swap_idle_enabled` man:sysctl[8] variable is useful in large multi-"
"user systems with many active login users and lots of idle processes. Such "
"systems tend to generate continuous pressure on free memory reserves. "
"Turning this feature on and tweaking the swapout hysteresis (in idle "
"seconds) via `vm.swap_idle_threshold1` and `vm.swap_idle_threshold2` "
"depresses the priority of memory pages associated with idle processes more "
"quickly then the normal pageout algorithm. This gives a helping hand to the "
"pageout daemon. Only turn this option on if needed, because the tradeoff is "
"essentially pre-page memory sooner rather than later which eats more swap "
"and disk bandwidth. In a small system this option will have a determinable "
"effect, but in a large system that is already doing moderate paging, this "
"option allows the VM system to stage whole processes into and out of memory "
"easily."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1353
#, no-wrap
msgid "`hw.ata.wc`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1361
msgid ""
"Turning off IDE write caching reduces write bandwidth to IDE disks, but may "
"sometimes be necessary due to data consistency issues introduced by hard "
"drive vendors. The problem is that some IDE drives lie about when a write "
"completes. With IDE write caching turned on, IDE hard drives write data to "
"disk out of order and will sometimes delay writing some blocks indefinitely "
"when under heavy disk load. A crash or power failure may cause serious file "
"system corruption. Check the default on the system by observing the `hw.ata."
"wc` man:sysctl[8] variable. If IDE write caching is turned off, one can set "
"this read-only variable to `1` in [.filename]#/boot/loader.conf# in order to "
"enable it at boot time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1363
msgid "For more information, refer to man:ata[4]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1364
#, no-wrap
msgid "`SCSI_DELAY` (`kern.cam.scsi_delay`)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1371
msgid ""
"The `SCSI_DELAY` kernel configuration option may be used to reduce system "
"boot times. The defaults are fairly high and can be responsible for `15` "
"seconds of delay in the boot process. Reducing it to `5` seconds usually "
"works with modern drives. The `kern.cam.scsi_delay` boot time tunable "
"should be used. The tunable and kernel configuration option accept values "
"in terms of _milliseconds_ and _not seconds_."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1373
#, no-wrap
msgid "Soft Updates"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1378
msgid ""
"To fine-tune a file system, use man:tunefs[8]. This program has many "
"different options. To toggle Soft Updates on and off, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1383
#, no-wrap
msgid ""
"# tunefs -n enable /filesystem\n"
"# tunefs -n disable /filesystem\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1387
msgid ""
"A file system cannot be modified with man:tunefs[8] while it is mounted. A "
"good time to enable Soft Updates is before any partitions have been mounted, "
"in single-user mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1394
msgid ""
"Soft Updates is recommended for UFS file systems as it drastically improves "
"meta-data performance, mainly file creation and deletion, through the use of "
"a memory cache. There are two downsides to Soft Updates to be aware of. "
"First, Soft Updates guarantee file system consistency in the case of a "
"crash, but could easily be several seconds or even a minute behind updating "
"the physical disk. If the system crashes, unwritten data may be lost. "
"Secondly, Soft Updates delay the freeing of file system blocks. If the root "
"file system is almost full, performing a major update, such as `make "
"installworld`, can cause the file system to run out of space and the update "
"to fail."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1395
#, no-wrap
msgid "More Details About Soft Updates"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1399
msgid ""
"Meta-data updates are updates to non-content data like inodes or "
"directories. There are two traditional approaches to writing a file "
"system's meta-data back to disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1412
msgid ""
"Historically, the default behavior was to write out meta-data updates "
"synchronously. If a directory changed, the system waited until the change "
"was actually written to disk. The file data buffers (file contents) were "
"passed through the buffer cache and backed up to disk later on "
"asynchronously. The advantage of this implementation is that it operates "
"safely. If there is a failure during an update, meta-data is always in a "
"consistent state. A file is either created completely or not at all. If "
"the data blocks of a file did not find their way out of the buffer cache "
"onto the disk by the time of the crash, man:fsck[8] recognizes this and "
"repairs the file system by setting the file length to `0`. Additionally, "
"the implementation is clear and simple. The disadvantage is that meta-data "
"changes are slow. For example, `rm -r` touches all the files in a directory "
"sequentially, but each directory change will be written synchronously to the "
"disk. This includes updates to the directory itself, to the inode table, "
"and possibly to indirect blocks allocated by the file. Similar "
"considerations apply for unrolling large hierarchies using `tar -x`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1423
msgid ""
"The second approach is to use asynchronous meta-data updates. This is the "
"default for a UFS file system mounted with `mount -o async`. Since all meta-"
"data updates are also passed through the buffer cache, they will be "
"intermixed with the updates of the file content data. The advantage of this "
"implementation is there is no need to wait until each meta-data update has "
"been written to disk, so all operations which cause huge amounts of meta-"
"data updates work much faster than in the synchronous case. This "
"implementation is still clear and simple, so there is a low risk for bugs "
"creeping into the code. The disadvantage is that there is no guarantee for "
"a consistent state of the file system If there is a failure during an "
"operation that updated large amounts of meta-data, like a power failure or "
"someone pressing the reset button, the file system will be left in an "
"unpredictable state. There is no opportunity to examine the state of the "
"file system when the system comes up again as the data blocks of a file "
"could already have been written to the disk while the updates of the inode "
"table or the associated directory were not. It is impossible to implement a "
"man:fsck[8] which is able to clean up the resulting chaos because the "
"necessary information is not available on the disk. If the file system has "
"been damaged beyond repair, the only choice is to reformat it and restore "
"from backup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1431
msgid ""
"The usual solution for this problem is to implement _dirty region logging_, "
"which is also referred to as _journaling_. Meta-data updates are still "
"written synchronously, but only into a small region of the disk. Later on, "
"they are moved to their proper location. Since the logging area is a small, "
"contiguous region on the disk, there are no long distances for the disk "
"heads to move, even during heavy operations, so these operations are quicker "
"than synchronous updates. Additionally, the complexity of the "
"implementation is limited, so the risk of bugs being present is low. A "
"disadvantage is that all meta-data is written twice, once into the logging "
"region and once to the proper location, so performance \"pessimization\" "
"might result. On the other hand, in case of a crash, all pending meta-data "
"operations can be either quickly rolled back or completed from the logging "
"area after the system comes up again, resulting in a fast file system "
"startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1447
msgid ""
"Kirk McKusick, the developer of Berkeley FFS, solved this problem with Soft "
"Updates. All pending meta-data updates are kept in memory and written out "
"to disk in a sorted sequence (\"ordered meta-data updates\"). This has the "
"effect that, in case of heavy meta-data operations, later updates to an item "
"\"catch\" the earlier ones which are still in memory and have not already "
"been written to disk. All operations are generally performed in memory "
"before the update is written to disk and the data blocks are sorted "
"according to their position so that they will not be on the disk ahead of "
"their meta-data. If the system crashes, an implicit \"log rewind\" causes "
"all operations which were not written to the disk appear as if they never "
"happened. A consistent file system state is maintained that appears to be "
"the one of 30 to 60 seconds earlier. The algorithm used guarantees that all "
"resources in use are marked as such in their blocks and inodes. After a "
"crash, the only resource allocation error that occurs is that resources are "
"marked as \"used\" which are actually \"free\". man:fsck[8] recognizes this "
"situation, and frees the resources that are no longer used. It is safe to "
"ignore the dirty state of the file system after a crash by forcibly mounting "
"it with `mount -f`. In order to free resources that may be unused, man:"
"fsck[8] needs to be run at a later time. This is the idea behind the "
"_background man:fsck[8]_: at system startup time, only a _snapshot_ of the "
"file system is recorded and man:fsck[8] is run afterwards. All file systems "
"can then be mounted \"dirty\", so the system startup proceeds in multi-user "
"mode. Then, background man:fsck[8] is scheduled for all file systems where "
"this is required, to free resources that may be unused. File systems that "
"do not use Soft Updates still need the usual foreground man:fsck[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1454
msgid ""
"The advantage is that meta-data operations are nearly as fast as "
"asynchronous updates and are faster than _logging_, which has to write the "
"meta-data twice. The disadvantages are the complexity of the code, a higher "
"memory consumption, and some idiosyncrasies. After a crash, the state of "
"the file system appears to be somewhat \"older\". In situations where the "
"standard synchronous approach would have caused some zero-length files to "
"remain after the man:fsck[8], these files do not exist at all with Soft "
"Updates because neither the meta-data nor the file contents have been "
"written to disk. Disk space is not released until the updates have been "
"written to disk, which may take place some time after running man:rm[1]. "
"This may cause problems when installing large amounts of data on a file "
"system that does not have enough free space to hold all the files twice."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1456
#, no-wrap
msgid "Tuning Kernel Limits"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1459
#, no-wrap
msgid "File/Process Limits"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1462
#, no-wrap
msgid "`kern.maxfiles`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1467
msgid ""
"The `kern.maxfiles` man:sysctl[8] variable can be raised or lowered based "
"upon system requirements. This variable indicates the maximum number of "
"file descriptors on the system. When the file descriptor table is full, "
"`file: table is full` will show up repeatedly in the system message buffer, "
"which can be viewed using man:dmesg[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1470
msgid ""
"Each open file, socket, or fifo uses one file descriptor. A large-scale "
"production server may easily require many thousands of file descriptors, "
"depending on the kind and number of services running concurrently."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1476
msgid ""
"In older FreeBSD releases, the default value of `kern.maxfiles` is derived "
"from `maxusers` in the kernel configuration file. `kern.maxfiles` grows "
"proportionally to the value of `maxusers`. When compiling a custom kernel, "
"consider setting this kernel configuration option according to the use of "
"the system. From this number, the kernel is given most of its pre-defined "
"limits. Even though a production machine may not have 256 concurrent users, "
"the resources needed may be similar to a high-scale web server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1482
msgid ""
"The read-only man:sysctl[8] variable `kern.maxusers` is automatically sized "
"at boot based on the amount of memory available in the system, and may be "
"determined at run-time by inspecting the value of `kern.maxusers`. Some "
"systems require larger or smaller values of `kern.maxusers` and values of "
"`64`, `128`, and `256` are not uncommon. Going above `256` is not "
"recommended unless a huge number of file descriptors is needed. Many of the "
"tunable values set to their defaults by `kern.maxusers` may be individually "
"overridden at boot-time or run-time in [.filename]#/boot/loader.conf#. "
"Refer to man:loader.conf[5] and [.filename]#/boot/defaults/loader.conf# for "
"more details and some hints."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1490
msgid ""
"In older releases, the system will auto-tune `maxusers` if it is set to `0`. "
"footnote:[The auto-tuning algorithm sets maxusers equal to the amount of "
"memory in the system, with a minimum of 32, and a maximum of 384.]. When "
"setting this option, set `maxusers` to at least `4`, especially if the "
"system runs Xorg or is used to compile software. The most important table "
"set by `maxusers` is the maximum number of processes, which is set to `20 + "
"16 * maxusers`. If `maxusers` is set to `1`, there can only be `36` "
"simultaneous processes, including the `18` or so that the system starts up "
"at boot time and the `15` or so used by Xorg. Even a simple task like "
"reading a manual page will start up nine processes to filter, decompress, "
"and view it. Setting `maxusers` to `64` allows up to `1044` simultaneous "
"processes, which should be enough for nearly all uses. If, however, the "
"error is displayed when trying to start another program, or a server is "
"running with a large number of simultaneous users, increase the number and "
"rebuild."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1495
msgid ""
"`maxusers` does _not_ limit the number of users which can log into the "
"machine. It instead sets various table sizes to reasonable values "
"considering the maximum number of users on the system and how many processes "
"each user will be running."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1497
#, no-wrap
msgid "`kern.ipc.soacceptqueue`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1504
msgid ""
"The `kern.ipc.soacceptqueue` man:sysctl[8] variable limits the size of the "
"listen queue for accepting new `TCP` connections. The default value of "
"`128` is typically too low for robust handling of new connections on a "
"heavily loaded web server. For such environments, it is recommended to "
"increase this value to `1024` or higher. A service such as man:sendmail[8], "
"or Apache may itself limit the listen queue size, but will often have a "
"directive in its configuration file to adjust the queue size. Large listen "
"queues do a better job of avoiding Denial of Service (DoS) attacks."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1506
#, no-wrap
msgid "Network Limits"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1517
msgid ""
"The `NMBCLUSTERS` kernel configuration option dictates the amount of network "
"Mbufs available to the system. A heavily-trafficked server with a low "
"number of Mbufs will hinder performance. Each cluster represents "
"approximately 2 K of memory, so a value of `1024` represents `2` megabytes "
"of kernel memory reserved for network buffers. A simple calculation can be "
"done to figure out how many are needed. A web server which maxes out at "
"`1000` simultaneous connections where each connection uses a 6 K receive and "
"16 K send buffer, requires approximately 32 MB worth of network buffers to "
"cover the web server. A good rule of thumb is to multiply by `2`, so 2x32 "
"MB / 2 KB = 64 MB / 2 kB = `32768`. Values between `4096` and `32768` are "
"recommended for machines with greater amounts of memory. Never specify an "
"arbitrarily high value for this parameter as it could lead to a boot time "
"crash. To observe network cluster usage, use `-m` with man:netstat[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1520
msgid ""
"The `kern.ipc.nmbclusters` loader tunable should be used to tune this at "
"boot time. Only older versions of FreeBSD will require the use of the "
"`NMBCLUSTERS` kernel man:config[8] option."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1525
msgid ""
"For busy servers that make extensive use of the man:sendfile[2] system call, "
"it may be necessary to increase the number of man:sendfile[2] buffers via "
"the `NSFBUFS` kernel configuration option or by setting its value in [."
"filename]#/boot/loader.conf# (see man:loader[8] for details). A common "
"indicator that this parameter needs to be adjusted is when processes are "
"seen in the `sfbufa` state. The man:sysctl[8] variable `kern.ipc.nsfbufs` "
"is read-only. This parameter nominally scales with `kern.maxusers`, however "
"it may be necessary to tune accordingly."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1529
msgid ""
"Even though a socket has been marked as non-blocking, calling man:"
"sendfile[2] on the non-blocking socket may result in the man:sendfile[2] "
"call blocking until enough ``struct sf_buf``'s are made available."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1531
#, no-wrap
msgid "`net.inet.ip.portrange.*`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1543
msgid ""
"The `net.inet.ip.portrange.*` man:sysctl[8] variables control the port "
"number ranges automatically bound to `TCP` and `UDP` sockets. There are "
"three ranges: a low range, a default range, and a high range. Most network "
"programs use the default range which is controlled by `net.inet.ip.portrange."
"first` and `net.inet.ip.portrange.last`, which default to `1024` and `5000`, "
"respectively. Bound port ranges are used for outgoing connections and it is "
"possible to run the system out of ports under certain circumstances. This "
"most commonly occurs when running a heavily loaded web proxy. The port "
"range is not an issue when running a server which handles mainly incoming "
"connections, such as a web server, or has a limited number of outgoing "
"connections, such as a mail relay. For situations where there is a shortage "
"of ports, it is recommended to increase `net.inet.ip.portrange.last` "
"modestly. A value of `10000`, `20000` or `30000` may be reasonable. "
"Consider firewall effects when changing the port range. Some firewalls may "
"block large ranges of ports, usually low-numbered ports, and expect systems "
"to use higher ranges of ports for outgoing connections. For this reason, it "
"is not recommended that the value of `net.inet.ip.portrange.first` be "
"lowered."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1544
#, no-wrap
msgid "Virtual Memory"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1546
#, no-wrap
msgid "`kern.maxvnodes`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1553
msgid ""
"A vnode is the internal representation of a file or directory. Increasing "
"the number of vnodes available to the operating system reduces disk I/O. "
"Normally, this is handled by the operating system and does not need to be "
"changed. In some cases where disk I/O is a bottleneck and the system is "
"running out of vnodes, this setting needs to be increased. The amount of "
"inactive and free RAM will need to be taken into account."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1555
msgid "To see the current number of vnodes in use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1560
#, no-wrap
msgid ""
"# sysctl vfs.numvnodes\n"
"vfs.numvnodes: 91349\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1563
msgid "To see the maximum vnodes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1568
#, no-wrap
msgid ""
"# sysctl kern.maxvnodes\n"
"kern.maxvnodes: 100000\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1574
msgid ""
"If the current vnode usage is near the maximum, try increasing `kern."
"maxvnodes` by a value of `1000`. Keep an eye on the number of `vfs."
"numvnodes`. If it climbs up to the maximum again, `kern.maxvnodes` will "
"need to be increased further. Otherwise, a shift in memory usage as "
"reported by man:top[1] should be visible and more memory should be active."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1576
#, no-wrap
msgid "Adding Swap Space"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1580
msgid ""
"Sometimes a system requires more swap space. This section describes two "
"methods to increase swap space: adding swap to an existing partition or new "
"hard drive, and creating a swap file on an existing partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1582
msgid ""
"For information on how to encrypt swap space, which options exist, and why "
"it should be done, refer to crossref:disks[swap-encrypting,“Encrypting "
"Swap”]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1584
#, no-wrap
msgid "Swap on a New Hard Drive or Existing Partition"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1588
msgid ""
"Adding a new hard drive for swap gives better performance than using a "
"partition on an existing drive. Setting up partitions and hard drives is "
"explained in crossref:disks[disks-adding,“Adding Disks”] while crossref:"
"bsdinstall[configtuning-initial,“Designing the Partition Layout”] discusses "
"partition layouts and swap partition size considerations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1591
msgid "Use `swapon` to add a swap partition to the system. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1595
#, no-wrap
msgid "# swapon /dev/ada1s1b\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1603
msgid ""
"It is possible to use any partition not currently mounted, even if it "
"already contains data. Using `swapon` on a partition that contains data "
"will overwrite and destroy that data. Make sure that the partition to be "
"added as swap is really the intended partition before running `swapon`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1606
msgid ""
"To automatically add this swap partition on boot, add an entry to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1610
#, no-wrap
msgid "/dev/ada1s1b\tnone\tswap\tsw\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1614
msgid ""
"See man:fstab[5] for an explanation of the entries in [.filename]#/etc/"
"fstab#. More information about `swapon` can be found in man:swapon[8]."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/config/_index.adoc:1616
#: documentation/content/en/books/handbook/config/_index.adoc:1624
#, no-wrap
msgid "Creating a Swap File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1619
msgid ""
"These examples create a 512M swap file called [.filename]#/usr/swap0# "
"instead of using a partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1622
msgid ""
"Using swap files requires that the module needed by man:md[4] has either "
"been built into the kernel or has been loaded before swap is enabled. See "
"crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel] for "
"information about building a custom kernel."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1629
msgid "Create the swap file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1633
#, no-wrap
msgid "# dd if=/dev/zero of=/usr/swap0 bs=1m count=512\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1636
msgid "Set the proper permissions on the new file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1640
#, no-wrap
msgid "# chmod 0600 /usr/swap0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1643
msgid ""
"Inform the system about the swap file by adding a line to [.filename]#/etc/"
"fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1647
#, no-wrap
msgid "md\tnone\tswap\tsw,file=/usr/swap0,late\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1650
msgid ""
"Swap space will be added on system startup. To add swap space immediately, "
"use man:swapon[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1654
#, no-wrap
msgid "# swapon -aL\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/config/_index.adoc:1659
#, no-wrap
msgid "Power and Resource Management"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1669
msgid ""
"It is important to utilize hardware resources in an efficient manner. Power "
"and resource management allows the operating system to monitor system limits "
"and to possibly provide an alert if the system temperature increases "
"unexpectedly. An early specification for providing power management was the "
"Advanced Power Management (APM) facility. APM controls the power usage of a "
"system based on its activity. However, it was difficult and inflexible for "
"operating systems to manage the power usage and thermal properties of a "
"system. The hardware was managed by the BIOS and the user had limited "
"configurability and visibility into the power management settings. The "
"APMBIOS is supplied by the vendor and is specific to the hardware platform. "
"An APM driver in the operating system mediates access to the APM Software "
"Interface, which allows management of power levels."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1677
msgid ""
"There are four major problems in APM. First, power management is done by "
"the vendor-specific BIOS, separate from the operating system. For example, "
"the user can set idle-time values for a hard drive in the APMBIOS so that, "
"when exceeded, the BIOS spins down the hard drive without the consent of the "
"operating system. Second, the APM logic is embedded in the BIOS, and it "
"operates outside the scope of the operating system. This means that users "
"can only fix problems in the APMBIOS by flashing a new one into the ROM, "
"which is a dangerous procedure with the potential to leave the system in an "
"unrecoverable state if it fails. Third, APM is a vendor-specific "
"technology, meaning that there is a lot of duplication of efforts and bugs "
"found in one vendor's BIOS may not be solved in others. Lastly, the APMBIOS "
"did not have enough room to implement a sophisticated power policy or one "
"that can adapt well to the purpose of the machine."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1682
msgid ""
"The Plug and Play BIOS (PNPBIOS) was unreliable in many situations. PNPBIOS "
"is 16-bit technology, so the operating system has to use 16-bit emulation in "
"order to interface with PNPBIOS methods. FreeBSD provides an APM driver as "
"APM should still be used for systems manufactured at or before the year "
"2000. The driver is documented in man:apm[4]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1686
msgid ""
"The successor to APM is the Advanced Configuration and Power Interface "
"(ACPI). ACPI is a standard written by an alliance of vendors to provide an "
"interface for hardware resources and power management. It is a key element "
"in _Operating System-directed configuration and Power Management_ as it "
"provides more control and flexibility to the operating system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1689
msgid ""
"This chapter demonstrates how to configure ACPI on FreeBSD. It then offers "
"some tips on how to debug ACPI and how to submit a problem report containing "
"debugging information so that developers can diagnosis and fix ACPI issues."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1691
#, no-wrap
msgid "Configuring ACPI"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1696
msgid ""
"In FreeBSD the man:acpi[4] driver is loaded by default at system boot and "
"should _not_ be compiled into the kernel. This driver cannot be unloaded "
"after boot because the system bus uses it for various hardware "
"interactions. However, if the system is experiencing problems, ACPI can be "
"disabled altogether by rebooting after setting `hint.acpi.0.disabled=\"1\"` "
"in [.filename]#/boot/loader.conf# or by setting this variable at the loader "
"prompt, as described in crossref:boot[boot-loader,“Stage Three”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1701
msgid ""
"ACPI and APM cannot coexist and should be used separately. The last one to "
"load will terminate if the driver notices the other is running."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1706
msgid ""
"ACPI can be used to put the system into a sleep mode with `acpiconf`, the `-"
"s` flag, and a number from `1` to `5`. Most users only need `1` (quick "
"suspend to RAM) or `3` (suspend to RAM). Option `5` performs a soft-off "
"which is the same as running `halt -p`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1711
msgid ""
"The man:acpi_video[4] driver uses link:https://uefi.org/specs/ACPI/6.4/"
"Apx_B_Video_Extensions/Apx_B_Video_Extensions.html[ACPI Video Extensions] to "
"control display switching and backlight brightness. It must be loaded after "
"any of the DRM kernel modules. After loading the driver, the kbd:[Fn] "
"brightness keys will change the brightness of the screen. It is possible to "
"check the ACPI events by inspecting [.filename]#/var/run/devd.pipe#:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1719
msgid ""
"... # cat /var/run/devd.pipe !system=ACPI subsystem=Video type=brightness "
"notify=62 !system=ACPI subsystem=Video type=brightness notify=63 !"
"system=ACPI subsystem=Video type=brightness notify=64 ..."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1722
msgid ""
"Other options are available using `sysctl`. Refer to man:acpi[4] and man:"
"acpiconf[8] for more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1724
#, no-wrap
msgid "Common Problems"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1731
msgid ""
"ACPI is present in all modern computers that conform to the ia32 (x86) and "
"amd64 (AMD) architectures. The full standard has many features including "
"CPU performance management, power planes control, thermal zones, various "
"battery systems, embedded controllers, and bus enumeration. Most systems "
"implement less than the full standard. For instance, a desktop system "
"usually only implements bus enumeration while a laptop might have cooling "
"and battery management support as well. Laptops also have suspend and "
"resume, with their own associated complexity."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1735
msgid ""
"An ACPI-compliant system has various components. The BIOS and chipset "
"vendors provide various fixed tables, such as FADT, in memory that specify "
"things like the APIC map (used for SMP), config registers, and simple "
"configuration values. Additionally, a bytecode table, the Differentiated "
"System Description Table DSDT, specifies a tree-like name space of devices "
"and methods."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1741
msgid ""
"The ACPI driver must parse the fixed tables, implement an interpreter for "
"the bytecode, and modify device drivers and the kernel to accept information "
"from the ACPI subsystem. For FreeBSD, Intel(R) has provided an interpreter "
"(ACPI-CA) that is shared with Linux(R) and NetBSD. The path to the ACPI-CA "
"source code is [.filename]#src/sys/contrib/dev/acpica#. The glue code that "
"allows ACPI-CA to work on FreeBSD is in [.filename]#src/sys/dev/acpica/"
"Osd#. Finally, drivers that implement various ACPI devices are found in [."
"filename]#src/sys/dev/acpica#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1745
msgid ""
"For ACPI to work correctly, all the parts have to work correctly. Here are "
"some common problems, in order of frequency of appearance, and some possible "
"workarounds or fixes. If a fix does not resolve the issue, refer to <<ACPI-"
"submitdebug>> for instructions on how to submit a bug report."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1746
#, no-wrap
msgid "Mouse Issues"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1750
msgid ""
"In some cases, resuming from a suspend operation will cause the mouse to "
"fail. A known work around is to add `hint.psm.0.flags=\"0x3000\"` to [."
"filename]#/boot/loader.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1751
#, no-wrap
msgid "Suspend/Resume"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1757
msgid ""
"ACPI has three suspend to RAM (STR) states, `S1`-`S3`, and one suspend to "
"disk state (STD), called `S4`. STD can be implemented in two separate "
"ways. The ``S4``BIOS is a BIOS-assisted suspend to disk and ``S4``OS is "
"implemented entirely by the operating system. The normal state the system "
"is in when plugged in but not powered up is \"soft off\" (`S5`)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1760
msgid ""
"Use `sysctl hw.acpi` to check for the suspend-related items. These example "
"results are from a Thinkpad:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1765
#, no-wrap
msgid ""
"hw.acpi.supported_sleep_state: S3 S4 S5\n"
"hw.acpi.s4bios: 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1769
msgid ""
"Use `acpiconf -s` to test `S3`, `S4`, and `S5`. An `s4bios` of one (`1`) "
"indicates ``S4``BIOS support instead of `S4` operating system support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1775
msgid ""
"When testing suspend/resume, start with `S1`, if supported. This state is "
"most likely to work since it does not require much driver support. No one "
"has implemented `S2`, which is similar to `S1`. Next, try `S3`. This is "
"the deepest STR state and requires a lot of driver support to properly "
"reinitialize the hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1778
msgid ""
"A common problem with suspend/resume is that many device drivers do not "
"save, restore, or reinitialize their firmware, registers, or device memory "
"properly. As a first attempt at debugging the problem, try:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1784
#, no-wrap
msgid ""
"# sysctl debug.bootverbose=1\n"
"# sysctl debug.acpi.suspend_bounce=1\n"
"# acpiconf -s 3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1789
msgid ""
"This test emulates the suspend/resume cycle of all device drivers without "
"actually going into `S3` state. In some cases, problems such as losing "
"firmware state, device watchdog time out, and retrying forever, can be "
"captured with this method. Note that the system will not really enter `S3` "
"state, which means devices may not lose power, and many will work fine even "
"if suspend/resume methods are totally missing, unlike real `S3` state."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1791
msgid ""
"If the previous test worked, on a laptop it is possible to configure the "
"system to suspend into `S3` on lid close and resume when it is open back "
"again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1795
#, no-wrap
msgid "# sysctl hw.acpi.lid_switch_state=S3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1798
msgid "This change can be made persistent across reboots:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1802
#, no-wrap
msgid "# echo 'hw.acpi.lid_switch_state=S3' >> /etc/sysctl.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1805
msgid ""
"Harder cases require additional hardware, such as a serial port and cable "
"for debugging through a serial console, a Firewire port and cable for using "
"man:dcons[4], and kernel debugging skills."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1812
msgid ""
"To help isolate the problem, unload as many drivers as possible. If it "
"works, narrow down which driver is the problem by loading drivers until it "
"fails again. Typically, binary drivers like [.filename]#nvidia.ko#, display "
"drivers, and USB will have the most problems while Ethernet interfaces "
"usually work fine. If drivers can be properly loaded and unloaded, automate "
"this by putting the appropriate commands in [.filename]#/etc/rc.suspend# and "
"[.filename]#/etc/rc.resume#. Try setting `hw.acpi.reset_video` to `1` if "
"the display is messed up after resume. Try setting longer or shorter values "
"for `hw.acpi.sleep_delay` to see if that helps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1818
msgid ""
"Try loading a recent Linux(R) distribution to see if suspend/resume works on "
"the same hardware. If it works on Linux(R), it is likely a FreeBSD driver "
"problem. Narrowing down which driver causes the problem will assist "
"developers in fixing the problem. Since the ACPI maintainers rarely "
"maintain other drivers, such as sound or ATA, any driver problems should "
"also be posted to the {freebsd-current} and mailed to the driver "
"maintainer. Advanced users can include debugging man:printf[3]s in a "
"problematic driver to track down where in its resume function it hangs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1822
msgid ""
"Finally, try disabling ACPI and enabling APM instead. If suspend/resume "
"works with APM, stick with APM, especially on older hardware (pre-2000). It "
"took vendors a while to get ACPI support correct and older hardware is more "
"likely to have BIOS problems with ACPI."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1823
#, no-wrap
msgid "System Hangs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1827
msgid ""
"Most system hangs are a result of lost interrupts or an interrupt storm. "
"Chipsets may have problems based on boot, how the BIOS configures interrupts "
"before correctness of the APIC (MADT) table, and routing of the System "
"Control Interrupt (SCI)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1831
msgid ""
"Interrupt storms can be distinguished from lost interrupts by checking the "
"output of `vmstat -i` and looking at the line that has `acpi0`. If the "
"counter is increasing at more than a couple per second, there is an "
-"interrupt storm. If the system appears hung, try breaking to DDB (kbd:[CTRL"
-"+ALT+ESC] on console) and type `show interrupts`."
+"interrupt storm. If the system appears hung, try breaking to DDB (kbd:"
+"[CTRL+ALT+ESC] on console) and type `show interrupts`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1833
msgid ""
"When dealing with interrupt problems, try disabling APIC support with `hint."
"apic.0.disabled=\"1\"` in [.filename]#/boot/loader.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1834
#, no-wrap
msgid "Panics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1841
msgid ""
"Panics are relatively rare for ACPI and are the top priority to be fixed. "
"The first step is to isolate the steps to reproduce the panic, if possible, "
"and get a backtrace. Follow the advice for enabling `options DDB` and "
"setting up a serial console in crossref:serialcomms[serialconsole-"
"ddb,“Entering the DDB Debugger from the Serial Line”] or setting up a dump "
"partition. To get a backtrace in DDB, use `tr`. When handwriting the "
"backtrace, get at least the last five and the top five lines in the trace."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1845
msgid ""
"Then, try to isolate the problem by booting with ACPI disabled. If that "
"works, isolate the ACPI subsystem by using various values of `debug.acpi."
"disable`. See man:acpi[4] for some examples."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1846
#, no-wrap
msgid "System Powers Up After Suspend or Shutdown"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1852
msgid ""
"First, try setting `hw.acpi.disable_on_poweroff=\"0\"` in [.filename]#/boot/"
"loader.conf#. This keeps ACPI from disabling various events during the "
"shutdown process. Some systems need this value set to `1` (the default) for "
"the same reason. This usually fixes the problem of a system powering up "
"spontaneously after a suspend or poweroff."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/config/_index.adoc:1854
#, no-wrap
msgid "BIOS Contains Buggy Bytecode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1858
msgid ""
"Some BIOS vendors provide incorrect or buggy bytecode. This is usually "
"manifested by kernel console messages like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1863
#, no-wrap
msgid ""
"ACPI-1287: *** Error: Method execution failed [\\\\_SB_.PCI0.LPC0.FIGD._STA] \\\\\n"
"(Node 0xc3f6d160), AE_NOT_FOUND\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1867
msgid ""
"Often, these problems may be resolved by updating the BIOS to the latest "
"revision. Most console messages are harmless, but if there are other "
"problems, like the battery status is not working, these messages are a good "
"place to start looking for problems."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1868
#, no-wrap
msgid "Overriding the Default AML"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1872
msgid ""
"The BIOS bytecode, known as ACPI Machine Language (AML), is compiled from a "
"source language called ACPI Source Language (ASL). The AML is found in the "
"table known as the Differentiated System Description Table (DSDT)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1877
msgid ""
"The goal of FreeBSD is for everyone to have working ACPI without any user "
"intervention. Workarounds are still being developed for common mistakes "
"made by BIOS vendors. The Microsoft(R) interpreter ([.filename]#acpi.sys# "
"and [.filename]#acpiec.sys#) does not strictly check for adherence to the "
"standard, and thus many BIOS vendors who only test ACPI under Windows(R) "
"never fix their ASL. FreeBSD developers continue to identify and document "
"which non-standard behavior is allowed by Microsoft(R)'s interpreter and "
"replicate it so that FreeBSD can work without forcing users to fix the ASL."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1880
msgid ""
"To help identify buggy behavior and possibly fix it manually, a copy can be "
"made of the system's ASL. To copy the system's ASL to a specified file "
"name, use `acpidump` with `-t`, to show the contents of the fixed tables, "
"and `-d`, to disassemble the AML:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1884
#, no-wrap
msgid "# acpidump -td > my.asl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1888
msgid ""
"Some AML versions assume the user is running Windows(R). To override this, "
"set `hw.acpi.osname=_\"Windows 2009\"_` in [.filename]#/boot/loader.conf#, "
"using the most recent Windows(R) version listed in the ASL."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1892
msgid ""
"Other workarounds may require [.filename]#my.asl# to be customized. If this "
"file is edited, compile the new ASL using the following command. Warnings "
"can usually be ignored, but errors are bugs that will usually prevent ACPI "
"from working correctly."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1896
#, no-wrap
msgid "# iasl -f my.asl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1900
msgid ""
"Including `-f` forces creation of the AML, even if there are errors during "
"compilation. Some errors, such as missing return statements, are "
"automatically worked around by the FreeBSD interpreter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1903
msgid ""
"The default output filename for `iasl` is [.filename]#DSDT.aml#. Load this "
"file instead of the BIOS's buggy copy, which is still present in flash "
"memory, by editing [.filename]#/boot/loader.conf# as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1908
#, no-wrap
msgid ""
"acpi_dsdt_load=\"YES\"\n"
"acpi_dsdt_name=\"/boot/DSDT.aml\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1912
msgid ""
"Be sure to copy [.filename]#DSDT.aml# to [.filename]#/boot#, then reboot the "
"system. If this fixes the problem, send a man:diff[1] of the old and new "
"ASL to {freebsd-acpi} so that developers can work around the buggy behavior "
"in [.filename]#acpica#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1914
#, no-wrap
msgid "Getting and Submitting Debugging Info"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1922
msgid ""
"The ACPI driver has a flexible debugging facility. A set of subsystems and "
"the level of verbosity can be specified. The subsystems to debug are "
"specified as layers and are broken down into components "
"(`ACPI_ALL_COMPONENTS`) and ACPI hardware support (`ACPI_ALL_DRIVERS`). The "
"verbosity of debugging output is specified as the level and ranges from just "
"report errors (`ACPI_LV_ERROR`) to everything (`ACPI_LV_VERBOSE`). The "
"level is a bitmask so multiple options can be set at once, separated by "
"spaces. In practice, a serial console should be used to log the output so "
"it is not lost as the console message buffer flushes. A full list of the "
"individual layers and levels is found in man:acpi[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1926
msgid ""
"Debugging output is not enabled by default. To enable it, add `options "
"ACPI_DEBUG` to the custom kernel configuration file if ACPI is compiled into "
"the kernel. Add `ACPI_DEBUG=1` to [.filename]#/etc/make.conf# to enable it "
"globally. If a module is used instead of a custom kernel, recompile just "
"the [.filename]#acpi.ko# module as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1930
#, no-wrap
msgid "# cd /sys/modules/acpi/acpi && make clean && make ACPI_DEBUG=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1934
msgid ""
"Copy the compiled [.filename]#acpi.ko# to [.filename]#/boot/kernel# and add "
"the desired level and layer to [.filename]#/boot/loader.conf#. The entries "
"in this example enable debug messages for all ACPI components and hardware "
"drivers and output error messages at the least verbose level:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1939
#, no-wrap
msgid ""
"debug.acpi.layer=\"ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS\"\n"
"debug.acpi.level=\"ACPI_LV_ERROR\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1944
msgid ""
"If the required information is triggered by a specific event, such as a "
"suspend and then resume, do not modify [.filename]#/boot/loader.conf#. "
"Instead, use `sysctl` to specify the layer and level after booting and "
"preparing the system for the specific event. The variables which can be set "
"using `sysctl` are named the same as the tunables in [.filename]#/boot/"
"loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1946
msgid ""
"Once the debugging information is gathered, it can be sent to {freebsd-acpi} "
"so that it can be used by the FreeBSD ACPI maintainers to identify the root "
"cause of the problem and to develop a solution."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/config/_index.adoc:1950
msgid ""
"Before submitting debugging information to this mailing list, ensure the "
"latest BIOS version is installed and, if available, the embedded controller "
"firmware version."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1953
msgid "When submitting a problem report, include the following information:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1955
msgid ""
"Description of the buggy behavior, including system type, model, and "
"anything that causes the bug to appear. Note as accurately as possible when "
"the bug began occurring if it is new."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1956
msgid ""
"The output of `dmesg` after running `boot -v`, including any error messages "
"generated by the bug."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1957
msgid ""
"The `dmesg` output from `boot -v` with ACPI disabled, if disabling ACPI "
"helps to fix the problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1958
msgid ""
"Output from `sysctl hw.acpi`. This lists which features the system offers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1959
msgid ""
"The URL to a pasted version of the system's ASL. Do _not_ send the ASL "
"directly to the list as it can be very large. Generate a copy of the ASL by "
"running this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/config/_index.adoc:1963
#, no-wrap
msgid "# acpidump -dt > name-system.asl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1967
msgid ""
"Substitute the login name for _name_ and manufacturer/model for _system_. "
"For example, use [.filename]#njl-FooCo6000.asl#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1974
msgid ""
"Most FreeBSD developers watch the {freebsd-current}, but one should submit "
"problems to {freebsd-acpi} to be sure it is seen. Be patient when waiting "
"for a response. If the bug is not immediately apparent, submit a bug "
"report. When entering a PR, include the same information as requested "
"above. This helps developers to track the problem and resolve it. Do not "
"send a PR without emailing {freebsd-acpi} first as it is likely that the "
"problem has been reported before."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/config/_index.adoc:1976
#, no-wrap
msgid "References"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1979
msgid "More information about ACPI may be found in the following locations:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1981
msgid ""
"The FreeBSD ACPI Mailing List Archives (https://lists.freebsd.org/pipermail/"
"freebsd-acpi/[https://lists.freebsd.org/pipermail/freebsd-acpi/])"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1982
msgid ""
"The ACPI 2.0 Specification (http://acpi.info/spec.htm[http://acpi.info/spec."
"htm])"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/config/_index.adoc:1982
msgid ""
"man:acpi[4], man:acpi_thermal[4], man:acpidump[8], man:iasl[8], and man:"
"acpidb[8]"
msgstr ""
diff --git a/documentation/content/en/books/handbook/cutting-edge/_index.po b/documentation/content/en/books/handbook/cutting-edge/_index.po
index a67a2628b3..d6289eae69 100644
--- a/documentation/content/en/books/handbook/cutting-edge/_index.po
+++ b/documentation/content/en/books/handbook/cutting-edge/_index.po
@@ -1,2200 +1,2207 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1
#, no-wrap
msgid "Information about how to keep a FreeBSD system up-to-date with freebsd-update or Git, how to rebuild and reinstall the entire base system, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1
#, no-wrap
-msgid "Chapter 24. Updating and Upgrading FreeBSD"
+msgid "Chapter 25. Updating and Upgrading FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:15
#, no-wrap
msgid "Updating and Upgrading FreeBSD"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:60
msgid ""
"FreeBSD is under constant development between releases. Some people prefer "
"to use the officially released versions, while others prefer to keep in sync "
"with the latest developments. However, even official releases are often "
"updated with security and other critical fixes. Regardless of the version "
"used, FreeBSD provides all the necessary tools to keep the system updated, "
"and allows for easy upgrades between versions. This chapter describes how "
"to track the development system and the basic tools for keeping a FreeBSD "
"system up-to-date."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:62
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:64
msgid "How to keep a FreeBSD system up-to-date with freebsd-update or Git."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:65
msgid ""
"How to compare the state of an installed system against a known pristine "
"copy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:66
msgid ""
"How to keep the installed documentation up-to-date with Git or documentation "
"ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:67
msgid ""
"The difference between the two development branches: FreeBSD-STABLE and "
"FreeBSD-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:68
msgid "How to rebuild and reinstall the entire base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:70
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:72
msgid ""
"Properly set up the network connection (crossref:advanced-"
"networking[advanced-networking,Advanced Networking])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:73
msgid ""
"Know how to install additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:78
msgid ""
"Throughout this chapter, `git` is used to obtain and update FreeBSD "
"sources. Optionally, the package:devel/git[] port or package may be used."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:81
#, no-wrap
msgid "FreeBSD Update"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:85
msgid ""
"Applying security patches in a timely manner and upgrading to a newer "
"release of an operating system are important aspects of ongoing system "
"administration. FreeBSD includes a utility called `freebsd-update` which "
"can be used to perform both these tasks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:89
msgid ""
"This utility supports binary security and errata updates to FreeBSD, without "
"the need to manually compile and install the patch or a new kernel. Binary "
"updates are available for all architectures and releases currently supported "
"by the security team. The list of supported releases and their estimated "
"end-of-life dates are listed at https://www.FreeBSD.org/security/[https://"
"www.FreeBSD.org/security/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:93
msgid ""
"This utility also supports operating system upgrades to minor point releases "
"as well as upgrades to another release branch. Before upgrading to a new "
"release, review its release announcement as it contains important "
"information pertinent to the release. Release announcements are available "
"from https://www.FreeBSD.org/releases/[https://www.FreeBSD.org/releases/]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:97
msgid ""
"If a man:crontab[5] utilizing the features of man:freebsd-update[8] exists, "
"it must be disabled before upgrading the operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:100
msgid ""
"This section describes the configuration file used by `freebsd-update`, "
"demonstrates how to apply a security patch and how to upgrade to a minor or "
"major operating system release, and discusses some of the considerations "
"when upgrading the operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:102
#, no-wrap
msgid "The Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:107
msgid ""
"The default configuration file for `freebsd-update` works as-is. Some users "
"may wish to tweak the default configuration in [.filename]#/etc/freebsd-"
"update.conf#, allowing better control of the process. The comments in this "
"file explain the available options, but the following may require a bit more "
"explanation:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:112
#, no-wrap
msgid ""
"# Components of the base system which should be kept updated.\n"
"Components world kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:119
msgid ""
"This parameter controls which parts of FreeBSD will be kept up-to-date. The "
"default is to update the entire base system and the kernel. Individual "
"components can instead be specified, such as `src/base` or `src/sys`. "
"However, the best option is to leave this at the default as changing it to "
"include specific items requires every needed item to be listed. Over time, "
"this could have disastrous consequences as source code and binaries may "
"become out of sync."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:125
#, no-wrap
msgid ""
"# Paths which start with anything matching an entry in an IgnorePaths\n"
"# statement will be ignored.\n"
"IgnorePaths /boot/kernel/linker.hints\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:129
msgid ""
"To leave specified directories, such as [.filename]#/bin# or [.filename]#/"
"sbin#, untouched during the update process, add their paths to this "
"statement. This option may be used to prevent `freebsd-update` from "
"overwriting local modifications."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:136
#, no-wrap
msgid ""
"# Paths which start with anything matching an entry in an UpdateIfUnmodified\n"
"# statement will only be updated if the contents of the file have not been\n"
"# modified by the user (unless changes are merged; see below).\n"
"UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:141
msgid ""
"This option will only update unmodified configuration files in the specified "
"directories. Any changes made by the user will prevent the automatic "
"updating of these files. There is another option, `KeepModifiedMetadata`, "
"which will instruct `freebsd-update` to save the changes during the merge."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:147
#, no-wrap
msgid ""
"# When upgrading to a new FreeBSD release, files which match MergeChanges\n"
"# will have any local changes merged into the version from the new release.\n"
"MergeChanges /etc/ /var/named/etc/ /boot/device.hints\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:154
msgid ""
"List of directories with configuration files that `freebsd-update` should "
"attempt to merge. The file merge process is a series of man:diff[1] patches "
"similar to man:mergemaster[8], but with fewer options. Merges are either "
"accepted, open an editor, or cause `freebsd-update` to abort. When in "
"doubt, backup [.filename]#/etc# and just accept the merges. See man:"
"mergemaster[8] for more information about `mergemaster`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:160
#, no-wrap
msgid ""
"# Directory in which to store downloaded updates and temporary\n"
"# files used by FreeBSD Update.\n"
"# WorkDir /var/db/freebsd-update\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:164
msgid ""
"This directory is where all patches and temporary files are placed. In "
"cases where the user is doing a version upgrade, this location should have "
"at least a gigabyte of disk space available."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:172
#, no-wrap
msgid ""
"# When upgrading between releases, should the list of Components be\n"
"# read strictly (StrictComponents yes) or merely as a list of components\n"
"# which *might* be installed of which FreeBSD Update should figure out\n"
"# which actually are installed and upgrade those (StrictComponents no)?\n"
"# StrictComponents no\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:176
msgid ""
"When this option is set to `yes`, `freebsd-update` will assume that the "
"`Components` list is complete and will not attempt to make changes outside "
"of the list. Effectively, `freebsd-update` will attempt to update every "
"file which belongs to the `Components` list."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:178
#, no-wrap
msgid "Applying Security Patches"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:182
msgid ""
"The process of applying FreeBSD security patches has been simplified, "
"allowing an administrator to keep a system fully patched using `freebsd-"
"update`. More information about FreeBSD security advisories can be found in "
"crossref:security[security-advisories,\"FreeBSD Security Advisories\"]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:186
msgid ""
"FreeBSD security patches may be downloaded and installed using the following "
"commands. The first command will determine if any outstanding patches are "
"available, and if so, will list the files that will be modifed if the "
"patches are applied. The second command will apply the patches."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:191
#, no-wrap
msgid ""
"# freebsd-update fetch\n"
"# freebsd-update install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:195
msgid ""
"If the update applies any kernel patches, the system will need a reboot in "
"order to boot into the patched kernel. If the patch was applied to any "
"running binaries, the affected applications should be restarted so that the "
"patched version of the binary is used."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:201
msgid ""
"Usually, the user needs to be prepared to reboot the system. To know if the "
"system requires a reboot due to a kernel update, execute the commands "
"`freebsd-version -k` and `uname -r`. Reboot the system if the outputs "
"differ."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:204
msgid ""
"The system can be configured to automatically check for updates once every "
"day by adding this entry to [.filename]#/etc/crontab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:208
#, no-wrap
msgid "@daily root freebsd-update cron\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:212
msgid ""
"If patches exist, they will automatically be downloaded but will not be "
"applied. The `root` user will be sent an email so that the patches may be "
"reviewed and manually installed with `freebsd-update install`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:214
msgid ""
"If anything goes wrong, `freebsd-update` has the ability to roll back the "
"last set of changes with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:219
#, no-wrap
msgid ""
"# freebsd-update rollback\n"
"Uninstalling updates... done.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:222
msgid ""
"Again, the system should be restarted if the kernel or any kernel modules "
"were modified and any affected binaries should be restarted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:227
msgid ""
"Only the [.filename]#GENERIC# kernel can be automatically updated by "
"`freebsd-update`. If a custom kernel is installed, it will have to be "
"rebuilt and reinstalled after `freebsd-update` finishes installing the "
"updates. The default kernel name is _GENERIC_. The man:uname[1] command "
"may be used to verify its installation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:233
msgid ""
"Always keep a copy of the [.filename]#GENERIC# kernel in [.filename]#/boot/"
"GENERIC#. It will be helpful in diagnosing a variety of problems and in "
"performing version upgrades. Refer to <<freebsd-update-custom-kernel-9x>> "
"for instructions on how to get a copy of the [.filename]#GENERIC# kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:238
msgid ""
"Unless the default configuration in [.filename]#/etc/freebsd-update.conf# "
"has been changed, `freebsd-update` will install the updated kernel sources "
"along with the rest of the updates. Rebuilding and reinstalling a new "
"custom kernel can then be performed in the usual way."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:245
msgid ""
"The updates distributed by `freebsd-update` do not always involve the "
"kernel. It is not necessary to rebuild a custom kernel if the kernel "
"sources have not been modified by `freebsd-update install`. However, "
"`freebsd-update` will always update [.filename]#/usr/src/sys/conf/newvers."
"sh#. The current patch level, as indicated by the `-p` number reported by "
"`uname -r`, is obtained from this file. Rebuilding a custom kernel, even if "
"nothing else changed, allows `uname` to accurately report the current patch "
"level of the system. This is particularly helpful when maintaining multiple "
"systems, as it allows for a quick assessment of the updates installed in "
"each one."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:247
#, no-wrap
msgid "Performing Major and Minor Version Upgrades"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:252
msgid ""
"Upgrades from one minor version of FreeBSD to another, like from FreeBSD 9.0 "
"to FreeBSD 9.1, are called _minor version_ upgrades. _Major version_ "
"upgrades occur when FreeBSD is upgraded from one major version to another, "
"like from FreeBSD 9.X to FreeBSD 10.X. Both types of upgrades can be "
"performed by providing `freebsd-update` with a release version target."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:257
msgid ""
"If the system is running a custom kernel, make sure that a copy of the [."
"filename]#GENERIC# kernel exists in [.filename]#/boot/GENERIC# before "
"starting the upgrade. Refer to <<freebsd-update-custom-kernel-9x>> for "
"instructions on how to get a copy of the [.filename]#GENERIC# kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:260
msgid ""
"The following command, when run on a FreeBSD 9.0 system, will upgrade it to "
"FreeBSD 9.1:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:264
#, no-wrap
msgid "# freebsd-update -r 9.1-RELEASE upgrade\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:269
msgid ""
"After the command has been received, `freebsd-update` will evaluate the "
"configuration file and current system in an attempt to gather the "
"information necessary to perform the upgrade. A screen listing will display "
"which components have and have not been detected. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:276
#, no-wrap
msgid ""
"Looking up update.FreeBSD.org mirrors... 1 mirrors found.\n"
"Fetching metadata signature for 9.0-RELEASE from update1.FreeBSD.org... done.\n"
"Fetching metadata index... done.\n"
"Inspecting system... done.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:282
#, no-wrap
msgid ""
"The following components of FreeBSD seem to be installed:\n"
"kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games\n"
"src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue\n"
"src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin\n"
"world/base world/info world/lib32 world/manpages\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:286
#, no-wrap
msgid ""
"The following components of FreeBSD do not seem to be installed:\n"
"kernel/generic world/catpages world/dict world/doc world/games\n"
"world/proflibs\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:288
#, no-wrap
msgid "Does this look reasonable (y/n)? y\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:292
msgid ""
"At this point, `freebsd-update` will attempt to download all files required "
"for the upgrade. In some cases, the user may be prompted with questions "
"regarding what to install or how to proceed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:294
msgid ""
"When using a custom kernel, the above step will produce a warning similar to "
"the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:301
#, no-wrap
msgid ""
"WARNING: This system is running a \"MYKERNEL\" kernel, which is not a\n"
"kernel configuration distributed as part of FreeBSD 9.0-RELEASE.\n"
"This kernel will not be updated: you MUST update the kernel manually\n"
"before running \"/usr/sbin/freebsd-update install\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:305
msgid ""
"This warning may be safely ignored at this point. The updated [."
"filename]#GENERIC# kernel will be used as an intermediate step in the "
"upgrade process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:314
msgid ""
"Once all the patches have been downloaded to the local system, they will be "
"applied. This process may take a while, depending on the speed and workload "
"of the machine. Configuration files will then be merged. The merging "
"process requires some user intervention as a file may be merged or an editor "
"may appear on screen for a manual merge. The results of every successful "
"merge will be shown to the user as the process continues. A failed or "
"ignored merge will cause the process to abort. Users may wish to make a "
"backup of [.filename]#/etc# and manually merge important files, such as [."
"filename]#master.passwd# or [.filename]#group# at a later time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:321
msgid ""
"The system is not being altered yet as all patching and merging is happening "
"in another directory. Once all patches have been applied successfully, all "
"configuration files have been merged and it seems the process will go "
"smoothly, the changes can be committed to disk by the user using the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:325
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:361
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:437
#, no-wrap
msgid "# freebsd-update install\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:332
msgid ""
"The kernel and kernel modules will be patched first. If the system is "
"running with a custom kernel, use man:nextboot[8] to set the kernel for the "
"next boot to the updated [.filename]#/boot/GENERIC#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:336
#, no-wrap
msgid "# nextboot -k GENERIC\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:345
msgid ""
"Before rebooting with the [.filename]#GENERIC# kernel, make sure it contains "
"all the drivers required for the system to boot properly and connect to the "
"network, if the machine being updated is accessed remotely. In particular, "
"if the running custom kernel contains built-in functionality usually "
"provided by kernel modules, make sure to temporarily load these modules into "
"the [.filename]#GENERIC# kernel using the [.filename]#/boot/loader.conf# "
"facility. It is recommended to disable non-essential services as well as "
"any disk and network mounts until the upgrade process is complete."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:348
msgid "The machine should now be restarted with the updated kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:352
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1047
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1064
#, no-wrap
msgid "# shutdown -r now\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:357
msgid ""
"Once the system has come back online, restart `freebsd-update` using the "
"following command. Since the state of the process has been saved, `freebsd-"
"update` will not start from the beginning, but will instead move on to the "
"next phase and remove all old shared libraries and object files."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:366
msgid ""
"Depending upon whether any library version numbers were bumped, there may "
"only be two install phases instead of three."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:370
msgid ""
"The upgrade is now complete. If this was a major version upgrade, reinstall "
"all ports and packages as described in <<freebsdupdate-portsrebuild>>."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:372
#, no-wrap
msgid "Custom Kernels with FreeBSD 9.X and Later"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:377
msgid ""
"Before using `freebsd-update`, ensure that a copy of the [."
"filename]#GENERIC# kernel exists in [.filename]#/boot/GENERIC#. If a custom "
"kernel has only been built once, the kernel in [.filename]#/boot/kernel.old# "
"is the `GENERIC` kernel. Simply rename this directory to [.filename]#/boot/"
"GENERIC#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:381
msgid ""
"If a custom kernel has been built more than once or if it is unknown how "
"many times the custom kernel has been built, obtain a copy of the `GENERIC` "
"kernel that matches the current version of the operating system. If "
"physical access to the system is available, a copy of the `GENERIC` kernel "
"can be installed from the installation media:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:387
#, no-wrap
msgid ""
"# mount /cdrom\n"
"# cd /cdrom/usr/freebsd-dist\n"
"# tar -C/ -xvf kernel.txz boot/kernel/kernel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:390
msgid ""
"Alternately, the `GENERIC` kernel may be rebuilt and installed from source:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:395
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:400
msgid ""
"For this kernel to be identified as the `GENERIC` kernel by `freebsd-"
"update`, the [.filename]#GENERIC# configuration file must not have been "
"modified in any way. It is also suggested that the kernel is built without "
"any other special options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:402
msgid ""
"Rebooting into the [.filename]#GENERIC# kernel is not required as `freebsd-"
"update` only needs [.filename]#/boot/GENERIC# to exist."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:404
#, no-wrap
msgid "Upgrading Packages After a Major Version Upgrade"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:411
msgid ""
"Generally, installed applications will continue to work without problems "
"after minor version upgrades. Major versions use different Application "
"Binary Interfaces (ABIs), which will break most third-party applications. "
"After a major version upgrade, all installed packages and ports need to be "
"upgraded. Packages can be upgraded using `pkg upgrade`. To upgrade "
"installed ports, use a utility such as package:ports-mgmt/portmaster[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:415
msgid ""
"A forced upgrade of all installed packages will replace the packages with "
"fresh versions from the repository even if the version number has not "
"increased. This is required because of the ABI version change when "
"upgrading between major versions of FreeBSD. The forced upgrade can be "
"accomplished by performing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:419
#, no-wrap
msgid "# pkg-static upgrade -f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:422
msgid ""
"A rebuild of all installed applications can be accomplished with this "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:426
#, no-wrap
msgid "# portmaster -af\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:430
msgid ""
"This command will display the configuration screens for each application "
"that has configurable options and wait for the user to interact with those "
"screens. To prevent this behavior, and use only the default options, "
"include `-G` in the above command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:433
msgid ""
"Once the software upgrades are complete, finish the upgrade process with a "
"final call to `freebsd-update` in order to tie up all the loose ends in the "
"upgrade process:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:441
msgid ""
"If the [.filename]#GENERIC# kernel was temporarily used, this is the time to "
"build and install a new custom kernel using the instructions in crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:444
msgid ""
"Reboot the machine into the new FreeBSD version. The upgrade process is now "
"complete."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:446
#, no-wrap
msgid "System State Comparison"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:450
msgid ""
"The state of the installed FreeBSD version against a known good copy can be "
"tested using `freebsd-update IDS`. This command evaluates the current "
"version of system utilities, libraries, and configuration files and can be "
"used as a built-in Intrusion Detection System (IDS)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:458
msgid ""
"This command is not a replacement for a real IDS such as package:security/"
"snort[]. As `freebsd-update` stores data on disk, the possibility of "
"tampering is evident. While this possibility may be reduced using `kern."
"securelevel` and by storing the `freebsd-update` data on a read-only file "
"system when not in use, a better solution would be to compare the system "
"against a secure disk, such as a DVD or securely stored external USB disk "
"device. An alternative method for providing IDS functionality using a built-"
"in utility is described in crossref:security[security-ids,\"Binary "
"Verification\"]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:461
msgid ""
"To begin the comparison, specify the output file to save the results to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:465
#, no-wrap
msgid "# freebsd-update IDS >> outfile.ids\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:468
msgid ""
"The system will now be inspected and a lengthy listing of files, along with "
"the SHA256 hash values for both the known value in the release and the "
"current installation, will be sent to the specified output file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:471
msgid ""
"The entries in the listing are extremely long, but the output format may be "
"easily parsed. For instance, to obtain a list of all files which differ "
"from those in the release, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:479
#, no-wrap
msgid ""
"# cat outfile.ids | awk '{ print $1 }' | more\n"
"/etc/master.passwd\n"
"/etc/motd\n"
"/etc/passwd\n"
"/etc/pf.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:486
msgid ""
"This sample output has been truncated as many more files exist. Some files "
"have natural modifications. For example, [.filename]#/etc/passwd# will be "
"modified if users have been added to the system. Kernel modules may differ "
"as `freebsd-update` may have updated them. To exclude specific files or "
"directories, add them to the `IDSIgnorePaths` option in [.filename]#/etc/"
"freebsd-update.conf#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:488
#, no-wrap
msgid "Updating Bootcode"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:491
msgid ""
"The following manuals describe the upgrade process of bootcode and boot "
"loaders: man:gpart[8], man:gptboot[8], man:gptzfsboot[8], and man:loader."
"efi[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:493
#, no-wrap
msgid "Updating the Documentation Set"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:497
msgid ""
"Documentation is an integral part of the FreeBSD operating system. While an "
"up-to-date version of the FreeBSD documentation is always available on the "
"FreeBSD web site (link:https://docs.FreeBSD.org[Documentation Portal]), it "
"can be handy to have an up-to-date, local copy of the FreeBSD website, "
"handbooks, FAQ, and articles."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:499
msgid ""
"This section describes how to use either source or the FreeBSD Ports "
"Collection to keep a local copy of the FreeBSD documentation up-to-date."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:502
msgid ""
"For information on editing and submitting corrections to the documentation, "
"refer to the FreeBSD Documentation Project Primer for New Contributors "
"(extref:{fdp-primer}[FreeBSD Documentation Project Primer for New "
"Contributors])."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:504
#, no-wrap
msgid "Updating Documentation from Source"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:508
msgid ""
"Rebuilding the FreeBSD documentation from source requires a collection of "
"tools which are not part of the FreeBSD base system. The required tools can "
"be installed following extref:{fdp-primer}[these steps, overview-quick-"
"start] from the FreeBSD Documentation Project Primer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:510
msgid ""
"Once installed, use `git` to fetch a clean copy of the documentation source:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:514
#, no-wrap
msgid "# git clone https://git.FreeBSD.org/doc.git /usr/doc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:518
msgid ""
"The initial download of the documentation sources may take a while. Let it "
"run until it completes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:520
msgid "Future updates of the documentation sources may be fetched by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:524
#, no-wrap
msgid "# git pull\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:528
msgid ""
"Once an up-to-date snapshot of the documentation sources has been fetched to "
"[.filename]#/usr/doc#, everything is ready for an update of the installed "
"documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:530
msgid "A full update may be performed by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:535
#, no-wrap
msgid ""
"# cd /usr/doc\n"
"# make\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:538
#, no-wrap
msgid "Tracking a Development Branch"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:541
msgid ""
"FreeBSD has two development branches: FreeBSD-CURRENT and FreeBSD-STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:543
msgid ""
"This section provides an explanation of each branch and its intended "
"audience, as well as how to keep a system up-to-date with each respective "
"branch."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:545
#, no-wrap
msgid "Using FreeBSD-CURRENT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:549
msgid ""
"FreeBSD-CURRENT is the \"bleeding edge\" of FreeBSD development and FreeBSD-"
"CURRENT users are expected to have a high degree of technical skill. Less "
"technical users who wish to track a development branch should track FreeBSD-"
"STABLE instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:553
msgid ""
"FreeBSD-CURRENT is the very latest source code for FreeBSD and includes "
"works in progress, experimental changes, and transitional mechanisms that "
"might or might not be present in the next official release. While many "
"FreeBSD developers compile the FreeBSD-CURRENT source code daily, there are "
"short periods of time when the source may not be buildable. These problems "
"are resolved as quickly as possible, but whether or not FreeBSD-CURRENT "
"brings disaster or new functionality can be a matter of when the source code "
"was synced."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:555
msgid "FreeBSD-CURRENT is made available for three primary interest groups:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:557
msgid ""
"Members of the FreeBSD community who are actively working on some part of "
"the source tree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:558
msgid ""
"Members of the FreeBSD community who are active testers. They are willing to "
"spend time solving problems, making topical suggestions on changes and the "
"general direction of FreeBSD, and submitting patches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:559
msgid ""
"Users who wish to keep an eye on things, use the current source for "
"reference purposes, or make the occasional comment or code contribution."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:563
msgid ""
"FreeBSD-CURRENT should _not_ be considered a fast-track to getting new "
"features before the next release as pre-release features are not yet fully "
"tested and most likely contain bugs. It is not a quick way of getting bug "
"fixes as any given commit is just as likely to introduce new bugs as to fix "
"existing ones. FreeBSD-CURRENT is not in any way \"officially supported\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:565
msgid "To track FreeBSD-CURRENT:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:567
msgid ""
"Join the {freebsd-current} and the {dev-commits-src-main} lists. This is "
"_essential_ in order to see the comments that people are making about the "
"current state of the system and to receive important bulletins about the "
"current state of FreeBSD-CURRENT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:569
msgid ""
"The {dev-commits-src-main} list records the commit log entry for each change "
"as it is made, along with any pertinent information on possible side effects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:572
msgid ""
"To join these lists, go to {mailing-lists}, click on the list to subscribe "
"to, and follow the instructions. In order to track changes to the whole "
"source tree, not just the changes to FreeBSD-CURRENT, subscribe to the {dev-"
"commits-src-all}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:573
msgid ""
"Synchronize with the FreeBSD-CURRENT sources. Typically, `git` is used to "
"check out the -CURRENT code from the `main` branch of the FreeBSD Git "
"repository (see crossref:mirrors[git,“Using Git”] for details)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:574
msgid ""
"Due to the size of the repository, some users choose to only synchronize the "
"sections of source that interest them or which they are contributing patches "
"to. However, users that plan to compile the operating system from source "
"must download _all_ of FreeBSD-CURRENT, not just selected portions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:577
msgid ""
"Before compiling FreeBSD-CURRENT, read [.filename]#/usr/src/Makefile# very "
"carefully and follow the instructions in <<makeworld>>. Read the {freebsd-"
"current} and [.filename]#/usr/src/UPDATING# to stay up-to-date on other "
"bootstrapping procedures that sometimes become necessary on the road to the "
"next release."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:578
msgid ""
"Be active! FreeBSD-CURRENT users are encouraged to submit their suggestions "
"for enhancements or bug fixes. Suggestions with accompanying code are always "
"welcome."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:580
#, no-wrap
msgid "Using FreeBSD-STABLE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:587
msgid ""
"FreeBSD-STABLE is the development branch from which major releases are "
"made. Changes go into this branch at a slower pace and with the general "
"assumption that they have first been tested in FreeBSD-CURRENT. This is "
"_still_ a development branch and, at any given time, the sources for FreeBSD-"
"STABLE may or may not be suitable for general use. It is simply another "
"engineering development track, not a resource for end-users. Users who do "
"not have the resources to perform testing should instead run the most recent "
"release of FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:589
msgid ""
"Those interested in tracking or contributing to the FreeBSD development "
"process, especially as it relates to the next release of FreeBSD, should "
"consider following FreeBSD-STABLE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:594
msgid ""
"While the FreeBSD-STABLE branch should compile and run at all times, this "
"cannot be guaranteed. Since more people run FreeBSD-STABLE than FreeBSD-"
"CURRENT, it is inevitable that bugs and corner cases will sometimes be found "
"in FreeBSD-STABLE that were not apparent in FreeBSD-CURRENT. For this "
"reason, one should not blindly track FreeBSD-STABLE. It is particularly "
"important _not_ to update any production servers to FreeBSD-STABLE without "
"thoroughly testing the code in a development or testing environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:596
msgid "To track FreeBSD-STABLE:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:598
msgid ""
"Join the {freebsd-stable} in order to stay informed of build dependencies "
"that may appear in FreeBSD-STABLE or any other issues requiring special "
"attention. Developers will also make announcements in this mailing list when "
"they are contemplating some controversial fix or update, giving the users a "
"chance to respond if they have any issues to raise concerning the proposed "
"change."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:602
msgid ""
"Join the relevant git list for the branch being tracked. For example, users "
"tracking the {betarel-current-major}-STABLE branch should join the {dev-"
"commits-src-branches}. This list records the commit log entry for each "
"change as it is made, along with any pertinent information on possible side "
"effects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:605
msgid ""
"To join these lists, go to {mailing-lists}, click on the list to subscribe "
"to, and follow the instructions. In order to track changes for the whole "
"source tree, subscribe to {dev-commits-src-all}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:606
msgid ""
"To install a new FreeBSD-STABLE system, install the most recent FreeBSD-"
"STABLE release from the crossref:mirrors[mirrors,FreeBSD mirror sites] or "
"use a monthly snapshot built from FreeBSD-STABLE. Refer to link:https://www."
"FreeBSD.org/snapshots/[www.freebsd.org/snapshots] for more information about "
"snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:609
msgid ""
"To compile or upgrade an existing FreeBSD system to FreeBSD-STABLE, use "
"`git` to check out the source for the desired branch. Branch names, such as "
"`stable/9`, are listed at link:https://www.FreeBSD.org/releng/[www.freebsd."
"org/releng]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:610
msgid ""
"Before compiling or upgrading to FreeBSD-STABLE , read [.filename]#/usr/src/"
"Makefile# carefully and follow the instructions in <<makeworld>>. Read the "
"{freebsd-stable} and [.filename]#/usr/src/UPDATING# to keep up-to-date on "
"other bootstrapping procedures that sometimes become necessary on the road "
"to the next release."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:612
#, no-wrap
msgid "The N-number"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:616
msgid ""
"When tracking down bugs it is important to know which versions of the source "
"code have been used to create the system exhibiting an issue. FreeBSD "
"provides version information compiled into the kernel. man:uname[1] "
"retrieves this information, for example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:620
#, no-wrap
msgid ""
-"% uname -a\n"
+"% uname -v\n"
"FreeBSD 14.0-CURRENT #112 main-n247514-031260d64c18: Tue Jun 22 20:43:19 MDT 2021 fred@machine:/usr/home/fred/obj/usr/home/fred/git/head/amd64.amd64/sys/FRED\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:622
-msgid "Looking at the 4th field, it is made up of several parts:"
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:623
+msgid ""
+"The final field gives information regarding the kernel name, the person that "
+"built it, and the location that it was compiled in. Looking at the 4th "
+"field, it is made up of several parts:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:625
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:626
#, no-wrap
msgid "main-n247514-031260d64c18\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:630
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:631
#, no-wrap
msgid ""
"main\t\t<.>\n"
"n247514\t\t<.>\n"
"031260d64c18\t<.>\n"
"\t\t<.>\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:634
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:635
msgid ""
"Git branch name. Note: comparisons of n-numbers are only valid on branches "
"published by the project (`main`, `stable/XX` and `releng/XX`). Local "
"branches will have n-numbers that will overlap commits of their parent "
"branch."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:635
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:636
msgid ""
"The n-number is a linear count of commits back to the start of the Git "
"repository starting with the Git hash included in the line."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:636
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:637
msgid "Git hash of the checked out tree"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:638
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:639
msgid ""
"Sometimes a suffix of `-dirty` is present when the kernel was built in a "
"tree with uncommitted changes. It is absent in this example because the "
"FRED kernel was built from a pristine checkout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:641
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:642
msgid ""
"The `git rev-list` command is used to find the n-number corresponding to a "
"Git hash. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:645
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:646
#, no-wrap
msgid ""
"% git rev-list --first-parent --count 031260d64c18 <.>\n"
"247514 <.>\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:647
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:648
msgid "git hash to translate (the hash from the above example is reused)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:648
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:649
msgid "The n-number."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:654
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:655
msgid ""
"Usually this number is not all that important. However, when bug fixes are "
"committed, this number makes it easy to quickly determine whether the fix is "
"present in the currently running system. Developers will often refer to the "
"hash of the commit (or provide a URL which has that hash), but not the n-"
"number since the hash is the easily visible identifier for a change while "
"the n-number is not. Security advisories and errata notices will also note "
"an n-number, which can be directly compared against your system. When you "
"need to use shallow Git clones, you cannot compare n-numbers reliably as the "
"`git rev-list` command counts all the revisions in the repository which a "
"shallow clone omits."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:656
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:657
#, no-wrap
msgid "Updating FreeBSD from Source"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:662
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:663
msgid ""
"Updating FreeBSD by compiling from source offers several advantages over "
"binary updates. Code can be built with options to take advantage of "
"specific hardware. Parts of the base system can be built with non-default "
"settings, or left out entirely where they are not needed or desired. The "
"build process takes longer to update a system than just installing binary "
"updates, but allows complete customization to produce a tailored version of "
"FreeBSD."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:664
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:665
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:668
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:669
msgid ""
"This is a quick reference for the typical steps used to update FreeBSD by "
"building from source. Later sections describe the process in more detail."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:672
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:674
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:980
+msgid ""
+"When switching from man:mergemaster[8] to man:etcupdate[8], the first run "
+"might merge changes incorrectly generating spurious conflicts. To prevent "
+"this, perform the following steps *before* updating sources and building the "
+"new world:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:679
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:985
+#, no-wrap
+msgid ""
+"# etcupdate extract <.>\n"
+"# etcupdate diff <.>\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:682
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:988
+msgid ""
+"Bootstrap the database of stock [.filename]#/etc# files; for more "
+"information see man:etcupdate[8]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:684
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:990
+msgid ""
+"Check the diff after bootstrapping. Trim any local changes that are no "
+"longer needed to reduce the chance of conflicts in future updates."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:689
msgid "Update and Build"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:686
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:703
#, no-wrap
msgid ""
"# git pull /usr/src <.>\n"
"check /usr/src/UPDATING <.>\n"
"# cd /usr/src <.>\n"
"# make -j4 buildworld <.>\n"
"# make -j4 kernel <.>\n"
"# shutdown -r now <.>\n"
"# etcupdate -p <.>\n"
"# cd /usr/src <.>\n"
"# make installworld <.>\n"
"# etcupdate -B <.>\n"
"# shutdown -r now <.>\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:689
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:706
msgid ""
"Get the latest version of the source. See <<updating-src-obtaining-src>> for "
"more information on obtaining and updating source."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:691
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:708
msgid ""
"Check [.filename]#/usr/src/UPDATING# for any manual steps required before or "
"after building from source."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:693
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:703
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:710
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:720
msgid "Go to the source directory."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:695
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:712
msgid "Compile the world, everything except the kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:697
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:714
msgid ""
"Compile and install the kernel. This is equivalent to `make buildkernel "
"installkernel`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:699
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:716
msgid "Reboot the system to the new kernel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:701
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:718
msgid ""
"Update and merge configuration files in [.filename]#/etc/# required before "
"installworld."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:705
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:722
msgid "Install the world."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:707
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:724
msgid "Update and merge configuration files in [.filename]#/etc/#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:709
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:726
msgid "Restart the system to use the newly-built world and kernel."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:712
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:729
#, no-wrap
msgid "Preparing for a Source Update"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:715
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:732
msgid ""
"Read [.filename]#/usr/src/UPDATING#. Any manual steps that must be performed "
"before or after an update are described in this file."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:717
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:734
#, no-wrap
msgid "Updating the Source"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:722
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:739
msgid ""
"FreeBSD source code is located in [.filename]#/usr/src/#. The preferred "
"method of updating this source is through the Git version control system. "
"Verify that the source code is under version control:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:729
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:746
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git remote --v\n"
"origin https://git.freebsd.org/src.git (fetch)\n"
"origin https://git.freebsd.org/src.git (push)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:732
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:749
msgid ""
"This indicates that [.filename]#/usr/src/# is under version control and can "
"be updated with man:git[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:737
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:754
#, no-wrap
msgid "# git pull /usr/src\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:741
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:758
msgid ""
"The update process can take some time if the directory has not been updated "
"recently. After it finishes, the source code is up to date and the build "
"process described in the next section can begin."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:745
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:762
#, no-wrap
msgid "*Obtaining the Source:* +\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:748
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:765
msgid ""
"If the output says `fatal: not a git repository`, the files there are "
"missing or were installed with a different method. A new checkout of the "
"source is required."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:750
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:767
#, no-wrap
msgid "FreeBSD Versions and Repository Branches"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:754
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:771
#, no-wrap
msgid "uname -r Output"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:755
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:772
#, no-wrap
msgid "Repository Path"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:757
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:774
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:758
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:775
#, no-wrap
msgid "`_X.Y_-RELEASE`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:759
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:776
#, no-wrap
msgid "`releng/_X.Y_`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:761
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:778
#, no-wrap
msgid "The Release version plus only critical security and bug fix patches. This branch is recommended for most users."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:762
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:779
#, no-wrap
msgid "`_X.Y_-STABLE`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:763
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:780
#, no-wrap
msgid "`stable/_X_`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:769
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:786
#, no-wrap
msgid ""
"The Release version plus all additional development on that branch. _STABLE_ refers to the Applications Binary Interface (ABI) not changing, so software compiled for earlier versions still runs. For example, software compiled to run on FreeBSD 10.1 will still run on FreeBSD 10-STABLE compiled later.\n"
"\n"
"STABLE branches occasionally have bugs or incompatibilities which might affect users, although these are typically fixed quickly."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:770
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:787
#, no-wrap
msgid "`_X_-CURRENT`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:771
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:788
#, no-wrap
msgid "`main`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:772
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:789
#, no-wrap
msgid "The latest unreleased development version of FreeBSD. The CURRENT branch can have major bugs or incompatibilities and is recommended only for advanced users."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:775
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:792
msgid "Determine which version of FreeBSD is being used with man:uname[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:780
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:797
#, no-wrap
msgid ""
"# uname -r\n"
"10.3-RELEASE\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:783
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:800
msgid ""
"Based on <<updating-src-obtaining-src-repopath>>, the source used to update "
"`10.3-RELEASE` has a repository path of `releng/10.3`. That path is used "
"when checking out the source:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:788
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:805
#, no-wrap
msgid ""
"# mv /usr/src /usr/src.bak <.>\n"
"# git clone --branch releng/10.3 https://git.FreeBSD.org/src.git /usr/src <.>\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:791
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:808
msgid ""
"Move the old directory out of the way. If there are no local modifications "
"in this directory, it can be deleted."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:793
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:810
msgid ""
"The path from <<updating-src-obtaining-src-repopath>> is added to the "
"repository URL. The third parameter is the destination directory for the "
"source code on the local system."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:796
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:813
#, no-wrap
msgid "Building from Source"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:801
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:818
msgid ""
"The _world_, or all of the operating system except the kernel, is compiled. "
"This is done first to provide up-to-date tools to build the kernel. Then "
"the kernel itself is built:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:807
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:824
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make buildworld\n"
"# make buildkernel\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:810
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:827
msgid "The compiled code is written to [.filename]#/usr/obj#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:813
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:830
msgid ""
"These are the basic steps. Additional options to control the build are "
"described below."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:815
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:832
#, no-wrap
msgid "Performing a Clean Build"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:820
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:837
msgid ""
"Some versions of the FreeBSD build system leave previously-compiled code in "
"the temporary object directory, [.filename]#/usr/obj#. This can speed up "
"later builds by avoiding recompiling code that has not changed. To force a "
"clean rebuild of everything, use `cleanworld` before starting a build:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:824
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:841
#, no-wrap
msgid "# make cleanworld\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:827
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:844
#, no-wrap
msgid "Setting the Number of Jobs"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:834
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:851
msgid ""
"Increasing the number of build jobs on multi-core processors can improve "
"build speed. Determine the number of cores with `sysctl hw.ncpu`. "
"Processors vary, as do the build systems used with different versions of "
"FreeBSD, so testing is the only sure method to tell how a different number "
"of jobs affects the build speed. For a starting point, consider values "
"between half and double the number of cores. The number of jobs is "
"specified with `-j`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:836
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:853
#, no-wrap
msgid "Increasing the Number of Build Jobs"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:840
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:857
msgid "Building the world and kernel with four jobs:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:844
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:861
#, no-wrap
msgid "# make -j4 buildworld buildkernel\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:849
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:866
#, no-wrap
msgid "Building Only the Kernel"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:854
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:871
msgid ""
"A `buildworld` must be completed if the source code has changed. After "
"that, a `buildkernel` to build a kernel can be run at any time. To build "
"just the kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:859
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:876
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make buildkernel\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:862
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:879
#, no-wrap
msgid "Building a Custom Kernel"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:867
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:884
msgid ""
"The standard FreeBSD kernel is based on a _kernel config file_ called [."
"filename]#GENERIC#. The [.filename]#GENERIC# kernel includes the most "
"commonly-needed device drivers and options. Sometimes it is useful or "
"necessary to build a custom kernel, adding or removing device drivers or "
"options to fit a specific need."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:869
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:886
msgid ""
"For example, someone developing a small embedded computer with severely "
"limited RAM could remove unneeded device drivers or options to make the "
"kernel slightly smaller."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:872
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:889
msgid ""
"Kernel config files are located in [.filename]#/usr/src/sys/arch/conf/#, "
"where _arch_ is the output from `uname -m`. On most computers, that is "
"`amd64`, giving a config file directory of [.filename]#/usr/src/sys/amd64/"
"conf/#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:878
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:895
msgid ""
"[.filename]#/usr/src# can be deleted or recreated, so it is preferable to "
"keep custom kernel config files in a separate directory, like [.filename]#/"
"root#. Link the kernel config file into the [.filename]#conf# directory. "
"If that directory is deleted or overwritten, the kernel config can be re-"
"linked into the new one."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:882
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:899
msgid ""
"A custom config file can be created by copying the [.filename]#GENERIC# "
"config file. In this example, the new custom kernel is for a storage "
"server, so is named [.filename]#STORAGESERVER#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:888
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:905
#, no-wrap
msgid ""
"# cp /usr/src/sys/amd64/conf/GENERIC /root/STORAGESERVER\n"
"# cd /usr/src/sys/amd64/conf\n"
"# ln -s /root/STORAGESERVER .\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:891
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:908
msgid ""
"[.filename]#/root/STORAGESERVER# is then edited, adding or removing devices "
"or options as shown in man:config[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:893
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:910
msgid ""
"The custom kernel is built by setting `KERNCONF` to the kernel config file "
"on the command line:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:897
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:914
#, no-wrap
msgid "# make buildkernel KERNCONF=STORAGESERVER\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:900
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:917
#, no-wrap
msgid "Installing the Compiled Code"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:903
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:920
msgid ""
"After the `buildworld` and `buildkernel` steps have been completed, the new "
"kernel and world are installed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:912
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:929
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make installkernel\n"
"# shutdown -r now\n"
"# cd /usr/src\n"
"# make installworld\n"
"# shutdown -r now\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:915
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:932
msgid ""
"If a custom kernel was built, `KERNCONF` must also be set to use the new "
"custom kernel:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:924
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:941
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make installkernel KERNCONF=STORAGESERVER\n"
"# shutdown -r now\n"
"# cd /usr/src\n"
"# make installworld\n"
"# shutdown -r now\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:927
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:944
#, no-wrap
msgid "Completing the Update"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:931
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:948
msgid ""
"A few final tasks complete the update. Any modified configuration files are "
"merged with the new versions, outdated libraries are located and removed, "
"then the system is restarted."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:933
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:950
#, no-wrap
msgid "Merging Configuration Files with man:etcupdate[8]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:938
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:955
msgid ""
"man:etcupdate[8] is a tool for managing updates to files that are not "
"updated as part of an installworld such as files located in [.filename]#/etc/"
"#. It manages updates by doing a three-way merge of changes made to these "
"files against the local versions. It is also designed to minimize the "
"amount of user intervention, in contrast to man:mergemaster[8]'s interactive "
"prompts."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:943
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:960
msgid ""
"In general, man:etcupdate[8] does not need any specific arguments for its "
"job. There is however a handy in between command for sanity checking what "
"will be done the first time man:etcupdate[8] is used:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:947
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:964
#, no-wrap
msgid "# etcupdate diff\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:950
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:967
msgid "This command allows the user to audit configuration changes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:953
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:970
msgid ""
"If man:etcupdate[8] is not able to merge a file automatically, the merge "
"conflicts can be resolved with manual interaction by issuing:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:957
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:974
#, no-wrap
msgid "# etcupdate resolve\n"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:963
-msgid ""
-"When switching from man:mergemaster[8] to man:etcupdate[8], the first run "
-"might merge changes incorrectly generating spurious conflicts. To prevent "
-"this, perform the following steps *before* updating sources and building the "
-"new world:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:968
-#, no-wrap
-msgid ""
-"# etcupdate extract <.>\n"
-"# etcupdate diff <.>\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:971
-msgid ""
-"Bootstrap the database of stock [.filename]#/etc# files, for more "
-"information see man:etcupdate[8]."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:973
-msgid ""
-"Check the diff after bootstrapping. Trim any local changes that are no "
-"longer needed to reduce the chance of conflicts in future updates."
-msgstr ""
-
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:976
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:993
#, no-wrap
msgid "Merging Configuration Files with man:mergemaster[8]"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:981
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:998
msgid ""
"man:mergemaster[8] provides a way to merge changes that have been made to "
"system configuration files with new versions of those files. man:"
"mergemaster[8] is an alternative to the preferred man:etcupdate[8] With `-"
"Ui`, man:mergemaster[8] automatically updates files that have not been user-"
"modified and installs new files that are not already present:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:985
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1002
#, no-wrap
msgid "# mergemaster -Ui\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:989
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1006
msgid ""
"If a file must be manually merged, an interactive display allows the user to "
"choose which portions of the files are kept. See man:mergemaster[8] for "
"more information."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:991
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1008
#, no-wrap
msgid "Checking for Outdated Files and Libraries"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:995
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1012
msgid ""
"Some obsolete files or directories can remain after an update. These files "
"can be located:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:999
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1016
#, no-wrap
msgid "# make check-old\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1002
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1019
msgid "and deleted:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1006
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1023
#, no-wrap
msgid "# make delete-old\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1010
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1027
msgid "Some obsolete libraries can also remain. These can be detected with:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1014
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1031
#, no-wrap
msgid "# make check-old-libs\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1017
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1034
msgid "and deleted with"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1021
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1038
#, no-wrap
msgid "# make delete-old-libs\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1025
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1042
msgid ""
"Programs which were still using those old libraries will stop working when "
"the library has been deleted. These programs must be rebuilt or replaced "
"after deleting the old libraries."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1031
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1048
msgid ""
"When all the old files or directories are known to be safe to delete, "
"pressing kbd:[y] and kbd:[Enter] to delete each file can be avoided by "
"setting `BATCH_DELETE_OLD_FILES` in the command. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1035
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1052
#, no-wrap
msgid "# make BATCH_DELETE_OLD_FILES=yes delete-old-libs\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1040
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1057
#, no-wrap
msgid "Restarting After the Update"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1043
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1060
msgid ""
"The last step after updating is to restart the computer so all the changes "
"take effect:"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1050
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1067
#, no-wrap
msgid "Tracking for Multiple Machines"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1058
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1075
msgid ""
"When multiple machines need to track the same source tree, it is a waste of "
"disk space, network bandwidth, and CPU cycles to have each system download "
"the sources and rebuild everything. The solution is to have one machine do "
"most of the work, while the rest of the machines mount that work via NFS. "
"This section outlines a method of doing so. For more information about "
"using NFS, refer to crossref:network-servers[network-nfs,\"Network File "
"System (NFS)\"]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1063
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1080
msgid ""
"First, identify a set of machines which will run the same set of binaries, "
"known as a _build set_. Each machine can have a custom kernel, but will run "
"the same userland binaries. From that set, choose a machine to be the "
"_build machine_ that the world and kernel are built on. Ideally, this is a "
"fast machine that has sufficient spare CPU to run `make buildworld` and "
"`make buildkernel`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1067
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1084
msgid ""
"Select a machine to be the _test machine_, which will test software updates "
"before they are put into production. This _must_ be a machine that can "
"afford to be down for an extended period of time. It can be the build "
"machine, but need not be."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1070
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1087
msgid ""
"All the machines in this build set need to mount [.filename]#/usr/obj# and [."
"filename]#/usr/src# from the build machine via NFS. For multiple build "
"sets, [.filename]#/usr/src# should be on one build machine, and NFS mounted "
"on the rest."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1076
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1093
msgid ""
"Ensure that [.filename]#/etc/make.conf# and [.filename]#/etc/src.conf# on "
"all the machines in the build set agree with the build machine. That means "
"that the build machine must build all the parts of the base system that any "
"machine in the build set is going to install. Also, each build machine "
"should have its kernel name set with `KERNCONF` in [.filename]#/etc/make."
"conf#, and the build machine should list them all in its `KERNCONF`, listing "
"its own kernel first. The build machine must have the kernel configuration "
"files for each machine in its [.filename]#/usr/src/sys/arch/conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1083
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1100
msgid ""
"On the build machine, build the kernel and world as described in "
"<<makeworld>>, but do not install anything on the build machine. Instead, "
"install the built kernel on the test machine. On the test machine, mount [."
"filename]#/usr/src# and [.filename]#/usr/obj# via NFS. Then, run `shutdown "
"now` to go to single-user mode in order to install the new kernel and world "
"and run `mergemaster` as usual. When done, reboot to return to normal multi-"
"user operations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1086
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1103
msgid ""
"After verifying that everything on the test machine is working properly, use "
"the same procedure to install the new software on each of the other machines "
"in the build set."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1093
+#: documentation/content/en/books/handbook/cutting-edge/_index.adoc:1110
msgid ""
"The same methodology can be used for the ports tree. The first step is to "
"share [.filename]#/usr/ports# via NFS to all the machines in the build set. "
"To configure [.filename]#/etc/make.conf# to share distfiles, set `DISTDIR` "
"to a common shared directory that is writable by whichever user `root` is "
"mapped to by the NFS mount. Each machine should set `WRKDIRPREFIX` to a "
"local build directory, if ports are to be built locally. Alternately, if "
"the build system is to build and distribute packages to the machines in the "
"build set, set `PACKAGES` on the build system to a directory similar to "
"`DISTDIR`."
msgstr ""
diff --git a/documentation/content/en/books/handbook/desktop/_index.po b/documentation/content/en/books/handbook/desktop/_index.po
index f5b84332dd..8176a454b0 100644
--- a/documentation/content/en/books/handbook/desktop/_index.po
+++ b/documentation/content/en/books/handbook/desktop/_index.po
@@ -1,1159 +1,1159 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/desktop/_index.adoc:1
#, no-wrap
msgid "This chapter demonstrates how to install numerous desktop applications, including web browsers, productivity software, document viewers, and financial software"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/desktop/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/desktop/_index.adoc:1
#, no-wrap
-msgid "Chapter 6. Desktop Applications"
+msgid "Chapter 7. Desktop Applications"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/desktop/_index.adoc:15
#, no-wrap
msgid "Desktop Applications"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:58
msgid ""
"While FreeBSD is popular as a server for its performance and stability, it "
"is also suited for day-to-day use as a desktop. With over {numports} "
"applications available as FreeBSD packages or ports, it is easy to build a "
"customized desktop that runs a wide variety of desktop applications. This "
"chapter demonstrates how to install numerous desktop applications, including "
"web browsers, productivity software, document viewers, and financial "
"software."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:62
msgid ""
"Users who prefer to install a pre-built desktop version of FreeBSD rather "
"than configuring one from scratch should refer to https://ghostbsd."
"org[GhostBSD], https://www.midnightbsd.org[MidnightBSD] or https://nomadbsd."
"org[NomadBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:65
msgid "Readers of this chapter should know how to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:67
msgid ""
"Install additional software using packages or ports as described in crossref:"
"ports[ports,Installing Applications: Packages and Ports]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:68
msgid ""
"Install X and a window manager as described in crossref:x11[x11,The X Window "
"System]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:70
msgid ""
"For information on how to configure a multimedia environment, refer to "
"crossref:multimedia[multimedia,Multimedia]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:72
#, no-wrap
msgid "Browsers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:76
msgid ""
"FreeBSD does not come with a pre-installed web browser. Instead, the "
"https://www.FreeBSD.org/ports/[www] category of the Ports Collection "
"contains many browsers which can be installed as a package or compiled from "
"the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:79
msgid ""
"The KDE and GNOME desktop environments include their own HTML browser. "
"Refer to crossref:x11[x11-wm,“Desktop Environments”] for more information on "
"how to set up these complete desktops."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:81
msgid ""
"Some lightweight browsers include package:www/dillo2[], package:www/links[], "
"and package:www/w3m[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:83
msgid ""
"This section demonstrates how to install the following popular web browsers "
"and indicates if the application is resource-heavy, takes time to compile "
"from ports, or has any major dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:88
#: documentation/content/en/books/handbook/desktop/_index.adoc:196
#: documentation/content/en/books/handbook/desktop/_index.adoc:403
#: documentation/content/en/books/handbook/desktop/_index.adoc:551
#, no-wrap
msgid "Application Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:89
#: documentation/content/en/books/handbook/desktop/_index.adoc:197
#: documentation/content/en/books/handbook/desktop/_index.adoc:404
#: documentation/content/en/books/handbook/desktop/_index.adoc:552
#, no-wrap
msgid "Resources Needed"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:90
#: documentation/content/en/books/handbook/desktop/_index.adoc:198
#: documentation/content/en/books/handbook/desktop/_index.adoc:405
#: documentation/content/en/books/handbook/desktop/_index.adoc:553
#, no-wrap
msgid "Installation from Ports"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:92
#, no-wrap
msgid "Notes"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:93
#: documentation/content/en/books/handbook/desktop/_index.adoc:108
#, no-wrap
msgid "Firefox"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:94
#: documentation/content/en/books/handbook/desktop/_index.adoc:99
#: documentation/content/en/books/handbook/desktop/_index.adoc:104
#, no-wrap
msgid "medium"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:95
#: documentation/content/en/books/handbook/desktop/_index.adoc:100
#: documentation/content/en/books/handbook/desktop/_index.adoc:105
#: documentation/content/en/books/handbook/desktop/_index.adoc:203
#: documentation/content/en/books/handbook/desktop/_index.adoc:213
#: documentation/content/en/books/handbook/desktop/_index.adoc:217
#: documentation/content/en/books/handbook/desktop/_index.adoc:430
#: documentation/content/en/books/handbook/desktop/_index.adoc:558
#: documentation/content/en/books/handbook/desktop/_index.adoc:563
#: documentation/content/en/books/handbook/desktop/_index.adoc:568
#, no-wrap
msgid "heavy"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:97
#, no-wrap
msgid "FreeBSD, Linux(R), and localized versions are available"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:98
#: documentation/content/en/books/handbook/desktop/_index.adoc:136
#, no-wrap
msgid "Konqueror"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:102
#, no-wrap
msgid "Requires KDE libraries"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:103
#: documentation/content/en/books/handbook/desktop/_index.adoc:157
#, no-wrap
msgid "Chromium"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:106
#, no-wrap
msgid "Requires Gtk+"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:112
msgid ""
"Firefox is an open source browser that features a standards-compliant HTML "
"display engine, tabbed browsing, popup blocking, extensions, improved "
"security, and more. Firefox is based on the Mozilla codebase."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:114
msgid "To install the package of the latest release version of Firefox, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:118
#, no-wrap
msgid "# pkg install firefox\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:121
msgid "To instead install Firefox Extended Support Release (ESR) version, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:125
#, no-wrap
msgid "# pkg install firefox-esr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:129
msgid ""
"The Ports Collection can instead be used to compile the desired version of "
"Firefox from source code. This example builds package:www/firefox[], where "
"`firefox` can be replaced with the ESR or localized version to install."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:134
#, no-wrap
msgid ""
"# cd /usr/ports/www/firefox\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:141
msgid ""
"Konqueror is more than a web browser as it is also a file manager and a "
"multimedia viewer. Supports WebKit as well as its own KHTML. WebKit is a "
"rendering engine used by many modern browsers including Chromium."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:143
msgid "Konqueror can be installed as a package by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:147
#, no-wrap
msgid "# pkg install konqueror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:150
msgid "To install from the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:155
#, no-wrap
msgid ""
"# cd /usr/ports/x11-fm/konqueror/\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:162
msgid ""
"Chromium is an open source browser project that aims to build a safer, "
"faster, and more stable web browsing experience. Chromium features tabbed "
"browsing, popup blocking, extensions, and much more. Chromium is the open "
"source project upon which the Google Chrome web browser is based."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:164
msgid "Chromium can be installed as a package by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:168
#, no-wrap
msgid "# pkg install chromium\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:171
msgid ""
"Alternatively, Chromium can be compiled from source using the Ports "
"Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:176
#, no-wrap
msgid ""
"# cd /usr/ports/www/chromium\n"
"# make install clean\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:181
msgid ""
"The executable for Chromium is [.filename]#/usr/local/bin/chrome#, not [."
"filename]#/usr/local/bin/chromium#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:184
#, no-wrap
msgid "Productivity"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:189
msgid ""
"When it comes to productivity, users often look for an office suite or an "
"easy-to-use word processor. While some <<x11-wm,desktop environments>> like "
"KDE provide an office suite, there is no default productivity package. "
"Several office suites and graphical word processors are available for "
"FreeBSD, regardless of the installed window manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:191
msgid ""
"This section demonstrates how to install the following popular productivity "
"software and indicates if the application is resource-heavy, takes time to "
"compile from ports, or has any major dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:200
#: documentation/content/en/books/handbook/desktop/_index.adoc:407
#: documentation/content/en/books/handbook/desktop/_index.adoc:555
#, no-wrap
msgid "Major Dependencies"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:201
#: documentation/content/en/books/handbook/desktop/_index.adoc:226
#, no-wrap
msgid "Calligra"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:202
#: documentation/content/en/books/handbook/desktop/_index.adoc:207
#: documentation/content/en/books/handbook/desktop/_index.adoc:208
#: documentation/content/en/books/handbook/desktop/_index.adoc:212
#: documentation/content/en/books/handbook/desktop/_index.adoc:409
#: documentation/content/en/books/handbook/desktop/_index.adoc:410
#: documentation/content/en/books/handbook/desktop/_index.adoc:414
#: documentation/content/en/books/handbook/desktop/_index.adoc:415
#: documentation/content/en/books/handbook/desktop/_index.adoc:419
#: documentation/content/en/books/handbook/desktop/_index.adoc:420
#: documentation/content/en/books/handbook/desktop/_index.adoc:424
#: documentation/content/en/books/handbook/desktop/_index.adoc:425
#: documentation/content/en/books/handbook/desktop/_index.adoc:429
#: documentation/content/en/books/handbook/desktop/_index.adoc:557
#: documentation/content/en/books/handbook/desktop/_index.adoc:562
#: documentation/content/en/books/handbook/desktop/_index.adoc:567
#, no-wrap
msgid "light"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:205
#: documentation/content/en/books/handbook/desktop/_index.adoc:431
#: documentation/content/en/books/handbook/desktop/_index.adoc:569
#, no-wrap
msgid "KDE"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:206
#: documentation/content/en/books/handbook/desktop/_index.adoc:248
#, no-wrap
msgid "AbiWord"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:210
#: documentation/content/en/books/handbook/desktop/_index.adoc:422
#, no-wrap
msgid "Gtk+ or GNOME"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:211
#, no-wrap
msgid "The Gimp"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:215
#: documentation/content/en/books/handbook/desktop/_index.adoc:427
#, no-wrap
msgid "Gtk+"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:216
#: documentation/content/en/books/handbook/desktop/_index.adoc:294
#, no-wrap
msgid "Apache OpenOffice"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:218
#: documentation/content/en/books/handbook/desktop/_index.adoc:223
#, no-wrap
msgid "huge"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:220
#, no-wrap
msgid "JDK(TM) and Mozilla"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:221
#: documentation/content/en/books/handbook/desktop/_index.adoc:346
#, no-wrap
msgid "LibreOffice"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:222
#, no-wrap
msgid "somewhat heavy"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:224
#, no-wrap
msgid "Gtk+, or KDE/ GNOME, or JDK(TM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:231
msgid ""
"The KDE desktop environment includes an office suite which can be installed "
"separately from KDE. Calligra includes standard components that can be "
"found in other office suites. Words is the word processor, Sheets is the "
"spreadsheet program, Stage manages slide presentations, and Karbon is used "
"to draw graphical documents."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:234
msgid ""
"In FreeBSD, package:editors/calligra[] can be installed as a package or a "
"port. To install the package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:238
#, no-wrap
msgid "# pkg install calligra\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:241
msgid "If the package is not available, use the Ports Collection instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:246
#, no-wrap
msgid ""
"# cd /usr/ports/editors/calligra\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:252
msgid ""
"AbiWord is a free word processing program similar in look and feel to "
"Microsoft(R) Word. It is fast, contains many features, and is user-friendly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:254
msgid ""
"AbiWord can import or export many file formats, including some proprietary "
"ones like Microsoft(R) [.filename]#.rtf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:256
msgid "To install the AbiWord package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:260
#, no-wrap
msgid "# pkg install abiword\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:263
msgid ""
"If the package is not available, it can be compiled from the Ports "
"Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:268
#, no-wrap
msgid ""
"# cd /usr/ports/editors/abiword\n"
"# make install clean\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:270
#, no-wrap
msgid "The GIMP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:276
msgid ""
"For image authoring or picture retouching, The GIMP provides a sophisticated "
"image manipulation program. It can be used as a simple paint program or as "
"a quality photo retouching suite. It supports a large number of plugins and "
"features a scripting interface. The GIMP can read and write a wide range of "
"file formats and supports interfaces with scanners and tablets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:278
msgid "To install the package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:282
#, no-wrap
msgid "# pkg install gimp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:285
msgid "Alternately, use the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:290
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/gimp\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:293
msgid ""
"The graphics category (https://www.FreeBSD.org/ports/graphics/[freebsd.org/"
"ports/graphics/]) of the Ports Collection contains several GIMP-related "
"plugins, help files, and user manuals."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:300
msgid ""
"Apache OpenOffice is an open source office suite which is developed under "
"the wing of the Apache Software Foundation's Incubator. It includes all of "
"the applications found in a complete office productivity suite: a word "
"processor, spreadsheet, presentation manager, and drawing program. Its user "
"interface is similar to other office suites, and it can import and export in "
"various popular file formats. It is available in a number of different "
"languages and internationalization has been extended to interfaces, spell "
"checkers, and dictionaries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:306
msgid ""
"The word processor of Apache OpenOffice uses a native XML file format for "
"increased portability and flexibility. The spreadsheet program features a "
"macro language which can be interfaced with external databases. Apache "
"OpenOffice is stable and runs natively on Windows(R), Solaris(TM), Linux(R), "
"FreeBSD, and Mac OS(R) X. More information about Apache OpenOffice can be "
"found at http://openoffice.org/[openoffice.org]. For FreeBSD specific "
"information refer to http://porting.openoffice.org/freebsd/[porting."
"openoffice.org/freebsd/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:308
msgid "To install the Apache OpenOffice package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:312
#, no-wrap
msgid "# pkg install apache-openoffice\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:315
msgid ""
"Once the package is installed, type the following command to launch Apache "
"OpenOffice:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:319
#, no-wrap
msgid "% openoffice-X.Y.Z\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:323
msgid ""
"where _X.Y.Z_ is the version number of the installed version of Apache "
"OpenOffice. The first time Apache OpenOffice launches, some questions will "
"be asked and a [.filename]#.openoffice.org# folder will be created in the "
"user's home directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:326
msgid ""
"If the desired Apache OpenOffice package is not available, compiling the "
"port is still an option. However, this requires a lot of disk space and a "
"fairly long time to compile:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:331
#, no-wrap
msgid ""
"# cd /usr/ports/editors/openoffice-4\n"
"# make install clean\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:336
msgid "To build a localized version, replace the previous command with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:340
#, no-wrap
msgid "# make LOCALIZED_LANG=your_language install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:344
msgid ""
"Replace _your_language_ with the correct language ISO-code. A list of "
"supported language codes is available in [.filename]#files/Makefile."
"localized#, located in the port's directory."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:352
msgid ""
"LibreOffice is a free software office suite developed by http://www."
"documentfoundation.org/[documentfoundation.org]. It is compatible with "
"other major office suites and available on a variety of platforms. It is a "
"rebranded fork of Apache OpenOffice and includes applications found in a "
"complete office productivity suite: a word processor, spreadsheet, "
"presentation manager, drawing program, database management program, and a "
"tool for creating and editing mathematical formulæ. It is available in a "
"number of different languages and internationalization has been extended to "
"interfaces, spell checkers, and dictionaries."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:357
msgid ""
"The word processor of LibreOffice uses a native XML file format for "
"increased portability and flexibility. The spreadsheet program features a "
"macro language which can be interfaced with external databases. LibreOffice "
"is stable and runs natively on Windows(R), Linux(R), FreeBSD, and Mac OS(R) "
"X. More information about LibreOffice can be found at http://www."
"libreoffice.org/[libreoffice.org]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:359
msgid "To install the English version of the LibreOffice package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:363
#, no-wrap
msgid "# pkg install libreoffice\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:367
msgid ""
"The editors category (https://www.FreeBSD.org/ports/editors/[freebsd.org/"
"ports/editors/]) of the Ports Collection contains several localizations for "
"LibreOffice. When installing a localized package, replace `libreoffice` "
"with the name of the localized package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:369
msgid ""
"Once the package is installed, type the following command to run LibreOffice:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:373
#, no-wrap
msgid "% libreoffice\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:376
msgid ""
"During the first launch, some questions will be asked and a [.filename]#."
"libreoffice# folder will be created in the user's home directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:380
msgid ""
"If the desired LibreOffice package is not available, compiling the port is "
"still an option. However, this requires a lot of disk space and a fairly "
"long time to compile. This example compiles the English version:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:385
#, no-wrap
msgid ""
"# cd /usr/ports/editors/libreoffice\n"
"# make install clean\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:391
msgid ""
"To build a localized version, `cd` into the port directory of the desired "
"language. Supported languages can be found in the editors category (https://"
"www.FreeBSD.org/ports/editors/[freebsd.org/ports/editors/]) of the Ports "
"Collection."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:394
#, no-wrap
msgid "Document Viewers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:398
msgid ""
"Some new document formats have gained popularity since the advent of UNIX(R) "
"and the viewers they require may not be available in the base system. This "
"section demonstrates how to install the following document viewers:"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:408
#: documentation/content/en/books/handbook/desktop/_index.adoc:433
#, no-wrap
msgid "Xpdf"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:412
#, no-wrap
msgid "FreeType"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:413
#: documentation/content/en/books/handbook/desktop/_index.adoc:455
#, no-wrap
msgid "gv"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:417
#, no-wrap
msgid "Xaw3d"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:418
#: documentation/content/en/books/handbook/desktop/_index.adoc:477
#, no-wrap
msgid "Geeqie"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:423
#: documentation/content/en/books/handbook/desktop/_index.adoc:499
#, no-wrap
msgid "ePDFView"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:428
#: documentation/content/en/books/handbook/desktop/_index.adoc:519
#, no-wrap
msgid "Okular"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:437
msgid ""
"For users that prefer a small FreeBSD PDF viewer, Xpdf provides a light-"
"weight and efficient viewer which requires few resources. It uses the "
"standard X fonts and does not require any additional toolkits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:439
msgid "To install the Xpdf package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:443
#, no-wrap
msgid "# pkg install xpdf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:446
#: documentation/content/en/books/handbook/desktop/_index.adoc:492
#: documentation/content/en/books/handbook/desktop/_index.adoc:590
#: documentation/content/en/books/handbook/desktop/_index.adoc:612
#: documentation/content/en/books/handbook/desktop/_index.adoc:634
msgid "If the package is not available, use the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:451
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/xpdf\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:454
msgid ""
"Once the installation is complete, launch `xpdf` and use the right mouse "
"button to activate the menu."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:461
msgid ""
"gv is a PostScript(R) and PDF viewer. It is based on ghostview, but has a "
"nicer look as it is based on the Xaw3d widget toolkit. gv has many "
"configurable features, such as orientation, paper size, scale, and anti-"
"aliasing. Almost any operation can be performed with either the keyboard or "
"the mouse."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:463
msgid "To install gv as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:467
#, no-wrap
msgid "# pkg install gv\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:470
#: documentation/content/en/books/handbook/desktop/_index.adoc:512
#: documentation/content/en/books/handbook/desktop/_index.adoc:532
msgid "If a package is unavailable, use the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:475
#, no-wrap
msgid ""
"# cd /usr/ports/print/gv\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:483
msgid ""
"Geeqie is a fork from the unmaintained GQView project, in an effort to move "
"development forward and integrate the existing patches. Geeqie is an image "
"manager which supports viewing a file with a single click, launching an "
"external editor, and thumbnail previews. It also features a slideshow mode "
"and some basic file operations, making it easy to manage image collections "
"and to find duplicate files. Geeqie supports full screen viewing and "
"internationalization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:485
msgid "To install the Geeqie package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:489
#, no-wrap
msgid "# pkg install geeqie\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:497
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/geeqie\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:503
msgid ""
"ePDFView is a lightweight `PDF` document viewer that only uses the Gtk+ and "
"Poppler libraries. It is currently under development, but already opens "
"most `PDF` files (even encrypted), save copies of documents, and has support "
"for printing using CUPS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:505
msgid "To install ePDFView as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:509
#, no-wrap
msgid "# pkg install epdfview\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:517
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/epdfview\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:523
msgid ""
"Okular is a universal document viewer based on KPDF for KDE. It can open "
"many document formats, including `PDF`, PostScript(R), DjVu, `CHM`, `XPS`, "
"and ePub."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:525
msgid "To install Okular as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:529
#, no-wrap
msgid "# pkg install okular\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:537
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/okular\n"
"# make install clean\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/desktop/_index.adoc:540
#, no-wrap
msgid "Finance"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:544
msgid ""
"For managing personal finances on a FreeBSD desktop, some powerful and easy-"
"to-use applications can be installed. Some are compatible with widespread "
"file formats, such as the formats used by Quicken and Excel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:546
msgid "This section covers these programs:"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:556
#: documentation/content/en/books/handbook/desktop/_index.adoc:571
#, no-wrap
msgid "GnuCash"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/desktop/_index.adoc:560
#: documentation/content/en/books/handbook/desktop/_index.adoc:565
#, no-wrap
msgid "GNOME"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:561
#: documentation/content/en/books/handbook/desktop/_index.adoc:597
#, no-wrap
msgid "Gnumeric"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/desktop/_index.adoc:566
#: documentation/content/en/books/handbook/desktop/_index.adoc:619
#, no-wrap
msgid "KMyMoney"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:576
msgid ""
"GnuCash is part of the GNOME effort to provide user-friendly, yet powerful, "
"applications to end-users. GnuCash can be used to keep track of income and "
"expenses, bank accounts, and stocks. It features an intuitive interface "
"while remaining professional."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:581
msgid ""
"GnuCash provides a smart register, a hierarchical system of accounts, and "
"many keyboard accelerators and auto-completion methods. It can split a "
"single transaction into several more detailed pieces. GnuCash can import "
"and merge Quicken QIF files. It also handles most international date and "
"currency formats."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:583
msgid "To install the GnuCash package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:587
#, no-wrap
msgid "# pkg install gnucash\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:595
#, no-wrap
msgid ""
"# cd /usr/ports/finance/gnucash\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:603
msgid ""
"Gnumeric is a spreadsheet program developed by the GNOME community. It "
"features convenient automatic guessing of user input according to the cell "
"format with an autofill system for many sequences. It can import files in a "
"number of popular formats, including Excel, Lotus 1-2-3, and Quattro Pro. "
"It has a large number of built-in functions and allows all of the usual cell "
"formats such as number, currency, date, time, and much more."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:605
msgid "To install Gnumeric as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:609
#, no-wrap
msgid "# pkg install gnumeric\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:617
#, no-wrap
msgid ""
"# cd /usr/ports/math/gnumeric\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:625
msgid ""
"KMyMoney is a personal finance application created by the KDE community. "
"KMyMoney aims to provide the important features found in commercial personal "
"finance manager applications. It also highlights ease-of-use and proper "
"double-entry accounting among its features. KMyMoney imports from standard "
"Quicken QIF files, tracks investments, handles multiple currencies, and "
"provides a wealth of reports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/desktop/_index.adoc:627
msgid "To install KMyMoney as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:631
#, no-wrap
msgid "# pkg install kmymoney-kde4\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/desktop/_index.adoc:639
#, no-wrap
msgid ""
"# cd /usr/ports/finance/kmymoney-kde4\n"
"# make install clean\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/disks/_index.po b/documentation/content/en/books/handbook/disks/_index.po
index 051f04d151..1d6677df78 100644
--- a/documentation/content/en/books/handbook/disks/_index.po
+++ b/documentation/content/en/books/handbook/disks/_index.po
@@ -1,5029 +1,5029 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/disks/_index.adoc:1
#, no-wrap
msgid "This chapter covers the use of disks and storage media in FreeBSD. This includes SCSI and IDE disks, CD and DVD media, memory-backed disks, and USB storage devices."
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/disks/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/disks/_index.adoc:1
#, no-wrap
-msgid "Chapter 18. Storage"
+msgid "Chapter 19. Storage"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/disks/_index.adoc:15
#, no-wrap
msgid "Storage"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:57
msgid ""
"This chapter covers the use of disks and storage media in FreeBSD. This "
"includes SCSI and IDE disks, CD and DVD media, memory-backed disks, and USB "
"storage devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:59
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:61
msgid "How to add additional hard disks to a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:62
msgid "How to grow the size of a disk's partition on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:63
msgid "How to configure FreeBSD to use USB storage devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:64
msgid "How to use CD and DVD media on a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:65
msgid "How to use the backup programs available under FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:66
msgid "How to set up memory disks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:67
msgid "What file system snapshots are and how to use them efficiently."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:68
msgid "How to use quotas to limit disk space usage."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:69
msgid "How to encrypt disks and swap to secure them against attackers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:70
msgid "How to configure a highly available storage network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:72
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:74
msgid ""
"Know how to crossref:kernelconfig[kernelconfig,configure and install a new "
"FreeBSD kernel]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:76
#, no-wrap
msgid "Adding Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:81
msgid ""
"This section describes how to add a new SATA disk to a machine that "
"currently only has a single drive. First, turn off the computer and install "
"the drive in the computer following the instructions of the computer, "
"controller, and drive manufacturers. Reboot the system and become `root`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:84
msgid ""
"Inspect [.filename]#/var/run/dmesg.boot# to ensure the new disk was found. "
"In this example, the newly added SATA drive will appear as [.filename]#ada1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:87
msgid ""
"For this example, a single large partition will be created on the new disk. "
"The http://en.wikipedia.org/wiki/GUID_Partition_Table[GPT] partitioning "
"scheme will be used in preference to the older and less versatile MBR scheme."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:92
msgid ""
"If the disk to be added is not blank, old partition information can be "
"removed with `gpart delete`. See man:gpart[8] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:96
msgid ""
"The partition scheme is created, and then a single partition is added. To "
"improve performance on newer disks with larger hardware block sizes, the "
"partition is aligned to one megabyte boundaries:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:101
#, no-wrap
msgid ""
"# gpart create -s GPT ada1\n"
"# gpart add -t freebsd-ufs -a 1M ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:105
msgid ""
"Depending on use, several smaller partitions may be desired. See man:"
"gpart[8] for options to create partitions smaller than a whole disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:107
msgid "The disk partition information can be viewed with `gpart show`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:115
#, no-wrap
msgid ""
"% gpart show ada1\n"
"=> 34 1465146988 ada1 GPT (699G)\n"
" 34 2014 - free - (1.0M)\n"
" 2048 1465143296 1 freebsd-ufs (699G)\n"
" 1465145344 1678 - free - (839K)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:118
msgid "A file system is created in the new partition on the new disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:122
#, no-wrap
msgid "# newfs -U /dev/ada1p1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:125
msgid ""
"An empty directory is created as a _mountpoint_, a location for mounting the "
"new disk in the original disk's file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:129
#, no-wrap
msgid "# mkdir /newdisk\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:132
msgid ""
"Finally, an entry is added to [.filename]#/etc/fstab# so the new disk will "
"be mounted automatically at startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:136
#, no-wrap
msgid "/dev/ada1p1\t/newdisk\tufs\trw\t2\t2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:139
msgid "The new disk can be mounted manually, without restarting the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:143
#, no-wrap
msgid "# mount /newdisk\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:146
#, no-wrap
msgid "Resizing and Growing Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:152
msgid ""
"A disk's capacity can increase without any changes to the data already "
"present. This happens commonly with virtual machines, when the virtual disk "
"turns out to be too small and is enlarged. Sometimes a disk image is "
"written to a USB memory stick, but does not use the full capacity. Here we "
"describe how to resize or _grow_ disk contents to take advantage of "
"increased capacity."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:155
msgid ""
"Determine the device name of the disk to be resized by inspecting [."
"filename]#/var/run/dmesg.boot#. In this example, there is only one SATA "
"disk in the system, so the drive will appear as [.filename]#ada0#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:157
msgid "List the partitions on the disk to see the current configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:166
#, no-wrap
msgid ""
"# gpart show ada0\n"
"=> 34 83886013 ada0 GPT (48G) [CORRUPT]\n"
" 34 128 1 freebsd-boot (64k)\n"
" 162 79691648 2 freebsd-ufs (38G)\n"
" 79691810 4194236 3 freebsd-swap (2G)\n"
" 83886046 1 - free - (512B)\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:172
msgid ""
"If the disk was formatted with the http://en.wikipedia.org/wiki/"
"GUID_Partition_Table[GPT] partitioning scheme, it may show as \"corrupted\" "
"because the GPT backup partition table is no longer at the end of the "
"drive. Fix the backup partition table with `gpart`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:177
#, no-wrap
msgid ""
"# gpart recover ada0\n"
"ada0 recovered\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:182
msgid ""
"Now the additional space on the disk is available for use by a new "
"partition, or an existing partition can be expanded:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:191
#, no-wrap
msgid ""
"# gpart show ada0\n"
"=> 34 102399933 ada0 GPT (48G)\n"
" 34 128 1 freebsd-boot (64k)\n"
" 162 79691648 2 freebsd-ufs (38G)\n"
" 79691810 4194236 3 freebsd-swap (2G)\n"
" 83886046 18513921 - free - (8.8G)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:196
msgid ""
"Partitions can only be resized into contiguous free space. Here, the last "
"partition on the disk is the swap partition, but the second partition is the "
"one that needs to be resized. Swap partitions only contain temporary data, "
"so it can safely be unmounted, deleted, and then recreate the third "
"partition after resizing the second partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:198
msgid "Disable the swap partition:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:202
#, no-wrap
msgid "# swapoff /dev/ada0p3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:205
msgid ""
"Delete the third partition, specified by the `-i` flag, from the disk _ada0_."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:215
#, no-wrap
msgid ""
"# gpart delete -i 3 ada0\n"
"ada0p3 deleted\n"
"# gpart show ada0\n"
"=> 34 102399933 ada0 GPT (48G)\n"
" 34 128 1 freebsd-boot (64k)\n"
" 162 79691648 2 freebsd-ufs (38G)\n"
" 79691810 22708157 - free - (10G)\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:223
msgid ""
"There is risk of data loss when modifying the partition table of a mounted "
"file system. It is best to perform the following steps on an unmounted file "
"system while running from a live CD-ROM or USB device. However, if "
"absolutely necessary, a mounted file system can be resized after disabling "
"GEOM safety features:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:227
#, no-wrap
msgid "# sysctl kern.geom.debugflags=16\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:236
msgid ""
"Resize the partition, leaving room to recreate a swap partition of the "
"desired size. The partition to resize is specified with `-i`, and the new "
"desired size with `-s`. Optionally, alignment of the partition is "
"controlled with `-a`. This only modifies the size of the partition. The "
"file system in the partition will be expanded in a separate step."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:246
#, no-wrap
msgid ""
"# gpart resize -i 2 -s 47G -a 4k ada0\n"
"ada0p2 resized\n"
"# gpart show ada0\n"
"=> 34 102399933 ada0 GPT (48G)\n"
" 34 128 1 freebsd-boot (64k)\n"
" 162 98566144 2 freebsd-ufs (47G)\n"
" 98566306 3833661 - free - (1.8G)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:250
msgid ""
"Recreate the swap partition and activate it. If no size is specified with `-"
"s`, all remaining space is used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:261
#, no-wrap
msgid ""
"# gpart add -t freebsd-swap -a 4k ada0\n"
"ada0p3 added\n"
"# gpart show ada0\n"
"=> 34 102399933 ada0 GPT (48G)\n"
" 34 128 1 freebsd-boot (64k)\n"
" 162 98566144 2 freebsd-ufs (47G)\n"
" 98566306 3833661 3 freebsd-swap (1.8G)\n"
"# swapon /dev/ada0p3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:264
msgid ""
"Grow the UFS file system to use the new capacity of the resized partition:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:274
#, no-wrap
msgid ""
"# growfs /dev/ada0p2\n"
"Device is mounted read-write; resizing will result in temporary write suspension for /.\n"
"It's strongly recommended to make a backup before growing the file system.\n"
"OK to grow file system on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] Yes\n"
"super-block backups (for fsck -b #) at:\n"
" 80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,\n"
" 89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:277
msgid ""
"If the file system is ZFS, the resize is triggered by running the `online` "
"subcommand with `-e`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:281
#, no-wrap
msgid "# zpool online -e zroot /dev/ada0p2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:284
msgid ""
"Both the partition and the file system on it have now been resized to use "
"the newly-available disk space."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:286
#, no-wrap
msgid "USB Storage Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:290
msgid ""
"Many external storage solutions, such as hard drives, USB thumbdrives, and "
"CD and DVD burners, use the Universal Serial Bus (USB). FreeBSD provides "
"support for USB 1.x, 2.0, and 3.0 devices."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:295
msgid ""
"USB 3.0 support is not compatible with some hardware, including Haswell "
"(Lynx point) chipsets. If FreeBSD boots with a `failed with error 19` "
"message, disable xHCI/USB3 in the system BIOS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:299
msgid ""
"Support for USB storage devices is built into the [.filename]#GENERIC# "
"kernel. For a custom kernel, be sure that the following lines are present "
"in the kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:312
#, no-wrap
msgid ""
"device scbus\t# SCSI bus (required for ATA/SCSI)\n"
"device da\t# Direct Access (disks)\n"
"device pass\t# Passthrough device (direct ATA/SCSI access)\n"
"device uhci\t# provides USB 1.x support\n"
"device ohci\t# provides USB 1.x support\n"
"device ehci\t# provides USB 2.0 support\n"
"device xhci\t# provides USB 3.0 support\n"
"device usb\t# USB Bus (required)\n"
"device umass\t# Disks/Mass storage - Requires scbus and da\n"
"device cd\t# needed for CD and DVD burners\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:316
msgid ""
"FreeBSD uses the man:umass[4] driver which uses the SCSI subsystem to access "
"USB storage devices. Since any USB device will be seen as a SCSI device by "
"the system, if the USB device is a CD or DVD burner, do _not_ include "
"`device atapicam` in a custom kernel configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:318
msgid ""
"The rest of this section demonstrates how to verify that a USB storage "
"device is recognized by FreeBSD and how to configure the device so that it "
"can be used."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:319
#, no-wrap
msgid "Device Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:324
msgid ""
"To test the USB configuration, plug in the USB device. Use `dmesg` to "
"confirm that the drive appears in the system message buffer. It should look "
"something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:336
#, no-wrap
msgid ""
"umass0: <STECH Simple Drive, class 0/0, rev 2.00/1.04, addr 3> on usbus0\n"
"umass0: SCSI over Bulk-Only; quirks = 0x0100\n"
"umass0:4:0:-1: Attached to scbus4\n"
"da0 at umass-sim0 bus 0 scbus4 target 0 lun 0\n"
"da0: <STECH Simple Drive 1.04> Fixed Direct Access SCSI-4 device\n"
"da0: Serial Number WD-WXE508CAN263\n"
"da0: 40.000MB/s transfers\n"
"da0: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)\n"
"da0: quirks=0x2<NO_6_BYTE>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:339
msgid ""
"The brand, device node ([.filename]#da0#), speed, and size will differ "
"according to the device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:341
msgid ""
"Since the USB device is seen as a SCSI one, `camcontrol` can be used to list "
"the USB storage devices attached to the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:346
#, no-wrap
msgid ""
"# camcontrol devlist\n"
"<STECH Simple Drive 1.04> at scbus4 target 0 lun 0 (pass3,da0)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:350
msgid ""
"Alternately, `usbconfig` can be used to list the device. Refer to man:"
"usbconfig[8] for more information about this command."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:355
#, no-wrap
msgid ""
"# usbconfig\n"
"ugen0.3: <Simple Drive STECH> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:359
msgid ""
"If the device has not been formatted, refer to <<disks-adding>> for "
"instructions on how to format and create partitions on the USB drive. If "
"the drive comes with a file system, it can be mounted by `root` using the "
"instructions in crossref:basics[mount-unmount,“Mounting and Unmounting File "
"Systems”]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:364
msgid ""
"Allowing untrusted users to mount arbitrary media, by enabling `vfs."
"usermount` as described below, should not be considered safe from a security "
"point of view. Most file systems were not built to safeguard against "
"malicious devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:368
msgid ""
"To make the device mountable as a normal user, one solution is to make all "
"users of the device a member of the `operator` group using man:pw[8]. Next, "
"ensure that `operator` is able to read and write the device by adding these "
"lines to [.filename]#/etc/devfs.rules#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:373
#, no-wrap
msgid ""
"[localrules=5]\n"
"add path 'da*' mode 0660 group operator\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:378
msgid ""
"If internal SCSI disks are also installed in the system, change the second "
"line as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:382
#, no-wrap
msgid "add path 'da[3-9]*' mode 0660 group operator\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:387
msgid ""
"This will exclude the first three SCSI disks ([.filename]#da0# to [."
"filename]#da2#) from belonging to the `operator` group. Replace _3_ with "
"the number of internal SCSI disks. Refer to man:devfs.rules[5] for more "
"information about this file."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:390
msgid "Next, enable the ruleset in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:394
#, no-wrap
msgid "devfs_system_ruleset=\"localrules\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:397
msgid ""
"Then, instruct the system to allow regular users to mount file systems by "
"adding the following line to [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:401
#, no-wrap
msgid "vfs.usermount=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:404
msgid ""
"Since this only takes effect after the next reboot, use `sysctl` to set this "
"variable now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:409
#, no-wrap
msgid ""
"# sysctl vfs.usermount=1\n"
"vfs.usermount: 0 -> 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:415
msgid ""
"The final step is to create a directory where the file system is to be "
"mounted. This directory needs to be owned by the user that is to mount the "
"file system. One way to do that is for `root` to create a subdirectory "
"owned by that user as [.filename]#/mnt/username#. In the following example, "
"replace _username_ with the login name of the user and _usergroup_ with the "
"user's primary group:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:420
#, no-wrap
msgid ""
"# mkdir /mnt/username\n"
"# chown username:usergroup /mnt/username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:424
msgid ""
"Suppose a USB thumbdrive is plugged in, and a device [.filename]#/dev/da0s1# "
"appears. If the device is formatted with a FAT file system, the user can "
"mount it using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:428
#, no-wrap
msgid "% mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:431
msgid "Before the device can be unplugged, it _must_ be unmounted first:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:435
#, no-wrap
msgid "% umount /mnt/username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:438
msgid ""
"After device removal, the system message buffer will show messages similar "
"to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:445
#, no-wrap
msgid ""
"umass0: at uhub3, port 2, addr 3 (disconnected)\n"
"da0 at umass-sim0 bus 0 scbus4 target 0 lun 0\n"
"da0: <STECH Simple Drive 1.04> s/n WD-WXE508CAN263 detached\n"
"(da0:umass-sim0:0:0:0): Periph destroyed\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:447
#, no-wrap
msgid "Automounting Removable Media"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:450
msgid ""
"USB devices can be automatically mounted by uncommenting this line in [."
"filename]#/etc/auto_master#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:454
#, no-wrap
msgid "/media\t\t-media\t\t-nosuid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:457
msgid "Then add these lines to [.filename]#/etc/devd.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:465
#, no-wrap
msgid ""
"notify 100 {\n"
"\tmatch \"system\" \"GEOM\";\n"
"\tmatch \"subsystem\" \"DEV\";\n"
"\taction \"/usr/sbin/automount -c\";\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:468
msgid ""
"Reload the configuration if man:autofs[5] and man:devd[8] are already "
"running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:473
#, no-wrap
msgid ""
"# service automount restart\n"
"# service devd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:476
msgid ""
"man:autofs[5] can be set to start at boot by adding this line to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:480
#, no-wrap
msgid "autofs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:483
msgid "man:autofs[5] requires man:devd[8] to be enabled, as it is by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:485
msgid "Start the services immediately with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:492
#, no-wrap
msgid ""
"# service automount start\n"
"# service automountd start\n"
"# service autounmountd start\n"
"# service devd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:497
msgid ""
"Each file system that can be automatically mounted appears as a directory in "
"[.filename]#/media/#. The directory is named after the file system label. "
"If the label is missing, the directory is named after the device node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:500
msgid ""
"The file system is transparently mounted on the first access, and unmounted "
"after a period of inactivity. Automounted drives can also be unmounted "
"manually:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:504
#, no-wrap
msgid "# automount -fu\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:508
msgid ""
"This mechanism is typically used for memory cards and USB memory sticks. It "
"can be used with any block device, including optical drives or iSCSILUNs."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:510
#, no-wrap
msgid "Creating and Using CD Media"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:516
msgid ""
"Compact Disc (CD) media provide a number of features that differentiate them "
"from conventional disks. They are designed so that they can be read "
"continuously without delays to move the head between tracks. While CD media "
"do have tracks, these refer to a section of data to be read continuously, "
"and not a physical property of the disk. The ISO 9660 file system was "
"designed to deal with these differences."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:520
msgid ""
"The FreeBSD Ports Collection provides several utilities for burning and "
"duplicating audio and data CDs. This chapter demonstrates the use of "
"several command line utilities. For CD burning software with a graphical "
"utility, consider installing the package:sysutils/xcdroast[] or package:"
"sysutils/k3b[] packages or ports."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:522
#, no-wrap
msgid "Supported Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:526
msgid ""
"The [.filename]#GENERIC# kernel provides support for SCSI, USB, and ATAPICD "
"readers and burners. If a custom kernel is used, the options that need to "
"be present in the kernel configuration file vary by the type of device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:528
msgid "For a SCSI burner, make sure these options are present:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:535
#, no-wrap
msgid ""
"device scbus\t# SCSI bus (required for ATA/SCSI)\n"
"device da\t# Direct Access (disks)\n"
"device pass\t# Passthrough device (direct ATA/SCSI access)\n"
"device cd\t# needed for CD and DVD burners\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:538
msgid "For a USB burner, make sure these options are present:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:551
#, no-wrap
msgid ""
"device scbus\t# SCSI bus (required for ATA/SCSI)\n"
"device da\t# Direct Access (disks)\n"
"device pass\t# Passthrough device (direct ATA/SCSI access)\n"
"device cd\t# needed for CD and DVD burners\n"
"device uhci\t# provides USB 1.x support\n"
"device ohci\t# provides USB 1.x support\n"
"device ehci\t# provides USB 2.0 support\n"
"device xhci\t# provides USB 3.0 support\n"
"device usb\t# USB Bus (required)\n"
"device umass\t# Disks/Mass storage - Requires scbus and da\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:554
msgid "For an ATAPI burner, make sure these options are present:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:561
#, no-wrap
msgid ""
"device ata\t# Legacy ATA/SATA controllers\n"
"device scbus\t# SCSI bus (required for ATA/SCSI)\n"
"device pass\t# Passthrough device (direct ATA/SCSI access)\n"
"device cd\t# needed for CD and DVD burners\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:566
msgid ""
"On FreeBSD versions prior to 10.x, this line is also needed in the kernel "
"configuration file if the burner is an ATAPI device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:570
#, no-wrap
msgid "device atapicam\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:573
msgid ""
"Alternately, this driver can be loaded at boot time by adding the following "
"line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:577
#, no-wrap
msgid "atapicam_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:580
msgid ""
"This will require a reboot of the system as this driver can only be loaded "
"at boot time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:584
msgid ""
"To verify that FreeBSD recognizes the device, run `dmesg` and look for an "
"entry for the device. On systems prior to 10.x, the device name in the "
"first line of the output will be [.filename]#acd0# instead of [."
"filename]#cd0#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:593
#, no-wrap
msgid ""
"% dmesg | grep cd\n"
"cd0 at ahcich1 bus 0 scbus1 target 0 lun 0\n"
"cd0: <HL-DT-ST DVDRAM GU70N LT20> Removable CD-ROM SCSI-0 device\n"
"cd0: Serial Number M3OD3S34152\n"
"cd0: 150.000MB/s transfers (SATA 1.x, UDMA6, ATAPI 12bytes, PIO 8192bytes)\n"
"cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:596
#, no-wrap
msgid "Burning a CD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:600
msgid ""
"In FreeBSD, `cdrecord` can be used to burn CDs. This command is installed "
"with the package:sysutils/cdrtools[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:603
msgid ""
"While `cdrecord` has many options, basic usage is simple. Specify the name "
"of the ISO file to burn and, if the system has multiple burner devices, "
"specify the name of the device to use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:607
#, no-wrap
msgid "# cdrecord dev=device imagefile.iso\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:610
msgid ""
"To determine the device name of the burner, use `-scanbus` which might "
"produce results like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:634
#, no-wrap
msgid ""
"# cdrecord -scanbus\n"
"ProDVD-ProBD-Clone 3.00 (amd64-unknown-freebsd10.0) Copyright (C) 1995-2010 Jörg Schilling\n"
"Using libscg version 'schily-0.9'\n"
"scsibus0:\n"
" 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk\n"
" 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk\n"
" 0,2,0 2) *\n"
" 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk\n"
" 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM\n"
" 0,5,0 5) *\n"
" 0,6,0 6) *\n"
" 0,7,0 7) *\n"
"scsibus1:\n"
" 1,0,0 100) *\n"
" 1,1,0 101) *\n"
" 1,2,0 102) *\n"
" 1,3,0 103) *\n"
" 1,4,0 104) *\n"
" 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM\n"
" 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner\n"
" 1,7,0 107) *\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:639
msgid ""
"Locate the entry for the CD burner and use the three numbers separated by "
"commas as the value for `dev`. In this case, the Yamaha burner device is "
"`1,5,0`, so the appropriate input to specify that device is `dev=1,5,0`. "
"Refer to the manual page for `cdrecord` for other ways to specify this value "
"and for information on writing audio tracks and controlling the write speed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:641
msgid ""
"Alternately, run the following command to get the device address of the "
"burner:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:646
#, no-wrap
msgid ""
"# camcontrol devlist\n"
"<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (cd0,pass0)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:650
msgid ""
"Use the numeric values for `scbus`, `target`, and `lun`. For this example, "
"`1,0,0` is the device name to use."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:652
#, no-wrap
msgid "Writing Data to an ISO File System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:657
msgid ""
"In order to produce a data CD, the data files that are going to make up the "
"tracks on the CD must be prepared before they can be burned to the CD. In "
"FreeBSD, package:sysutils/cdrtools[] installs `mkisofs`, which can be used "
"to produce an ISO 9660 file system that is an image of a directory tree "
"within a UNIX(R) file system. The simplest usage is to specify the name of "
"the ISO file to create and the path to the files to place into the ISO 9660 "
"file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:661
#, no-wrap
msgid "# mkisofs -o imagefile.iso /path/to/tree\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:664
msgid ""
"This command maps the file names in the specified path to names that fit the "
"limitations of the standard ISO 9660 file system, and will exclude files "
"that do not meet the standard for ISO file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:667
msgid ""
"A number of options are available to overcome the restrictions imposed by "
"the standard. In particular, `-R` enables the Rock Ridge extensions common "
"to UNIX(R) systems and `-J` enables Joliet extensions used by Microsoft(R) "
"systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:670
msgid ""
"For CDs that are going to be used only on FreeBSD systems, `-U` can be used "
"to disable all filename restrictions. When used with `-R`, it produces a "
"file system image that is identical to the specified FreeBSD tree, even if "
"it violates the ISO 9660 standard."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:678
msgid ""
"The last option of general use is `-b`. This is used to specify the "
"location of a boot image for use in producing an \"El Torito\" bootable CD. "
"This option takes an argument which is the path to a boot image from the top "
"of the tree being written to the CD. By default, `mkisofs` creates an ISO "
"image in \"floppy disk emulation\" mode, and thus expects the boot image to "
"be exactly 1200, 1440 or 2880 KB in size. Some boot loaders, like the one "
"used by the FreeBSD distribution media, do not use emulation mode. In this "
"case, `-no-emul-boot` should be used. So, if [.filename]#/tmp/myboot# holds "
"a bootable FreeBSD system with the boot image in [.filename]#/tmp/myboot/"
"boot/cdboot#, this command would produce [.filename]#/tmp/bootable.iso#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:682
#, no-wrap
msgid "# mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:685
msgid "The resulting ISO image can be mounted as a memory disk with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:690
#, no-wrap
msgid ""
"# mdconfig -a -t vnode -f /tmp/bootable.iso -u 0\n"
"# mount -t cd9660 /dev/md0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:693
msgid ""
"One can then verify that [.filename]#/mnt# and [.filename]#/tmp/myboot# are "
"identical."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:696
msgid ""
"There are many other options available for `mkisofs` to fine-tune its "
"behavior. Refer to man:mkisofs[8] for details."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:701
msgid ""
"It is possible to copy a data CD to an image file that is functionally "
"equivalent to the image file created with `mkisofs`. To do so, use [."
"filename]#dd# with the device name as the input file and the name of the ISO "
"to create as the output file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:705
#, no-wrap
msgid "# dd if=/dev/cd0 of=file.iso bs=2048\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:708
msgid ""
"The resulting image file can be burned to CD as described in <<cdrecord>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:711
#, no-wrap
msgid "Using Data CDs"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:714
msgid ""
"Once an ISO has been burned to a CD, it can be mounted by specifying the "
"file system type, the name of the device containing the CD, and an existing "
"mount point:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:718
#, no-wrap
msgid "# mount -t cd9660 /dev/cd0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:721
msgid ""
"Since `mount` assumes that a file system is of type `ufs`, an `Incorrect "
"super block` error will occur if `-t cd9660` is not included when mounting a "
"data CD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:726
msgid ""
"While any data CD can be mounted this way, disks with certain ISO 9660 "
"extensions might behave oddly. For example, Joliet disks store all "
"filenames in two-byte Unicode characters. If some non-English characters "
"show up as question marks, specify the local charset with `-C`. For more "
"information, refer to man:mount_cd9660[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:731
msgid ""
"In order to do this character conversion with the help of `-C`, the kernel "
"requires the [.filename]#cd9660_iconv.ko# module to be loaded. This can be "
"done either by adding this line to [.filename]#loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:735
#, no-wrap
msgid "cd9660_iconv_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:738
msgid ""
"and then rebooting the machine, or by directly loading the module with "
"`kldload`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:743
msgid ""
"Occasionally, `Device not configured` will be displayed when trying to mount "
"a data CD. This usually means that the CD drive has not detected a disk in "
"the tray, or that the drive is not visible on the bus. It can take a couple "
"of seconds for a CD drive to detect media, so be patient."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:747
msgid ""
"Sometimes, a SCSICD drive may be missed because it did not have enough time "
"to answer the bus reset. To resolve this, a custom kernel can be created "
"which increases the default SCSI delay. Add the following option to the "
"custom kernel configuration file and rebuild the kernel using the "
"instructions in crossref:kernelconfig[kernelconfig-building,“Building and "
"Installing a Custom Kernel”]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:751
#, no-wrap
msgid "options SCSI_DELAY=15000\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:754
msgid ""
"This tells the SCSI bus to pause 15 seconds during boot, to give the CD "
"drive every possible chance to answer the bus reset."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:759
msgid ""
"It is possible to burn a file directly to CD, without creating an ISO 9660 "
"file system. This is known as burning a raw data CD and some people do this "
"for backup purposes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:763
msgid ""
"This type of disk can not be mounted as a normal data CD. In order to "
"retrieve the data burned to such a CD, the data must be read from the raw "
"device node. For example, this command will extract a compressed tar file "
"located on the second CD device into the current working directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:767
#, no-wrap
msgid "# tar xzvf /dev/cd1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:770
msgid "In order to mount a data CD, the data must be written using `mkisofs`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:773
#, no-wrap
msgid "Duplicating Audio CDs"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:776
msgid ""
"To duplicate an audio CD, extract the audio data from the CD to a series of "
"files, then write these files to a blank CD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:779
msgid ""
"<<using-cdrecord>> describes how to duplicate and burn an audio CD. If the "
"FreeBSD version is less than 10.0 and the device is ATAPI, the `atapicam` "
"module must be first loaded using the instructions in <<atapicam>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:782
#, no-wrap
msgid "Procedure: Duplicating an Audio CD"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:784
msgid ""
"The package:sysutils/cdrtools[] package or port installs `cdda2wav`. This "
"command can be used to extract all of the audio tracks, with each track "
"written to a separate WAV file in the current working directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:788
#, no-wrap
msgid "% cdda2wav -vall -B -Owav\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:792
msgid ""
"A device name does not need to be specified if there is only one CD device "
"on the system. Refer to the `cdda2wav` manual page for instructions on how "
"to specify a device and to learn more about the other options available for "
"this command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:793
msgid "Use `cdrecord` to write the [.filename]#.wav# files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:797
#, no-wrap
msgid "% cdrecord -v dev=2,0 -dao -useinfo *.wav\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:800
msgid ""
"Make sure that _2,0_ is set appropriately, as described in <<cdrecord>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:802
#, no-wrap
msgid "Creating and Using DVD Media"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:806
msgid ""
"Compared to the CD, the DVD is the next generation of optical media storage "
"technology. The DVD can hold more data than any CD and is the standard for "
"video publishing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:808
msgid "Five physical recordable formats can be defined for a recordable DVD:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:810
msgid ""
"DVD-R: This was the first DVD recordable format available. The DVD-R "
"standard is defined by the http://www.dvdforum.org/forum.shtml[DVD Forum]. "
"This format is write once."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:811
msgid ""
"DVD-RW: This is the rewritable version of the DVD-R standard. A DVD-RW can "
"be rewritten about 1000 times."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:812
msgid ""
"DVD-RAM: This is a rewritable format which can be seen as a removable hard "
"drive. However, this media is not compatible with most DVD-ROM drives and "
"DVD-Video players as only a few DVD writers support the DVD-RAM format. "
"Refer to <<creating-dvd-ram>> for more information on DVD-RAM use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:813
msgid ""
"DVD+RW: This is a rewritable format defined by the https://en.wikipedia.org/"
"wiki/DVD%2BRW_Alliance[DVD+RW Alliance]. A DVD+RW can be rewritten about "
"1000 times."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:814
msgid "DVD+R: This format is the write once variation of the DVD+RW format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:816
msgid ""
"A single layer recordable DVD can hold up to 4,700,000,000 bytes which is "
"actually 4.38 GB or 4485 MB as 1 kilobyte is 1024 bytes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:822
msgid ""
"A distinction must be made between the physical media and the application. "
"For example, a DVD-Video is a specific file layout that can be written on "
"any recordable DVD physical media such as DVD-R, DVD+R, or DVD-RW. Before "
"choosing the type of media, ensure that both the burner and the DVD-Video "
"player are compatible with the media under consideration."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:824
#, no-wrap
msgid "Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:828
msgid ""
"To perform DVD recording, use man:growisofs[1]. This command is part of the "
"package:sysutils/dvd+rw-tools[] utilities which support all DVD media types."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:832
msgid ""
"These tools use the SCSI subsystem to access the devices, therefore "
"<<atapicam,ATAPI/CAM support>> must be loaded or statically compiled into "
"the kernel. This support is not needed if the burner uses the USB "
"interface. Refer to <<usb-disks>> for more details on USB device "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:834
msgid ""
"DMA access must also be enabled for ATAPI devices, by adding the following "
"line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:838
#: documentation/content/en/books/handbook/disks/_index.adoc:1071
#, no-wrap
msgid "hw.ata.atapi_dma=\"1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:841
msgid ""
"Before attempting to use dvd+rw-tools, consult the http://fy.chalmers.se/"
"~appro/linux/DVD+RW/hcn.html[Hardware Compatibility Notes]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:845
msgid ""
"For a graphical user interface, consider using package:sysutils/k3b[] which "
"provides a user friendly interface to man:growisofs[1] and many other "
"burning tools."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:847
#, no-wrap
msgid "Burning Data DVDs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:851
msgid ""
"Since man:growisofs[1] is a front-end to <<mkisofs,mkisofs>>, it will invoke "
"man:mkisofs[8] to create the file system layout and perform the write on the "
"DVD. This means that an image of the data does not need to be created "
"before the burning process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:853
msgid ""
"To burn to a DVD+R or a DVD-R the data in [.filename]#/path/to/data#, use "
"the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:857
#, no-wrap
msgid "# growisofs -dvd-compat -Z /dev/cd0 -J -R /path/to/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:861
msgid ""
"In this example, `-J -R` is passed to man:mkisofs[8] to create an ISO 9660 "
"file system with Joliet and Rock Ridge extensions. Refer to man:mkisofs[8] "
"for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:866
msgid ""
"For the initial session recording, `-Z` is used for both single and multiple "
"sessions. Replace _/dev/cd0_, with the name of the DVD device. Using `-dvd-"
"compat` indicates that the disk will be closed and that the recording will "
"be unappendable. This should also provide better media compatibility with "
"DVD-ROM drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:868
msgid "To burn a pre-mastered image, such as _imagefile.iso_, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:872
#, no-wrap
msgid "# growisofs -dvd-compat -Z /dev/cd0=imagefile.iso\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:876
msgid ""
"The write speed should be detected and automatically set according to the "
"media and the drive being used. To force the write speed, use `-speed=`. "
"Refer to man:growisofs[1] for example usage."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:883
msgid ""
"In order to support working files larger than 4.38GB, an UDF/ISO-9660 hybrid "
"file system must be created by passing `-udf -iso-level 3` to man:mkisofs[8] "
"and all related programs, such as man:growisofs[1]. This is required only "
"when creating an ISO image file or when writing files directly to a disk. "
"Since a disk created this way must be mounted as an UDF file system with man:"
"mount_udf[8], it will be usable only on an UDF aware operating system. "
"Otherwise it will look as if it contains corrupted files."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:885
msgid "To create this type of ISO file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:889
#, no-wrap
msgid "% mkisofs -R -J -udf -iso-level 3 -o imagefile.iso /path/to/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:892
msgid "To burn files directly to a disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:896
#, no-wrap
msgid "# growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /path/to/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:899
msgid ""
"When an ISO image already contains large files, no additional options are "
"required for man:growisofs[1] to burn that image on a disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:902
msgid ""
"Be sure to use an up-to-date version of package:sysutils/cdrtools[], which "
"contains man:mkisofs[8], as an older version may not contain large files "
"support. If the latest version does not work, install package:sysutils/"
"cdrtools-devel[] and read its man:mkisofs[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:904
#, no-wrap
msgid "Burning a DVD-Video"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:908
msgid ""
"A DVD-Video is a specific file layout based on the ISO 9660 and micro-UDF (M-"
"UDF) specifications. Since DVD-Video presents a specific data structure "
"hierarchy, a particular program such as package:multimedia/dvdauthor[] is "
"needed to author the DVD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:911
msgid ""
"If an image of the DVD-Video file system already exists, it can be burned in "
"the same way as any other image. If `dvdauthor` was used to make the DVD "
"and the result is in [.filename]#/path/to/video#, the following command "
"should be used to burn the DVD-Video:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:915
#, no-wrap
msgid "# growisofs -Z /dev/cd0 -dvd-video /path/to/video\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:919
msgid ""
"`-dvd-video` is passed to man:mkisofs[8] to instruct it to create a DVD-"
"Video file system layout. This option implies the `-dvd-compat` man:"
"growisofs[1] option."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:920
#, no-wrap
msgid "Using a DVD+RW"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:925
msgid ""
"Unlike CD-RW, a virgin DVD+RW needs to be formatted before first use. It is "
"_recommended_ to let man:growisofs[1] take care of this automatically "
"whenever appropriate. However, it is possible to use `dvd+rw-format` to "
"format the DVD+RW:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:929
#: documentation/content/en/books/handbook/disks/_index.adoc:1019
#, no-wrap
msgid "# dvd+rw-format /dev/cd0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:933
msgid ""
"Only perform this operation once and keep in mind that only virgin DVD+RW "
"medias need to be formatted. Once formatted, the DVD+RW can be burned as "
"usual."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:936
msgid ""
-"To burn a totally new file system and not just append some data onto a DVD"
-"+RW, the media does not need to be blanked first. Instead, write over the "
-"previous recording like this:"
+"To burn a totally new file system and not just append some data onto a "
+"DVD+RW, the media does not need to be blanked first. Instead, write over "
+"the previous recording like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:940
#, no-wrap
msgid "# growisofs -Z /dev/cd0 -J -R /path/to/newdata\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:945
msgid ""
"The DVD+RW format supports appending data to a previous recording. This "
"operation consists of merging a new session to the existing one as it is not "
"considered to be multi-session writing. man:growisofs[1] will _grow_ the "
"ISO 9660 file system present on the media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:947
msgid "For example, to append data to a DVD+RW, use the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:951
#: documentation/content/en/books/handbook/disks/_index.adoc:1039
#, no-wrap
msgid "# growisofs -M /dev/cd0 -J -R /path/to/nextdata\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:954
msgid ""
"The same man:mkisofs[8] options used to burn the initial session should be "
"used during next writes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:959
msgid ""
"Use `-dvd-compat` for better media compatibility with DVD-ROM drives. When "
"using DVD+RW, this option will not prevent the addition of data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:962
msgid "To blank the media, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:966
#, no-wrap
msgid "# growisofs -Z /dev/cd0=/dev/zero\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:968
#, no-wrap
msgid "Using a DVD-RW"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:972
msgid ""
"A DVD-RW accepts two disc formats: incremental sequential and restricted "
"overwrite. By default, DVD-RW discs are in sequential format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:975
msgid ""
"A virgin DVD-RW can be directly written without being formatted. However, a "
"non-virgin DVD-RW in sequential format needs to be blanked before writing a "
"new initial session."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:977
msgid "To blank a DVD-RW in sequential mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:981
#: documentation/content/en/books/handbook/disks/_index.adoc:1026
#, no-wrap
msgid "# dvd+rw-format -blank=full /dev/cd0\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:988
msgid ""
"A full blanking using `-blank=full` will take about one hour on a 1x media. "
"A fast blanking can be performed using `-blank`, if the DVD-RW will be "
"recorded in Disk-At-Once (DAO) mode. To burn the DVD-RW in DAO mode, use "
"the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:992
#, no-wrap
msgid "# growisofs -use-the-force-luke=dao -Z /dev/cd0=imagefile.iso\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:995
msgid ""
"Since man:growisofs[1] automatically attempts to detect fast blanked media "
"and engage DAO write, `-use-the-force-luke=dao` should not be required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:997
msgid ""
"One should instead use restricted overwrite mode with any DVD-RW as this "
"format is more flexible than the default of incremental sequential."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1000
msgid ""
"To write data on a sequential DVD-RW, use the same instructions as for the "
"other DVD formats:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1004
#, no-wrap
msgid "# growisofs -Z /dev/cd0 -J -R /path/to/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1008
msgid ""
"To append some data to a previous recording, use `-M` with man:"
"growisofs[1]. However, if data is appended on a DVD-RW in incremental "
"sequential mode, a new session will be created on the disc and the result "
"will be a multi-session disc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1013
msgid ""
"A DVD-RW in restricted overwrite format does not need to be blanked before a "
"new initial session. Instead, overwrite the disc with `-Z`. It is also "
"possible to grow an existing ISO 9660 file system written on the disc with `-"
"M`. The result will be a one-session DVD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1015
msgid ""
"To put a DVD-RW in restricted overwrite format, the following command must "
"be used:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1022
msgid "To change back to sequential format, use:"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1028
#, no-wrap
msgid "Multi-Session"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1033
msgid ""
"Few DVD-ROM drives support multi-session DVDs and most of the time only read "
"the first session. DVD+R, DVD-R and DVD-RW in sequential format can accept "
"multiple sessions. The notion of multiple sessions does not exist for the "
"DVD+RW and the DVD-RW restricted overwrite formats."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1035
msgid ""
"Using the following command after an initial non-closed session on a DVD+R, "
"DVD-R, or DVD-RW in sequential format, will add a new session to the disc:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1044
msgid ""
"Using this command with a DVD+RW or a DVD-RW in restricted overwrite mode "
"will append data while merging the new session to the existing one. The "
"result will be a single-session disc. Use this method to add data after an "
"initial write on these types of media."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1049
msgid ""
"Since some space on the media is used between each session to mark the end "
"and start of sessions, one should add sessions with a large amount of data "
-"to optimize media space. The number of sessions is limited to 154 for a DVD"
-"+R, about 2000 for a DVD-R, and 127 for a DVD+R Double Layer."
+"to optimize media space. The number of sessions is limited to 154 for a "
+"DVD+R, about 2000 for a DVD-R, and 127 for a DVD+R Double Layer."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1051
#, no-wrap
msgid "For More Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1054
msgid ""
"To obtain more information about a DVD, use `dvd+rw-mediainfo _/dev/cd0_` "
"while the disc in the specified drive."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1056
msgid ""
"More information about dvd+rw-tools can be found in man:growisofs[1], on the "
"http://fy.chalmers.se/~appro/linux/DVD+RW/[dvd+rw-tools web site], and in "
"the http://lists.debian.org/cdwrite/[cdwrite mailing list] archives."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1060
msgid ""
"When creating a problem report related to the use of dvd+rw-tools, always "
"include the output of `dvd+rw-mediainfo`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1063
#, no-wrap
msgid "Using a DVD-RAM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1067
msgid ""
"DVD-RAM writers can use either a SCSI or ATAPI interface. For ATAPI "
"devices, DMA access has to be enabled by adding the following line to [."
"filename]#/boot/loader.conf#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1076
msgid ""
"A DVD-RAM can be seen as a removable hard drive. Like any other hard drive, "
"the DVD-RAM must be formatted before it can be used. In this example, the "
"whole disk space will be formatted with a standard UFS2 file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1082
#, no-wrap
msgid ""
"# dd if=/dev/zero of=/dev/acd0 bs=2k count=1\n"
"# bsdlabel -Bw acd0\n"
"# newfs /dev/acd0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1085
msgid ""
"The DVD device, [.filename]#acd0#, must be changed according to the "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1087
msgid ""
"Once the DVD-RAM has been formatted, it can be mounted as a normal hard "
"drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1091
#, no-wrap
msgid "# mount /dev/acd0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1094
msgid "Once mounted, the DVD-RAM will be both readable and writeable."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1096
#, no-wrap
msgid "Creating and Using Floppy Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1099
msgid "This section explains how to format a 3.5 inch floppy disk in FreeBSD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1103
#, no-wrap
msgid "*Procedure: Steps to Format a Floppy*\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1108
msgid ""
"A floppy disk needs to be low-level formatted before it can be used. This "
"is usually done by the vendor, but formatting is a good way to check media "
"integrity. To low-level format the floppy disk on FreeBSD, use man:"
"fdformat[1]. When using this utility, make note of any error messages, as "
"these can help determine if the disk is good or bad."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1110
msgid ""
"To format the floppy, insert a new 3.5 inch floppy disk into the first "
"floppy drive and issue:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1114
#, no-wrap
msgid "# /usr/sbin/fdformat -f 1440 /dev/fd0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1117
msgid ""
"After low-level formatting the disk, create a disk label as it is needed by "
"the system to determine the size of the disk and its geometry. The supported "
"geometry values are listed in [.filename]#/etc/disktab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1119
msgid "To write the disk label, use man:bsdlabel[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1123
#, no-wrap
msgid "# /sbin/bsdlabel -B -w /dev/fd0 fd1440\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1126
msgid ""
"The floppy is now ready to be high-level formatted with a file system. The "
"floppy's file system can be either UFS or FAT, where FAT is generally a "
"better choice for floppies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1128
msgid "To format the floppy with FAT, issue:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1132
#, no-wrap
msgid "# /sbin/newfs_msdos /dev/fd0\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1138
msgid ""
"The disk is now ready for use. To use the floppy, mount it with man:"
"mount_msdosfs[8]. One can also install and use package:emulators/mtools[] "
"from the Ports Collection."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1140
#, no-wrap
msgid "Using NTFS Disks"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1143
msgid "This section explains how to mount NTFS disks in FreeBSD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1148
msgid ""
"NTFS (New Technology File System) is a proprietary journaling file system "
"developed by Microsoft(R). It has been the default file system in Microsoft "
"Windows(R) for many years. FreeBSD can mount NTFS volumes using a FUSE file "
"system. These file systems are implemented as user space programs which "
"interact with the man:fusefs[5] kernel module via a well defined interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1152
#, no-wrap
msgid "*Procedure: Steps to Mount a NTFS Disk*\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1155
msgid ""
"Before using a FUSE file system we need to load the man:fusefs[5] kernel "
"module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1159
#, no-wrap
msgid "# kldload fusefs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1162
msgid "Use man:sysrc[8] to load the module at startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1166
#, no-wrap
msgid "# sysrc kld_list+=fusefs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1169
msgid ""
"Install the actual NTFS file system from packages as in the example (see "
"crossref:ports[pkgng-intro,Using pkg for Binary Package Management]) or from "
"ports (see crossref:ports[ports-using,Using the Ports Collection]):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1173
#, no-wrap
msgid "# pkg install fusefs-ntfs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1176
msgid ""
"Last we need to create a directory where the file system will be mounted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1180
#, no-wrap
msgid "# mkdir /mnt/usb\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1183
msgid ""
"Suppose a USB disk is plugged in. The disk partition information can be "
"viewed with man:gpart[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1189
#, no-wrap
msgid ""
"# gpart show da0\n"
"=>\t 63 1953525105 da0 MBR (932G)\n"
"\t 63 1953525105 1 ntfs (932G)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1192
msgid "We can mount the disk using the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1196
#, no-wrap
msgid "# ntfs-3g /dev/da0s1 /mnt/usb/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1198
msgid "The disk is now ready to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1200
msgid "Additionally, an entry can be added to /etc/fstab:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1204
#, no-wrap
msgid "/dev/da0s1 /mnt/usb\tntfs mountprog=/usr/local/bin/ntfs-3g,noauto,rw 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1207
msgid "Now the disk can be now mounted with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1211
#, no-wrap
msgid "# mount /mnt/usb\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1214
msgid "The disk can be unmounted with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1218
#, no-wrap
msgid "# umount /mnt/usb/\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1222
#, no-wrap
msgid "Backup Basics"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1225
msgid ""
"Implementing a backup plan is essential in order to have the ability to "
"recover from disk failure, accidental file deletion, random file corruption, "
"or complete machine destruction, including destruction of on-site backups."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1228
msgid ""
"The backup type and schedule will vary, depending upon the importance of the "
"data, the granularity needed for file restores, and the amount of acceptable "
"downtime. Some possible backup techniques include:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1230
msgid ""
"Archives of the whole system, backed up onto permanent, off-site media. This "
"provides protection against all of the problems listed above, but is slow "
"and inconvenient to restore from, especially for non-privileged users."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1231
msgid ""
"File system snapshots, which are useful for restoring deleted files or "
"previous versions of files."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1232
msgid ""
"Copies of whole file systems or disks which are synchronized with another "
"system on the network using a scheduled package:net/rsync[]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1233
msgid ""
"Hardware or software RAID, which minimizes or avoids downtime when a disk "
"fails."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1237
msgid ""
"Typically, a mix of backup techniques is used. For example, one could "
"create a schedule to automate a weekly, full system backup that is stored "
"off-site and to supplement this backup with hourly ZFS snapshots. In "
"addition, one could make a manual backup of individual directories or files "
"before making file edits or deletions."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1239
msgid ""
"This section describes some of the utilities which can be used to create and "
"manage backups on a FreeBSD system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1240
#, no-wrap
msgid "File System Backups"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1246
msgid ""
"The traditional UNIX(R) programs for backing up a file system are man:"
"dump[8], which creates the backup, and man:restore[8], which restores the "
"backup. These utilities work at the disk block level, below the "
"abstractions of the files, links, and directories that are created by file "
"systems. Unlike other backup software, `dump` backs up an entire file "
"system and is unable to backup only part of a file system or a directory "
"tree that spans multiple file systems. Instead of writing files and "
"directories, `dump` writes the raw data blocks that comprise files and "
"directories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1250
msgid ""
"If `dump` is used on the root directory, it will not back up [.filename]#/"
"home#, [.filename]#/usr# or many other directories since these are typically "
"mount points for other file systems or symbolic links into those file "
"systems."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1254
msgid ""
"When used to restore data, `restore` stores temporary files in [.filename]#/"
"tmp/# by default. When using a recovery disk with a small [.filename]#/"
"tmp#, set `TMPDIR` to a directory with more free space in order for the "
"restore to succeed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1258
msgid ""
"When using `dump`, be aware that some quirks remain from its early days in "
"Version 6 of AT&T UNIX(R),circa 1975. The default parameters assume a "
"backup to a 9-track tape, rather than to another type of media or to the "
"high-density tapes available today. These defaults must be overridden on "
"the command line."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1261
msgid ""
"It is possible to backup a file system across the network to a another "
"system or to a tape drive attached to another computer. While the man:"
"rdump[8] and man:rrestore[8] utilities can be used for this purpose, they "
"are not considered to be secure."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1264
msgid ""
"Instead, one can use `dump` and `restore` in a more secure fashion over an "
"SSH connection. This example creates a full, compressed backup of [."
"filename]#/usr# and sends the backup file to the specified host over a SSH "
"connection."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1265
#, no-wrap
msgid "Using `dump` over ssh"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1272
#, no-wrap
msgid ""
"# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \\\n"
" targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1276
msgid ""
"This example sets `RSH` in order to write the backup to a tape drive on a "
"remote system over a SSH connection:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1277
#, no-wrap
msgid "Using `dump` over ssh with `RSH` Set"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1283
#, no-wrap
msgid "# env RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1286
#, no-wrap
msgid "Directory Backups"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1289
msgid ""
"Several built-in utilities are available for backing up and restoring "
"specified files and directories as needed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1293
msgid ""
"A good choice for making a backup of all of the files in a directory is man:"
"tar[1]. This utility dates back to Version 6 of AT&T UNIX(R) and by default "
"assumes a recursive backup to a local tape device. Switches can be used to "
"instead specify the name of a backup file."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1296
msgid ""
"This example creates a compressed backup of the current directory and saves "
"it to [.filename]#/tmp/mybackup.tgz#. When creating a backup file, make "
"sure that the backup is not saved to the same directory that is being backed "
"up."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1297
#, no-wrap
msgid "Backing Up the Current Directory with `tar`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1303
#, no-wrap
msgid "# tar czvf /tmp/mybackup.tgz .\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1309
msgid ""
"To restore the entire backup, `cd` into the directory to restore into and "
"specify the name of the backup. Note that this will overwrite any newer "
"versions of files in the restore directory. When in doubt, restore to a "
"temporary directory or specify the name of the file within the backup to "
"restore."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1310
#, no-wrap
msgid "Restoring Up the Current Directory with `tar`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1316
#, no-wrap
msgid "# tar xzvf /tmp/mybackup.tgz\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1321
msgid ""
"There are dozens of available switches which are described in man:tar[1]. "
"This utility also supports the use of exclude patterns to specify which "
"files should not be included when backing up the specified directory or "
"restoring files from a backup."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1324
msgid ""
"To create a backup using a specified list of files and directories, man:"
"cpio[1] is a good choice. Unlike `tar`, `cpio` does not know how to walk "
"the directory tree and it must be provided the list of files to backup."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1327
msgid ""
"For example, a list of files can be created using `ls` or `find`. This "
"example creates a recursive listing of the current directory which is then "
"piped to `cpio` in order to create an output backup file named [.filename]#/"
"tmp/mybackup.cpio#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1328
#, no-wrap
msgid "Using `ls` and `cpio` to Make a Recursive Backup of the Current Directory"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1334
#, no-wrap
msgid "# ls -R | cpio -ovF /tmp/mybackup.cpio\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1340
msgid ""
"A backup utility which tries to bridge the features provided by `tar` and "
"`cpio` is man:pax[1]. Over the years, the various versions of `tar` and "
"`cpio` became slightly incompatible. POSIX(R) created `pax` which attempts "
"to read and write many of the various `cpio` and `tar` formats, plus new "
"formats of its own."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1342
msgid "The `pax` equivalent to the previous examples would be:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1343
#, no-wrap
msgid "Backing Up the Current Directory with `pax`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1349
#, no-wrap
msgid "# pax -wf /tmp/mybackup.pax .\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1353
#, no-wrap
msgid "Using Data Tapes for Backups"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1358
msgid ""
"While tape technology has continued to evolve, modern backup systems tend to "
"combine off-site backups with local removable media. FreeBSD supports any "
"tape drive that uses SCSI, such as LTO or DAT. There is limited support for "
"SATA and USB tape drives."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1362
msgid ""
"For SCSI tape devices, FreeBSD uses the man:sa[4] driver and the [."
"filename]#/dev/sa0#, [.filename]#/dev/nsa0#, and [.filename]#/dev/esa0# "
"devices. The physical device name is [.filename]#/dev/sa0#. When [."
"filename]#/dev/nsa0# is used, the backup application will not rewind the "
"tape after writing a file, which allows writing more than one file to a "
"tape. Using [.filename]#/dev/esa0# ejects the tape after the device is "
"closed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1365
msgid ""
"In FreeBSD, `mt` is used to control operations of the tape drive, such as "
"seeking through files on a tape or writing tape control marks to the tape. "
"For example, the first three files on a tape can be preserved by skipping "
"past them before writing a new file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1369
#, no-wrap
msgid "# mt -f /dev/nsa0 fsf 3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1372
msgid "This utility supports many operations. Refer to man:mt[1] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1374
msgid ""
"To write a single file to tape using `tar`, specify the name of the tape "
"device and the file to backup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1378
#, no-wrap
msgid "# tar cvf /dev/sa0 file\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1381
msgid ""
"To recover files from a `tar` archive on tape into the current directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1385
#, no-wrap
msgid "# tar xvf /dev/sa0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1389
msgid ""
"To backup a UFS file system, use `dump`. This examples backs up [."
"filename]#/usr# without rewinding the tape when finished:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1393
#, no-wrap
msgid "# dump -0aL -b64 -f /dev/nsa0 /usr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1396
msgid ""
"To interactively restore files from a `dump` file on tape into the current "
"directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1400
#, no-wrap
msgid "# restore -i -f /dev/nsa0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1403
#, no-wrap
msgid "Third-Party Backup Utilities"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1407
msgid ""
"The FreeBSD Ports Collection provides many third-party utilities which can "
"be used to schedule the creation of backups, simplify tape backup, and make "
"backups easier and more convenient. Many of these applications are client/"
"server based and can be used to automate the backups of a single system or "
"all of the computers in a network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1409
msgid "Popular utilities include Amanda, Bacula, rsync, and duplicity."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1410
#, no-wrap
msgid "Emergency Recovery"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1413
msgid ""
"In addition to regular backups, it is recommended to perform the following "
"steps as part of an emergency preparedness plan."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1415
msgid "Create a print copy of the output of the following commands:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1417
msgid "`gpart show`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1418
msgid "`more /etc/fstab`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1419
msgid "`dmesg`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1423
msgid ""
"Store this printout and a copy of the installation media in a secure "
"location. Should an emergency restore be needed, boot into the installation "
"media and select `Live CD` to access a rescue shell. This rescue mode can "
"be used to view the current state of the system, and if needed, to reformat "
"disks and restore data from backups."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1428
msgid ""
"The installation media for FreeBSD/i386 {rel112-current}-RELEASE does not "
"include a rescue shell. For this version, instead download and burn a "
"Livefs CD image from link:ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/"
"ISO-IMAGES/{rel112-current}/FreeBSD-{rel112-current}-RELEASE-i386-livefs."
"iso[ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/{rel112-"
"current}/FreeBSD-{rel112-current}-RELEASE-i386-livefs.iso]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1434
msgid ""
"Next, test the rescue shell and the backups. Make notes of the procedure. "
"Store these notes with the media, the printouts, and the backups. These "
"notes may prevent the inadvertent destruction of the backups while under the "
"stress of performing an emergency recovery."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1436
msgid ""
"For an added measure of security, store the latest backup at a remote "
"location which is physically separated from the computers and disk drives by "
"a significant distance."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1438
#, no-wrap
msgid "Memory Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1442
msgid ""
"In addition to physical disks, FreeBSD also supports the creation and use of "
"memory disks. One possible use for a memory disk is to access the contents "
"of an ISO file system without the overhead of first burning it to a CD or "
"DVD, then mounting the CD/DVD media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1446
msgid ""
"In FreeBSD, the man:md[4] driver is used to provide support for memory "
"disks. The [.filename]#GENERIC# kernel includes this driver. When using a "
"custom kernel configuration file, ensure it includes this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1450
#, no-wrap
msgid "device md\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1453
#, no-wrap
msgid "Attaching and Detaching Existing Images"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1459
msgid ""
"To mount an existing file system image, use `mdconfig` to specify the name "
"of the ISO file and a free unit number. Then, refer to that unit number to "
"mount it on an existing mount point. Once mounted, the files in the ISO "
"will appear in the mount point. This example attaches _diskimage.iso_ to "
"the memory device [.filename]#/dev/md0# then mounts that memory device on [."
"filename]#/mnt#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1464
#, no-wrap
msgid ""
"# mdconfig -f diskimage.iso -u 0\n"
"# mount -t cd9660 /dev/md0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1469
msgid ""
"Notice that `-t cd9660` was used to mount an ISO format. If a unit number "
"is not specified with `-u`, `mdconfig` will automatically allocate an unused "
"memory device and output the name of the allocated unit, such as [."
"filename]#md4#. Refer to man:mdconfig[8] for more details about this "
"command and its options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1473
msgid ""
"When a memory disk is no longer in use, its resources should be released "
"back to the system. First, unmount the file system, then use `mdconfig` to "
"detach the disk from the system and release its resources. To continue this "
"example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1478
#, no-wrap
msgid ""
"# umount /mnt\n"
"# mdconfig -d -u 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1481
msgid ""
"To determine if any memory disks are still attached to the system, type "
"`mdconfig -l`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1483
#, no-wrap
msgid "Creating a File- or Memory-Backed Memory Disk"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1488
msgid ""
"FreeBSD also supports memory disks where the storage to use is allocated "
"from either a hard disk or an area of memory. The first method is commonly "
"referred to as a file-backed file system and the second method as a memory-"
"backed file system. Both types can be created using `mdconfig`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1493
msgid ""
"To create a new memory-backed file system, specify a type of `swap` and the "
"size of the memory disk to create. Then, format the memory disk with a file "
"system and mount as usual. This example creates a 5M memory disk on unit "
"`1`. That memory disk is then formatted with the UFS file system before it "
"is mounted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1507
#, no-wrap
msgid ""
"# mdconfig -a -t swap -s 5m -u 1\n"
"# newfs -U md1\n"
"/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048\n"
" using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.\n"
" with soft updates\n"
"super-block backups (for fsck -b #) at:\n"
" 160, 2752, 5344, 7936\n"
"# mount /dev/md1 /mnt\n"
"# df /mnt\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/md1 4718 4 4338 0% /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1511
msgid ""
"To create a new file-backed memory disk, first allocate an area of disk to "
"use. This example creates an empty 5MB file named [.filename]#newimage#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1517
#, no-wrap
msgid ""
"# dd if=/dev/zero of=newimage bs=1k count=5k\n"
"5120+0 records in\n"
"5120+0 records out\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1520
msgid ""
"Next, attach that file to a memory disk, label the memory disk and format it "
"with the UFS file system, mount the memory disk, and verify the size of the "
"file-backed disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1534
#, no-wrap
msgid ""
"# mdconfig -f newimage -u 0\n"
"# bsdlabel -w md0 auto\n"
"# newfs -U md0a\n"
"/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048\n"
" using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.\n"
"super-block backups (for fsck -b #) at:\n"
" 160, 2720, 5280, 7840\n"
"# mount /dev/md0a /mnt\n"
"# df /mnt\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/md0a 4710 4 4330 0% /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1539
msgid ""
"It takes several commands to create a file- or memory-backed file system "
"using `mdconfig`. FreeBSD also comes with `mdmfs` which automatically "
"configures a memory disk, formats it with the UFS file system, and mounts "
"it. For example, after creating _newimage_ with `dd`, this one command is "
"equivalent to running the `bsdlabel`, `newfs`, and `mount` commands shown "
"above:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1543
#, no-wrap
msgid "# mdmfs -F newimage -s 5m md0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1546
msgid ""
"To instead create a new memory-based memory disk with `mdmfs`, use this one "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1550
#, no-wrap
msgid "# mdmfs -s 5m md1 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1554
msgid ""
"If the unit number is not specified, `mdmfs` will automatically select an "
"unused memory device. For more details about `mdmfs`, refer to man:mdmfs[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1556
#, no-wrap
msgid "File System Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1559
msgid ""
"FreeBSD offers a feature in conjunction with crossref:config[soft-updates,"
"Soft Updates]: file system snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1565
msgid ""
"UFS snapshots allow a user to create images of specified file systems, and "
"treat them as a file. Snapshot files must be created in the file system "
"that the action is performed on, and a user may create no more than 20 "
"snapshots per file system. Active snapshots are recorded in the superblock "
"so they are persistent across unmount and remount operations along with "
"system reboots. When a snapshot is no longer required, it can be removed "
"using man:rm[1]. While snapshots may be removed in any order, all the used "
"space may not be acquired because another snapshot will possibly claim some "
"of the released blocks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1568
msgid ""
"The un-alterable `snapshot` file flag is set by man:mksnap_ffs[8] after "
"initial creation of a snapshot file. man:unlink[1] makes an exception for "
"snapshot files since it allows them to be removed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1571
msgid ""
"Snapshots are created using man:mount[8]. To place a snapshot of [."
"filename]#/var# in the file [.filename]#/var/snapshot/snap#, use the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1575
#, no-wrap
msgid "# mount -u -o snapshot /var/snapshot/snap /var\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1578
msgid "Alternatively, use man:mksnap_ffs[8] to create the snapshot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1582
#, no-wrap
msgid "# mksnap_ffs /var /var/snapshot/snap\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1585
msgid ""
"One can find snapshot files on a file system, such as [.filename]#/var#, "
"using man:find[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1589
#, no-wrap
msgid "# find /var -flags snapshot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1592
msgid "Once a snapshot has been created, it has several uses:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1594
msgid ""
"Some administrators will use a snapshot file for backup purposes, because "
"the snapshot can be transferred to CDs or tape."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1595
msgid ""
"The file system integrity checker, man:fsck[8], may be run on the snapshot. "
"Assuming that the file system was clean when it was mounted, this should "
"always provide a clean and unchanging result."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1596
msgid ""
"Running man:dump[8] on the snapshot will produce a dump file that is "
"consistent with the file system and the timestamp of the snapshot. man:"
"dump[8] can also take a snapshot, create a dump image, and then remove the "
"snapshot in one command by using `-L`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1597
msgid ""
"The snapshot can be mounted as a frozen image of the file system. To man:"
"mount[8] the snapshot [.filename]#/var/snapshot/snap# run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1602
#, no-wrap
msgid ""
"# mdconfig -a -t vnode -o readonly -f /var/snapshot/snap -u 4\n"
"# mount -r /dev/md4 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1608
msgid ""
"The frozen [.filename]#/var# is now available through [.filename]#/mnt#. "
"Everything will initially be in the same state it was during the snapshot "
"creation time. The only exception is that any earlier snapshots will appear "
"as zero length files. To unmount the snapshot, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1613
#, no-wrap
msgid ""
"# umount /mnt\n"
"# mdconfig -d -u 4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1616
msgid ""
"For more information about `softupdates` and file system snapshots, "
"including technical papers, visit Marshall Kirk McKusick's website at http://"
"www.mckusick.com/[http://www.mckusick.com/]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1618
#, no-wrap
msgid "Disk Quotas"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1622
msgid ""
"Disk quotas can be used to limit the amount of disk space or the number of "
"files a user or members of a group may allocate on a per-file system basis. "
"This prevents one user or group of users from consuming all of the available "
"disk space."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1625
msgid ""
"This section describes how to configure disk quotas for the UFS file "
"system. To configure quotas on the ZFS file system, refer to crossref:"
"zfs[zfs-zfs-quota,\"Dataset, User, and Group Quotas\"]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1626
#, no-wrap
msgid "Enabling Disk Quotas"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1629
msgid "To determine if the FreeBSD kernel provides support for disk quotas:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1634
#, no-wrap
msgid ""
"% sysctl kern.features.ufs_quota\n"
"kern.features.ufs_quota: 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1638
msgid ""
"In this example, the `1` indicates quota support. If the value is instead "
"`0`, add the following line to a custom kernel configuration file and "
"rebuild the kernel using the instructions in crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1642
#, no-wrap
msgid "options QUOTA\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1645
msgid "Next, enable disk quotas in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1649
#, no-wrap
msgid "quota_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1655
msgid ""
"Normally on bootup, the quota integrity of each file system is checked by "
"man:quotacheck[8]. This program insures that the data in the quota database "
"properly reflects the data on the file system. This is a time consuming "
"process that will significantly affect the time the system takes to boot. "
"To skip this step, add this variable to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1659
#, no-wrap
msgid "check_quotas=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1664
msgid ""
"Finally, edit [.filename]#/etc/fstab# to enable disk quotas on a per-file "
"system basis. To enable per-user quotas on a file system, add `userquota` "
"to the options field in the [.filename]#/etc/fstab# entry for the file "
"system to enable quotas on. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1668
#, no-wrap
msgid "/dev/da1s2g /home ufs rw,userquota 1 2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1672
msgid ""
"To enable group quotas, use `groupquota` instead. To enable both user and "
"group quotas, separate the options with a comma:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1676
#, no-wrap
msgid "/dev/da1s2g /home ufs rw,userquota,groupquota 1 2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1681
msgid ""
"By default, quota files are stored in the root directory of the file system "
"as [.filename]#quota.user# and [.filename]#quota.group#. Refer to man:"
"fstab[5] for more information. Specifying an alternate location for the "
"quota files is not recommended."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1683
msgid ""
"Once the configuration is complete, reboot the system and [.filename]#/etc/"
"rc# will automatically run the appropriate commands to create the initial "
"quota files for all of the quotas enabled in [.filename]#/etc/fstab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1686
msgid ""
"In the normal course of operations, there should be no need to manually run "
"man:quotacheck[8], man:quotaon[8], or man:quotaoff[8]. However, one should "
"read these manual pages to be familiar with their operation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1687
#, no-wrap
msgid "Setting Quota Limits"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1690
msgid "To verify that quotas are enabled, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1694
#, no-wrap
msgid "# quota -v\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1697
msgid ""
"There should be a one line summary of disk usage and current quota limits "
"for each file system that quotas are enabled on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1699
msgid "The system is now ready to be assigned quota limits with `edquota`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1703
msgid ""
"Several options are available to enforce limits on the amount of disk space "
"a user or group may allocate, and how many files they may create. "
"Allocations can be limited based on disk space (block quotas), number of "
"files (inode quotas), or a combination of both. Each limit is further "
"broken down into two categories: hard and soft limits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1708
msgid ""
"A hard limit may not be exceeded. Once a user reaches a hard limit, no "
"further allocations can be made on that file system by that user. For "
"example, if the user has a hard limit of 500 kbytes on a file system and is "
"currently using 490 kbytes, the user can only allocate an additional 10 "
"kbytes. Attempting to allocate an additional 11 kbytes will fail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1712
msgid ""
"Soft limits can be exceeded for a limited amount of time, known as the grace "
"period, which is one week by default. If a user stays over their limit "
"longer than the grace period, the soft limit turns into a hard limit and no "
"further allocations are allowed. When the user drops back below the soft "
"limit, the grace period is reset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1716
msgid ""
"In the following example, the quota for the `test` account is being edited. "
"When `edquota` is invoked, the editor specified by `EDITOR` is opened in "
"order to edit the quota limits. The default editor is set to vi."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1725
#, no-wrap
msgid ""
"# edquota -u test\n"
"Quotas for user test:\n"
"/usr: kbytes in use: 65, limits (soft = 50, hard = 75)\n"
" inodes in use: 7, limits (soft = 50, hard = 60)\n"
"/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)\n"
" inodes in use: 0, limits (soft = 50, hard = 60)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1731
msgid ""
"There are normally two lines for each file system that has quotas enabled. "
"One line represents the block limits and the other represents the inode "
"limits. Change the value to modify the quota limit. For example, to raise "
"the block limit on [.filename]#/usr# to a soft limit of `500` and a hard "
"limit of `600`, change the values in that line as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1735
#, no-wrap
msgid "/usr: kbytes in use: 65, limits (soft = 500, hard = 600)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1738
msgid "The new quota limits take effect upon exiting the editor."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1743
msgid ""
"Sometimes it is desirable to set quota limits on a range of users. This can "
"be done by first assigning the desired quota limit to a user. Then, use `-"
"p` to duplicate that quota to a specified range of user IDs (UIDs). The "
"following command will duplicate those quota limits for UIDs `10,000` "
"through `19,999`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1747
#, no-wrap
msgid "# edquota -p test 10000-19999\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1750
msgid "For more information, refer to man:edquota[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1751
#, no-wrap
msgid "Checking Quota Limits and Disk Usage"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1757
msgid ""
"To check individual user or group quotas and disk usage, use man:quota[1]. "
"A user may only examine their own quota and the quota of a group they are a "
"member of. Only the superuser may view all user and group quotas. To get a "
"summary of all quotas and disk usage for file systems with quotas enabled, "
"use man:repquota[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1761
msgid ""
"Normally, file systems that the user is not using any disk space on will not "
"show in the output of `quota`, even if the user has a quota limit assigned "
"for that file system. Use `-v` to display those file systems. The "
"following is sample output from `quota -v` for a user that has quota limits "
"on two file systems."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1768
#, no-wrap
msgid ""
"Disk quotas for user test (uid 1002):\n"
" Filesystem usage quota limit grace files quota limit grace\n"
" /usr 65* 50 75 5days 7 50 60\n"
" /usr/var 0 50 75 0 50 60\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1772
msgid ""
"In this example, the user is currently 15 kbytes over the soft limit of 50 "
"kbytes on [.filename]#/usr# and has 5 days of grace period left. The "
"asterisk `*` indicates that the user is currently over the quota limit."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1773
#, no-wrap
msgid "Quotas over NFS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1777
msgid ""
"Quotas are enforced by the quota subsystem on the NFS server. The man:rpc."
"rquotad[8] daemon makes quota information available to `quota` on NFS "
"clients, allowing users on those machines to see their quota statistics."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1779
msgid ""
-"On the NFS server, enable `rpc.rquotad` by removing the `#` from this line "
+"On the NFS server, enable `rpc.rquotad` by removing the `+#+` from this line "
"in [.filename]*/etc/inetd.conf*:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1783
#, no-wrap
msgid "rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1786
msgid "Then, restart `inetd`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1790
#, no-wrap
msgid "# service inetd restart\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:1793
#, no-wrap
msgid "Encrypting Disk Partitions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1798
msgid ""
"FreeBSD offers excellent online protections against unauthorized data "
"access. File permissions and crossref:mac[mac,Mandatory Access Control] "
"(MAC) help prevent unauthorized users from accessing data while the "
"operating system is active and the computer is powered up. However, the "
"permissions enforced by the operating system are irrelevant if an attacker "
"has physical access to a computer and can move the computer's hard drive to "
"another system to copy and analyze the data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1802
msgid ""
"Regardless of how an attacker may have come into possession of a hard drive "
"or powered-down computer, the GEOM-based cryptographic subsystems built into "
"FreeBSD are able to protect the data on the computer's file systems against "
"even highly-motivated attackers with significant resources. Unlike "
"encryption methods that encrypt individual files, the built-in `gbde` and "
"`geli` utilities can be used to transparently encrypt entire file systems. "
"No cleartext ever touches the hard drive's platter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1805
msgid ""
"This chapter demonstrates how to create an encrypted file system on "
"FreeBSD. It first demonstrates the process using `gbde` and then "
"demonstrates the same example using `geli`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1806
#, no-wrap
msgid "Disk Encryption with gbde"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1811
msgid ""
"The objective of the man:gbde[4] facility is to provide a formidable "
"challenge for an attacker to gain access to the contents of a _cold_ storage "
"device. However, if the computer is compromised while up and running and "
"the storage device is actively attached, or the attacker has access to a "
"valid passphrase, it offers no protection to the contents of the storage "
"device. Thus, it is important to provide physical security while the system "
"is running and to protect the passphrase used by the encryption mechanism."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1816
msgid ""
"This facility provides several barriers to protect the data stored in each "
"disk sector. It encrypts the contents of a disk sector using 128-bit AES in "
"CBC mode. Each sector on the disk is encrypted with a different AES key. "
"For more information on the cryptographic design, including how the sector "
"keys are derived from the user-supplied passphrase, refer to man:gbde[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1818
msgid ""
"FreeBSD provides a kernel module for gbde which can be loaded with this "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1822
#, no-wrap
msgid "# kldload geom_bde\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1825
msgid ""
"If using a custom kernel configuration file, ensure it contains this line:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1827
msgid "`options GEOM_BDE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1829
msgid ""
"The following example demonstrates adding a new hard drive to a system that "
"will hold a single encrypted partition that will be mounted as [.filename]#/"
"private#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1831
#, no-wrap
msgid "Procedure: Encrypting a Partition with gbde"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1833
msgid "Add the New Hard Drive"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1836
msgid ""
"Install the new drive to the system as explained in <<disks-adding>>. For "
"the purposes of this example, a new hard drive partition has been added as [."
"filename]#/dev/ad4s1c# and [.filename]#/dev/ad0s1*# represents the existing "
"standard FreeBSD partitions."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1843
#, no-wrap
msgid ""
"# ls /dev/ad*\n"
"/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1\n"
"/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c\n"
"/dev/ad0s1a /dev/ad0s1d /dev/ad4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1846
msgid "Create a Directory to Hold `gbde` Lock Files"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1850
#, no-wrap
msgid "# mkdir /etc/gbde\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1855
msgid ""
"The gbde lock file contains information that gbde requires to access "
"encrypted partitions. Without access to the lock file, gbde will not be "
"able to decrypt the data contained in the encrypted partition without "
"significant manual intervention which is not supported by the software. "
"Each encrypted partition uses a separate lock file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1856
msgid "Initialize the `gbde` Partition"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1861
msgid ""
"A gbde partition must be initialized before it can be used. This "
"initialization needs to be performed only once. This command will open the "
"default editor, in order to set various configuration options in a "
"template. For use with the UFS file system, set the sector_size to 2048:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1874
#, no-wrap
msgid ""
"# gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock\n"
"# $FreeBSD: src/sbin/gbde/template.txt,v 1.1.36.1 2009/08/03 08:13:06 kensmith Exp $\n"
"#\n"
"# Sector size is the smallest unit of data which can be read or written.\n"
"# Making it too small decreases performance and decreases available space.\n"
"# Making it too large may prevent filesystems from working. 512 is the\n"
"# minimum and always safe. For UFS, use the fragment size\n"
"#\n"
"sector_size\t=\t2048\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1880
msgid ""
"Once the edit is saved, the user will be asked twice to type the passphrase "
"used to secure the data. The passphrase must be the same both times. The "
"ability of gbde to protect data depends entirely on the quality of the "
"passphrase. For tips on how to select a secure passphrase that is easy to "
"remember, see http://world.std.com/\\~reinhold/diceware.html[http://world."
"std.com/~reinhold/diceware.htm]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1884
msgid ""
"This initialization creates a lock file for the gbde partition. In this "
"example, it is stored as [.filename]#/etc/gbde/ad4s1c.lock#. Lock files "
"must end in \".lock\" in order to be correctly detected by the [.filename]#/"
"etc/rc.d/gbde# start up script."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1889
msgid ""
"Lock files _must_ be backed up together with the contents of any encrypted "
"partitions. Without the lock file, the legitimate owner will be unable to "
"access the data on the encrypted partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1892
msgid "Attach the Encrypted Partition to the Kernel"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1896
#, no-wrap
msgid "# gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1900
msgid ""
"This command will prompt to input the passphrase that was selected during "
"the initialization of the encrypted partition. The new encrypted device "
"will appear in [.filename]#/dev# as [.filename]#/dev/device_name.bde#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1907
#, no-wrap
msgid ""
"# ls /dev/ad*\n"
"/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1\n"
"/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c\n"
"/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1910
msgid "Create a File System on the Encrypted Device"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1914
msgid ""
"Once the encrypted device has been attached to the kernel, a file system can "
"be created on the device. This example creates a UFS file system with soft "
"updates enabled. Be sure to specify the partition which has a [.filename]#*."
"bde# extension:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1918
#, no-wrap
msgid "# newfs -U /dev/ad4s1c.bde\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1921
msgid "Mount the Encrypted Partition"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1923
msgid "Create a mount point and mount the encrypted file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1928
#, no-wrap
msgid ""
"# mkdir /private\n"
"# mount /dev/ad4s1c.bde /private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1931
msgid "Verify That the Encrypted File System is Available"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1933
msgid "The encrypted file system should now be visible and available for use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1944
#, no-wrap
msgid ""
"% df -H\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 1037M 72M 883M 8% /\n"
"/devfs 1.0K 1.0K 0B 100% /dev\n"
"/dev/ad0s1f 8.1G 55K 7.5G 0% /home\n"
"/dev/ad0s1e 1037M 1.1M 953M 0% /tmp\n"
"/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr\n"
"/dev/ad4s1c.bde 150G 4.1K 138G 0% /private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1948
msgid ""
"After each boot, any encrypted file systems must be manually re-attached to "
"the kernel, checked for errors, and mounted, before the file systems can be "
"used. To configure these steps, add the following lines to [.filename]#/etc/"
"rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1954
#, no-wrap
msgid ""
"gbde_autoattach_all=\"YES\"\n"
"gbde_devices=\"ad4s1c\"\n"
"gbde_lockdir=\"/etc/gbde\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:1959
msgid ""
"This requires that the passphrase be entered at the console at boot time. "
"After typing the correct passphrase, the encrypted partition will be mounted "
"automatically. Additional gbde boot options are available and listed in man:"
"rc.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1965
msgid ""
"sysinstall is incompatible with gbde-encrypted devices. All [.filename]#*."
"bde# devices must be detached from the kernel before starting sysinstall or "
"it will crash during its initial probing for devices. To detach the "
"encrypted device used in the example, use the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1969
#, no-wrap
msgid "# gbde detach /dev/ad4s1c\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:1973
#, no-wrap
msgid "Disk Encryption with `geli`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1978
msgid ""
"An alternative cryptographic GEOM class is available using `geli`. This "
"control utility adds some features and uses a different scheme for doing "
"cryptographic work. It provides the following features:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1980
msgid ""
"Utilizes the man:crypto[9] framework and automatically uses cryptographic "
"hardware when it is available."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1981
msgid ""
"Supports multiple cryptographic algorithms such as AES, Blowfish, and 3DES."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1982
msgid ""
"Allows the root partition to be encrypted. The passphrase used to access the "
"encrypted root partition will be requested during system boot."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1983
msgid "Allows the use of two independent keys."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1984
msgid "It is fast as it performs simple sector-to-sector encryption."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1985
msgid ""
"Allows backup and restore of master keys. If a user destroys their keys, it "
"is still possible to get access to the data by restoring keys from the "
"backup."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1986
msgid ""
"Allows a disk to attach with a random, one-time key which is useful for swap "
"partitions and temporary file systems."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1988
msgid "More features and usage examples can be found in man:geli[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1994
msgid ""
"The following example describes how to generate a key file which will be "
"used as part of the master key for the encrypted provider mounted under [."
"filename]#/private#. The key file will provide some random data used to "
"encrypt the master key. The master key will also be protected by a "
"passphrase. The provider's sector size will be 4kB. The example describes "
"how to attach to the `geli` provider, create a file system on it, mount it, "
"work with it, and finally, how to detach it."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/disks/_index.adoc:1996
#, no-wrap
msgid "Procedure: Encrypting a Partition with `geli`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:1998
msgid "Load `geli` Support"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2000
msgid ""
"Support for `geli` is available as a loadable kernel module. To configure "
"the system to automatically load the module at boot time, add the following "
"line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2004
#, no-wrap
msgid "geom_eli_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2007
msgid "To load the kernel module now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2011
#, no-wrap
msgid "# kldload geom_eli\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2014
msgid ""
"For a custom kernel, ensure the kernel configuration file contains these "
"lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2019
#, no-wrap
msgid ""
"options GEOM_ELI\n"
"device crypto\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2022
msgid "Generate the Master Key"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2029
msgid ""
"The following commands generate a master key that all data will be encrypted "
"with. This key can never be changed. Rather than using it directly, it is "
"encrypted with one or more user keys. The user keys are made up of an "
"optional combination of random bytes from a file, [.filename]#/root/da2."
"key#, and/or a passphrase. In this case, the data source for the key file "
"is [.filename]#/dev/random#. This command also configures the sector size "
"of the provider ([.filename]#/dev/da2.eli#) as 4kB, for better performance:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2036
#, no-wrap
msgid ""
"# dd if=/dev/random of=/root/da2.key bs=64 count=1\n"
"# geli init -K /root/da2.key -s 4096 /dev/da2\n"
"Enter new passphrase:\n"
"Reenter new passphrase:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2039
msgid ""
"It is not mandatory to use both a passphrase and a key file as either method "
"of securing the master key can be used in isolation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2042
msgid ""
"If the key file is given as \"-\", standard input will be used. For "
"example, this command generates three key files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2046
#, no-wrap
msgid "# cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2049
msgid "Attach the Provider with the Generated Key"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2051
msgid ""
"To attach the provider, specify the key file, the name of the disk, and the "
"passphrase:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2056
#, no-wrap
msgid ""
"# geli attach -k /root/da2.key /dev/da2\n"
"Enter passphrase:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2059
msgid "This creates a new device with an [.filename]#.eli# extension:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2064
#, no-wrap
msgid ""
"# ls /dev/da2*\n"
"/dev/da2 /dev/da2.eli\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2067
msgid "Create the New File System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2069
msgid ""
"Next, format the device with the UFS file system and mount it on an existing "
"mount point:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2075
#, no-wrap
msgid ""
"# dd if=/dev/random of=/dev/da2.eli bs=1m\n"
"# newfs /dev/da2.eli\n"
"# mount /dev/da2.eli /private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2078
msgid "The encrypted file system should now be available for use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2089
#, no-wrap
msgid ""
"# df -H\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 248M 89M 139M 38% /\n"
"/devfs 1.0K 1.0K 0B 100% /dev\n"
"/dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr\n"
"/dev/ad0s1d 989M 1.5M 909M 0% /tmp\n"
"/dev/ad0s1e 3.9G 1.3G 2.3G 35% /var\n"
"/dev/da2.eli 150G 4.1K 138G 0% /private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2092
msgid ""
"Once the work on the encrypted partition is done, and the [.filename]#/"
"private# partition is no longer needed, it is prudent to put the device into "
"cold storage by unmounting and detaching the `geli` encrypted partition from "
"the kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2097
#, no-wrap
msgid ""
"# umount /private\n"
"# geli detach da2.eli\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2100
msgid ""
"An [.filename]#rc.d# script is provided to simplify the mounting of `geli`-"
"encrypted devices at boot time. For this example, add these lines to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2105
#, no-wrap
msgid ""
"geli_devices=\"da2\"\n"
"geli_da2_flags=\"-k /root/da2.key\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2115
msgid ""
"This configures [.filename]#/dev/da2# as a `geli` provider with a master key "
"of [.filename]#/root/da2.key#. The system will automatically detach the "
"provider from the kernel before the system shuts down. During the startup "
"process, the script will prompt for the passphrase before attaching the "
"provider. Other kernel messages might be shown before and after the "
"password prompt. If the boot process seems to stall, look carefully for the "
"password prompt among the other messages. Once the correct passphrase is "
"entered, the provider is attached. The file system is then mounted, "
"typically by an entry in [.filename]#/etc/fstab#. Refer to crossref:"
"basics[mount-unmount,“Mounting and Unmounting File Systems”] for "
"instructions on how to configure a file system to mount at boot time."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:2117
#, no-wrap
msgid "Encrypting Swap"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2124
msgid ""
"Like the encryption of disk partitions, encryption of swap space is used to "
"protect sensitive information. Consider an application that deals with "
"passwords. As long as these passwords stay in physical memory, they are not "
"written to disk and will be cleared after a reboot. However, if FreeBSD "
"starts swapping out memory pages to free space, the passwords may be written "
"to the disk unencrypted. Encrypting swap space can be a solution for this "
"scenario."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2127
msgid ""
"This section demonstrates how to configure an encrypted swap partition using "
"man:gbde[8] or man:geli[8] encryption. It assumes that [.filename]#/dev/"
"ada0s1b# is the swap partition."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:2128
#, no-wrap
msgid "Configuring Encrypted Swap"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2132
msgid ""
"Swap partitions are not encrypted by default and should be cleared of any "
"sensitive data before continuing. To overwrite the current swap partition "
"with random garbage, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2136
#, no-wrap
msgid "# dd if=/dev/random of=/dev/ada0s1b bs=1m\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2139
msgid ""
"To encrypt the swap partition using man:gbde[8], add the `.bde` suffix to "
"the swap line in [.filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2144
#, no-wrap
msgid ""
"# Device\t\tMountpoint\tFStype\tOptions\t\tDump\tPass#\n"
"/dev/ada0s1b.bde\tnone\t\tswap\tsw\t\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2147
msgid ""
"To instead encrypt the swap partition using man:geli[8], use the `.eli` "
"suffix:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2152
#, no-wrap
msgid ""
"# Device\t\tMountpoint\tFStype\tOptions\t\tDump\tPass#\n"
"/dev/ada0s1b.eli\tnone\t\tswap\tsw\t\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2157
msgid ""
"By default, man:geli[8] uses the AES algorithm with a key length of 128 "
"bits. Normally the default settings will suffice. If desired, these "
"defaults can be altered in the options field in [.filename]#/etc/fstab#. The "
"possible flags are:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/disks/_index.adoc:2158
#, no-wrap
msgid "aalgo"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2161
msgid ""
"Data integrity verification algorithm used to ensure that the encrypted data "
"has not been tampered with. See man:geli[8] for a list of supported "
"algorithms."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/disks/_index.adoc:2162
#, no-wrap
msgid "ealgo"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2165
msgid ""
"Encryption algorithm used to protect the data. See man:geli[8] for a list "
"of supported algorithms."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/disks/_index.adoc:2166
#, no-wrap
msgid "keylen"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2169
msgid ""
"The length of the key used for the encryption algorithm. See man:geli[8] "
"for the key lengths that are supported by each encryption algorithm."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/disks/_index.adoc:2170
#, no-wrap
msgid "sectorsize"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2174
msgid ""
"The size of the blocks data is broken into before it is encrypted. Larger "
"sector sizes increase performance at the cost of higher storage overhead. "
"The recommended size is 4096 bytes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2176
msgid ""
"This example configures an encrypted swap partition using the Blowfish "
"algorithm with a key length of 128 bits and a sectorsize of 4 kilobytes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2181
#, no-wrap
msgid ""
"# Device\t\tMountpoint\tFStype\tOptions\t\t\t\tDump\tPass#\n"
"/dev/ada0s1b.eli\tnone\t\tswap\tsw,ealgo=blowfish,keylen=128,sectorsize=4096\t0\t0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:2183
#, no-wrap
msgid "Encrypted Swap Verification"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2186
msgid ""
"Once the system has rebooted, proper operation of the encrypted swap can be "
"verified using `swapinfo`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2188
msgid "If man:gbde[8] is being used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2194
#, no-wrap
msgid ""
"% swapinfo\n"
"Device 1K-blocks Used Avail Capacity\n"
"/dev/ada0s1b.bde 542720 0 542720 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2197
msgid "If man:geli[8] is being used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2203
#, no-wrap
msgid ""
"% swapinfo\n"
"Device 1K-blocks Used Avail Capacity\n"
"/dev/ada0s1b.eli 542720 0 542720 0\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/disks/_index.adoc:2206
#, no-wrap
msgid "Highly Available Storage (HAST)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2212
msgid ""
"High availability is one of the main requirements in serious business "
"applications and highly-available storage is a key component in such "
"environments. In FreeBSD, the Highly Available STorage (HAST) framework "
"allows transparent storage of the same data across several physically "
"separated machines connected by a TCP/IP network. HAST can be understood as "
"a network-based RAID1 (mirror), and is similar to the DRBD(R) storage system "
"used in the GNU/Linux(R) platform. In combination with other high-"
"availability features of FreeBSD like CARP, HAST makes it possible to build "
"a highly-available storage cluster that is resistant to hardware failures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2214
msgid "The following are the main features of HAST:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2216
msgid "Can be used to mask I/O errors on local hard drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2217
msgid ""
"File system agnostic as it works with any file system supported by FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2218
msgid ""
"Efficient and quick resynchronization as only the blocks that were modified "
"during the downtime of a node are synchronized."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2219
msgid ""
"Can be used in an already deployed environment to add additional redundancy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2220
msgid ""
"Together with CARP, Heartbeat, or other tools, it can be used to build a "
"robust and durable storage system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2222
msgid "After reading this section, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2224
msgid "What HAST is, how it works, and which features it provides."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2225
msgid "How to set up and use HAST on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2226
msgid "How to integrate CARP and man:devd[8] to build a robust storage system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2228
msgid "Before reading this section, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2230
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2231
msgid ""
"Know how to configure network interfaces and other core FreeBSD subsystems "
"(crossref:config[config-tuning,Configuration and Tuning])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2232
msgid ""
"Have a good understanding of FreeBSD networking (crossref:partiv[network-"
"communication,\"Network Communication\"])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2234
msgid ""
"The HAST project was sponsored by The FreeBSD Foundation with support from "
"http://www.omc.net/[http://www.omc.net/] and http://www.transip.nl/[http://"
"www.transip.nl/]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:2235
#, no-wrap
msgid "HAST Operation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2239
msgid ""
"HAST provides synchronous block-level replication between two physical "
"machines: the _primary_ node and the _secondary_ node. These two machines "
"together are referred to as a cluster."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2243
msgid ""
"Since HAST works in a primary-secondary configuration, it allows only one of "
"the cluster nodes to be active at any given time. The primary node, also "
"called _active_, is the one which will handle all the I/O requests to HAST-"
"managed devices. The secondary node is automatically synchronized from the "
"primary node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2245
msgid ""
"The physical components of the HAST system are the local disk on primary "
"node, and the disk on the remote, secondary node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2249
msgid ""
"HAST operates synchronously on a block level, making it transparent to file "
"systems and applications. HAST provides regular GEOM providers in [."
"filename]#/dev/hast/# for use by other tools or applications. There is no "
"difference between using HAST-provided devices and raw disks or partitions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2253
msgid ""
"Each write, delete, or flush operation is sent to both the local disk and to "
"the remote disk over TCP/IP. Each read operation is served from the local "
"disk, unless the local disk is not up-to-date or an I/O error occurs. In "
"such cases, the read operation is sent to the secondary node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2257
msgid ""
"HAST tries to provide fast failure recovery. For this reason, it is "
"important to reduce synchronization time after a node's outage. To provide "
"fast synchronization, HAST manages an on-disk bitmap of dirty extents and "
"only synchronizes those during a regular synchronization, with an exception "
"of the initial sync."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2260
msgid ""
"There are many ways to handle synchronization. HAST implements several "
"replication modes to handle different synchronization methods:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2262
msgid ""
"_memsync_: This mode reports a write operation as completed when the local "
"write operation is finished and when the remote node acknowledges data "
"arrival, but before actually storing the data. The data on the remote node "
"will be stored directly after sending the acknowledgement. This mode is "
"intended to reduce latency, but still provides good reliability. This mode "
"is the default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2263
msgid ""
"_fullsync_: This mode reports a write operation as completed when both the "
"local write and the remote write complete. This is the safest and the "
"slowest replication mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2264
msgid ""
"_async_: This mode reports a write operation as completed when the local "
"write completes. This is the fastest and the most dangerous replication "
"mode. It should only be used when replicating to a distant node where "
"latency is too high for other modes."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:2265
#, no-wrap
msgid "HAST Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2268
msgid "The HAST framework consists of several components:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2270
msgid ""
"The man:hastd[8] daemon which provides data synchronization. When this "
"daemon is started, it will automatically load `geom_gate.ko`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2271
msgid "The userland management utility, man:hastctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2272
msgid ""
"The man:hast.conf[5] configuration file. This file must exist before "
"starting hastd."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2274
msgid ""
"Users who prefer to statically build `GEOM_GATE` support into the kernel "
"should add this line to the custom kernel configuration file, then rebuild "
"the kernel using the instructions in crossref:kernelconfig[kernelconfig,"
"Configuring the FreeBSD Kernel]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2278
#, no-wrap
msgid "options\tGEOM_GATE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2284
msgid ""
"The following example describes how to configure two nodes in primary-"
"secondary operation using HAST to replicate the data between the two. The "
"nodes will be called `hasta`, with an IP address of `172.16.0.1`, and "
"`hastb`, with an IP address of `172.16.0.2`. Both nodes will have a "
"dedicated hard drive [.filename]#/dev/ad6# of the same size for HAST "
"operation. The HAST pool, sometimes referred to as a resource or the GEOM "
"provider in [.filename]#/dev/hast/#, will be called `test`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2288
msgid ""
"Configuration of HAST is done using [.filename]#/etc/hast.conf#. This file "
"should be identical on both nodes. The simplest configuration is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2301
#, no-wrap
msgid ""
"resource test {\n"
"\ton hasta {\n"
"\t\tlocal /dev/ad6\n"
"\t\tremote 172.16.0.2\n"
"\t}\n"
"\ton hastb {\n"
"\t\tlocal /dev/ad6\n"
"\t\tremote 172.16.0.1\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2304
msgid "For more advanced configuration, refer to man:hast.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2308
msgid ""
"It is also possible to use host names in the `remote` statements if the "
"hosts are resolvable and defined either in [.filename]#/etc/hosts# or in the "
"local DNS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2312
msgid ""
"Once the configuration exists on both nodes, the HAST pool can be created. "
"Run these commands on both nodes to place the initial metadata onto the "
"local disk and to start man:hastd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2317
#, no-wrap
msgid ""
"# hastctl create test\n"
"# service hastd onestart\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2323
msgid ""
"It is _not_ possible to use GEOM providers with an existing file system or "
"to convert an existing storage to a HAST-managed pool. This procedure needs "
"to store some metadata on the provider and there will not be enough required "
"space available on an existing provider."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2327
msgid ""
"A HAST node's `primary` or `secondary` role is selected by an administrator, "
"or software like Heartbeat, using man:hastctl[8]. On the primary node, "
"`hasta`, issue this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2331
#, no-wrap
msgid "# hastctl role primary test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2334
msgid "Run this command on the secondary node, `hastb`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2338
#, no-wrap
msgid "# hastctl role secondary test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2341
msgid "Verify the result by running `hastctl` on each node:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2345
#, no-wrap
msgid "# hastctl status test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2351
msgid ""
"Check the `status` line in the output. If it says `degraded`, something is "
"wrong with the configuration file. It should say `complete` on each node, "
"meaning that the synchronization between the nodes has started. The "
"synchronization completes when `hastctl status` reports 0 bytes of `dirty` "
"extents."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2356
msgid ""
"The next step is to create a file system on the GEOM provider and mount it. "
"This must be done on the `primary` node. Creating the file system can take "
"a few minutes, depending on the size of the hard drive. This example "
"creates a UFS file system on [.filename]#/dev/hast/test#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2362
#, no-wrap
msgid ""
"# newfs -U /dev/hast/test\n"
"# mkdir /hast/test\n"
"# mount /dev/hast/test /hast/test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2366
msgid ""
"Once the HAST framework is configured properly, the final step is to make "
"sure that HAST is started automatically during system boot. Add this line "
"to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2370
#, no-wrap
msgid "hastd_enable=\"YES\"\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/disks/_index.adoc:2372
#, no-wrap
msgid "Failover Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2376
msgid ""
"The goal of this example is to build a robust storage system which is "
"resistant to the failure of any given node. If the primary node fails, the "
"secondary node is there to take over seamlessly, check and mount the file "
"system, and continue to work without missing a single bit of data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2382
msgid ""
"To accomplish this task, the Common Address Redundancy Protocol (CARP) is "
"used to provide for automatic failover at the IP layer. CARP allows "
"multiple hosts on the same network segment to share an IP address. Set up "
"CARP on both nodes of the cluster according to the documentation available "
"in crossref:advanced-networking[carp,“Common Address Redundancy Protocol "
"(CARP)”]. In this example, each node will have its own management IP "
"address and a shared IP address of _172.16.0.254_. The primary HAST node of "
"the cluster must be the primary CARP node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2386
msgid ""
"The HAST pool created in the previous section is now ready to be exported to "
"the other hosts on the network. This can be accomplished by exporting it "
"through NFS or Samba, using the shared IP address _172.16.0.254_. The only "
"problem which remains unresolved is an automatic failover should the primary "
"node fail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2390
msgid ""
"In the event of CARP interfaces going up or down, the FreeBSD operating "
"system generates a man:devd[8] event, making it possible to watch for state "
"changes on the CARP interfaces. A state change on the CARP interface is an "
"indication that one of the nodes failed or came back online. These state "
"change events make it possible to run a script which will automatically "
"handle the HAST failover."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2392
msgid ""
"To catch state changes on the CARP interfaces, add this configuration to [."
"filename]#/etc/devd.conf# on each node:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2401
#, no-wrap
msgid ""
"notify 30 {\n"
"\tmatch \"system\" \"IFNET\";\n"
"\tmatch \"subsystem\" \"carp0\";\n"
"\tmatch \"type\" \"LINK_UP\";\n"
"\taction \"/usr/local/sbin/carp-hast-switch primary\";\n"
"};\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2408
#, no-wrap
msgid ""
"notify 30 {\n"
"\tmatch \"system\" \"IFNET\";\n"
"\tmatch \"subsystem\" \"carp0\";\n"
"\tmatch \"type\" \"LINK_DOWN\";\n"
"\taction \"/usr/local/sbin/carp-hast-switch secondary\";\n"
"};\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2413
msgid ""
"If the systems are running FreeBSD 10 or higher, replace [.filename]#carp0# "
"with the name of the CARP-configured interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2416
msgid ""
"Restart man:devd[8] on both nodes to put the new configuration into effect:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2420
#, no-wrap
msgid "# service devd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2424
msgid ""
"When the specified interface state changes by going up or down , the system "
"generates a notification, allowing the man:devd[8] subsystem to run the "
"specified automatic failover script, [.filename]#/usr/local/sbin/carp-hast-"
"switch#. For further clarification about this configuration, refer to man:"
"devd.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2426
msgid "Here is an example of an automated failover script:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2430
#, no-wrap
msgid "#!/bin/sh\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2434
#, no-wrap
msgid ""
"# Original script by Freddie Cash <fjwcash@gmail.com>\n"
"# Modified by Michael W. Lucas <mwlucas@BlackHelicopters.org>\n"
"# and Viktor Petersson <vpetersson@wireload.net>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2437
#, no-wrap
msgid ""
"# The names of the HAST resources, as listed in /etc/hast.conf\n"
"resources=\"test\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2441
#, no-wrap
msgid ""
"# delay in mounting HAST resource after becoming primary\n"
"# make your best guess\n"
"delay=3\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2445
#, no-wrap
msgid ""
"# logging\n"
"log=\"local0.debug\"\n"
"name=\"carp-hast\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2447
#, no-wrap
msgid "# end of user configurable stuff\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2452
#, no-wrap
msgid ""
"case \"$1\" in\n"
"\tprimary)\n"
"\t\tlogger -p $log -t $name \"Switching to primary provider for ${resources}.\"\n"
"\t\tsleep ${delay}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2458
#, no-wrap
msgid ""
"\t\t# Wait for any \"hastd secondary\" processes to stop\n"
"\t\tfor disk in ${resources}; do\n"
"\t\t\twhile $( pgrep -lf \"hastd: ${disk} \\(secondary\\)\" > /dev/null 2>&1 ); do\n"
"\t\t\t\tsleep 1\n"
"\t\t\tdone\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2466
#, no-wrap
msgid ""
"\t\t\t# Switch role for each disk\n"
"\t\t\thastctl role primary ${disk}\n"
"\t\t\tif [ $? -ne 0 ]; then\n"
"\t\t\t\tlogger -p $log -t $name \"Unable to change role to primary for resource ${disk}.\"\n"
"\t\t\t\texit 1\n"
"\t\t\tfi\n"
"\t\tdone\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2473
#, no-wrap
msgid ""
"\t\t# Wait for the /dev/hast/* devices to appear\n"
"\t\tfor disk in ${resources}; do\n"
"\t\t\tfor I in $( jot 60 ); do\n"
"\t\t\t\t[ -c \"/dev/hast/${disk}\" ] && break\n"
"\t\t\t\tsleep 0.5\n"
"\t\t\tdone\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2479
#, no-wrap
msgid ""
"\t\t\tif [ ! -c \"/dev/hast/${disk}\" ]; then\n"
"\t\t\t\tlogger -p $log -t $name \"GEOM provider /dev/hast/${disk} did not appear.\"\n"
"\t\t\t\texit 1\n"
"\t\t\tfi\n"
"\t\tdone\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2481
#, no-wrap
msgid "\t\tlogger -p $log -t $name \"Role for HAST resources ${resources} switched to primary.\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2488
#, no-wrap
msgid ""
"\t\tlogger -p $log -t $name \"Mounting disks.\"\n"
"\t\tfor disk in ${resources}; do\n"
"\t\t\tmkdir -p /hast/${disk}\n"
"\t\t\tfsck -p -y -t ufs /dev/hast/${disk}\n"
"\t\t\tmount /dev/hast/${disk} /hast/${disk}\n"
"\t\tdone\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2490
#, no-wrap
msgid "\t;;\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2493
#, no-wrap
msgid ""
"\tsecondary)\n"
"\t\tlogger -p $log -t $name \"Switching to secondary provider for ${resources}.\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2511
#, no-wrap
msgid ""
"\t\t# Switch roles for the HAST resources\n"
"\t\tfor disk in ${resources}; do\n"
"\t\t\tif ! mount | grep -q \"^/dev/hast/${disk} on \"\n"
"\t\t\tthen\n"
"\t\t\telse\n"
"\t\t\t\tumount -f /hast/${disk}\n"
"\t\t\tfi\n"
"\t\t\tsleep $delay\n"
"\t\t\thastctl role secondary ${disk} 2>&1\n"
"\t\t\tif [ $? -ne 0 ]; then\n"
"\t\t\t\tlogger -p $log -t $name \"Unable to switch role to secondary for resource ${disk}.\"\n"
"\t\t\t\texit 1\n"
"\t\t\tfi\n"
"\t\t\tlogger -p $log -t $name \"Role switched to secondary for resource ${disk}.\"\n"
"\t\tdone\n"
"\t;;\n"
"esac\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2514
msgid ""
"In a nutshell, the script takes these actions when a node becomes primary:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2516
msgid "Promotes the HAST pool to primary on the other node."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2517
msgid "Checks the file system under the HAST pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2518
msgid "Mounts the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2520
msgid "When a node becomes secondary:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2522
msgid "Unmounts the HAST pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2523
msgid "Degrades the HAST pool to secondary."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2528
msgid ""
"This is just an example script which serves as a proof of concept. It does "
"not handle all the possible scenarios and can be extended or altered in any "
"way, for example, to start or stop required services."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2534
msgid ""
"For this example, a standard UFS file system was used. To reduce the time "
"needed for recovery, a journal-enabled UFS or ZFS file system can be used "
"instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2537
msgid ""
"More detailed information with additional examples can be found at http://"
"wiki.FreeBSD.org/HAST[http://wiki.FreeBSD.org/HAST]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/disks/_index.adoc:2538
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2543
msgid ""
"HAST should generally work without issues. However, as with any other "
"software product, there may be times when it does not work as supposed. The "
"sources of the problems may be different, but the rule of thumb is to ensure "
"that the time is synchronized between the nodes of the cluster."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2547
msgid ""
"When troubleshooting HAST, the debugging level of man:hastd[8] should be "
"increased by starting `hastd` with `-d`. This argument may be specified "
"multiple times to further increase the debugging level. Consider also using "
"`-F`, which starts `hastd` in the foreground."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/disks/_index.adoc:2549
#, no-wrap
msgid "Recovering from the Split-brain Condition"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2554
msgid ""
"_Split-brain_ occurs when the nodes of the cluster are unable to communicate "
"with each other, and both are configured as primary. This is a dangerous "
"condition because it allows both nodes to make incompatible changes to the "
"data. This problem must be corrected manually by the system administrator."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/disks/_index.adoc:2558
msgid ""
"The administrator must either decide which node has more important changes, "
"or perform the merge manually. Then, let HAST perform full synchronization "
"of the node which has the broken data. To do this, issue these commands on "
"the node which needs to be resynchronized:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/disks/_index.adoc:2564
#, no-wrap
msgid ""
"# hastctl role init test\n"
"# hastctl create test\n"
"# hastctl role secondary test\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/dtrace/_index.po b/documentation/content/en/books/handbook/dtrace/_index.po
index 108d8d813b..c3041a1e7d 100644
--- a/documentation/content/en/books/handbook/dtrace/_index.po
+++ b/documentation/content/en/books/handbook/dtrace/_index.po
@@ -1,477 +1,477 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/dtrace/_index.adoc:1
#, no-wrap
msgid "This chapter explains how to use DTrace in FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/dtrace/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/dtrace/_index.adoc:1
#, no-wrap
-msgid "Chapter 25. DTrace"
+msgid "Chapter 26. DTrace"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/dtrace/_index.adoc:15
#, no-wrap
msgid "DTrace"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/dtrace/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:57
msgid ""
"DTrace, also known as Dynamic Tracing, was developed by Sun(TM) as a tool "
"for locating performance bottlenecks in production and pre-production "
"systems. In addition to diagnosing performance problems, DTrace can be used "
"to help investigate and debug unexpected behavior in both the FreeBSD kernel "
"and in userland programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:61
msgid ""
"DTrace is a remarkable profiling tool, with an impressive array of features "
"for diagnosing system issues. It may also be used to run pre-written "
"scripts to take advantage of its capabilities. Users can author their own "
"utilities using the DTrace D Language, allowing them to customize their "
"profiling based on specific needs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:65
msgid ""
"The FreeBSD implementation provides full support for kernel DTrace and "
"experimental support for userland DTrace. Userland DTrace allows users to "
"perform function boundary tracing for userland programs using the `pid` "
"provider, and to insert static probes into userland programs for later "
"tracing. Some ports, such as package:databases/postgresql12-server[] and "
"package:lang/php74[] have a DTrace option to enable static probes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:67
msgid ""
"The official guide to DTrace is maintained by the Illumos project at http://"
"dtrace.org/guide[DTrace Guide]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:69
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:71
msgid "What DTrace is and what features it provides."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:72
msgid ""
"Differences between the Solaris(TM) DTrace implementation and the one "
"provided by FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:73
msgid "How to enable and use DTrace on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:75
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:77
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:78
msgid ""
"Have some familiarity with security and how it pertains to FreeBSD (crossref:"
"security[security,Security])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/dtrace/_index.adoc:80
#, no-wrap
msgid "Implementation Differences"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:85
msgid ""
"While the DTrace in FreeBSD is similar to that found in Solaris(TM), "
"differences do exist. The primary difference is that in FreeBSD, DTrace is "
"implemented as a set of kernel modules and DTrace can not be used until the "
"modules are loaded. To load all of the necessary modules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:89
#, no-wrap
msgid "# kldload dtraceall\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:92
msgid ""
"Beginning with FreeBSD 10.0-RELEASE, the modules are automatically loaded "
"when `dtrace` is run."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:97
msgid ""
"FreeBSD uses the `DDB_CTF` kernel option to enable support for loading `CTF` "
"data from kernel modules and the kernel itself. `CTF` is the Solaris(TM) "
"Compact C Type Format which encapsulates a reduced form of debugging "
"information similar to `DWARF` and the venerable stabs. `CTF` data is added "
"to binaries by the `ctfconvert` and `ctfmerge` build tools. The "
"`ctfconvert` utility parses `DWARF``ELF` debug sections created by the "
"compiler and `ctfmerge` merges `CTF``ELF` sections from objects into either "
"executables or shared libraries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:104
msgid ""
"Some different providers exist for FreeBSD than for Solaris(TM). Most "
"notable is the `dtmalloc` provider, which allows tracing `malloc()` by type "
"in the FreeBSD kernel. Some of the providers found in Solaris(TM), such as "
"`cpc` and `mib`, are not present in FreeBSD. These may appear in future "
"versions of FreeBSD. Moreover, some of the providers available in both "
"operating systems are not compatible, in the sense that their probes have "
"different argument types. Thus, `D` scripts written on Solaris(TM) may or "
"may not work unmodified on FreeBSD, and vice versa."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:108
msgid ""
"Due to security differences, only `root` may use DTrace on FreeBSD. "
"Solaris(TM) has a few low level security checks which do not yet exist in "
"FreeBSD. As such, the [.filename]#/dev/dtrace/dtrace# is strictly limited "
"to `root`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:112
msgid ""
"DTrace falls under the Common Development and Distribution License (`CDDL`) "
"license. To view this license on FreeBSD, see [.filename]#/usr/src/cddl/"
"contrib/opensolaris/OPENSOLARIS.LICENSE# or view it online at http://"
"opensource.org/licenses/CDDL-1.0[http://opensource.org/licenses/CDDL-1.0]. "
"While a FreeBSD kernel with DTrace support is `BSD` licensed, the `CDDL` is "
"used when the modules are distributed in binary form or the binaries are "
"loaded."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/dtrace/_index.adoc:114
#, no-wrap
msgid "Enabling DTrace Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:118
msgid ""
"In FreeBSD 9.2 and 10.0, DTrace support is built into the [."
"filename]#GENERIC# kernel. Users of earlier versions of FreeBSD or who "
"prefer to statically compile in DTrace support should add the following "
"lines to a custom kernel configuration file and recompile the kernel using "
"the instructions in crossref:kernelconfig[kernelconfig,Configuring the "
"FreeBSD Kernel]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:125
#, no-wrap
msgid ""
"options KDTRACE_HOOKS\n"
"options DDB_CTF\n"
"makeoptions\tDEBUG=-g\n"
"makeoptions\tWITH_CTF=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:128
msgid "Users of the AMD64 architecture should also add this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:132
#, no-wrap
msgid "options KDTRACE_FRAME\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:136
msgid ""
"This option provides support for `FBT`. While DTrace will work without this "
"option, there will be limited support for function boundary tracing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:140
msgid ""
"Once the FreeBSD system has rebooted into the new kernel, or the DTrace "
"kernel modules have been loaded using `kldload dtraceall`, the system will "
"need support for the Korn shell as the DTrace Toolkit has several utilities "
"written in `ksh`. Make sure that the package:shells/ksh93[] package or port "
"is installed. It is also possible to run these tools under package:shells/"
"pdksh[] or package:shells/mksh[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:145
msgid ""
"Finally, install the current DTrace Toolkit, a collection of ready-made "
"scripts for collecting system information. There are scripts to check open "
"files, memory, `CPU` usage, and a lot more. FreeBSD 10 installs a few of "
"these scripts into [.filename]#/usr/share/dtrace#. On other FreeBSD "
"versions, or to install the full DTrace Toolkit, use the package:sysutils/"
"dtrace-toolkit[] package or port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:150
msgid ""
"The scripts found in [.filename]#/usr/share/dtrace# have been specifically "
"ported to FreeBSD. Not all of the scripts found in the DTrace Toolkit will "
"work as-is on FreeBSD and some scripts may require some effort in order for "
"them to work on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:156
msgid ""
"The DTrace Toolkit includes many scripts in the special language of DTrace. "
"This language is called the D language and it is very similar to C++. An in "
"depth discussion of the language is beyond the scope of this document. It "
"is covered extensively in the http://www.dtrace.org/guide[Illumos Dynamic "
"Tracing Guide]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/dtrace/_index.adoc:158
#, no-wrap
msgid "Using DTrace"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:165
msgid ""
"DTrace scripts consist of a list of one or more _probes_, or instrumentation "
"points, where each probe is associated with an action. Whenever the "
"condition for a probe is met, the associated action is executed. For "
"example, an action may occur when a file is opened, a process is started, or "
"a line of code is executed. The action might be to log some information or "
"to modify context variables. The reading and writing of context variables "
"allows probes to share information and to cooperatively analyze the "
"correlation of different events."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:167
msgid ""
"To view all probes, the administrator can execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:171
#, no-wrap
msgid "# dtrace -l | more\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:175
msgid ""
"Each probe has an `ID`, a `PROVIDER` (dtrace or fbt), a `MODULE`, and a "
"`FUNCTION NAME`. Refer to man:dtrace[1] for more information about this "
"command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:177
msgid ""
"The examples in this section provide an overview of how to use two of the "
"fully supported scripts from the DTrace Toolkit: the [.filename]#hotkernel# "
"and [.filename]#procsystime# scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:180
msgid ""
"The [.filename]#hotkernel# script is designed to identify which function is "
"using the most kernel time. It will produce output similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:186
#, no-wrap
msgid ""
"# cd /usr/local/share/dtrace-toolkit\n"
"# ./hotkernel\n"
"Sampling... Hit Ctrl-C to end.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:190
msgid ""
"As instructed, use the kbd:[Ctrl+C] key combination to stop the process. "
"Upon termination, the script will display a list of kernel functions and "
"timing information, sorting the output in increasing order of time:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:219
#, no-wrap
msgid ""
"kernel`_thread_lock_flags 2 0.0%\n"
"0xc1097063 2 0.0%\n"
"kernel`sched_userret 2 0.0%\n"
"kernel`kern_select 2 0.0%\n"
"kernel`generic_copyin 3 0.0%\n"
"kernel`_mtx_assert 3 0.0%\n"
"kernel`vm_fault 3 0.0%\n"
"kernel`sopoll_generic 3 0.0%\n"
"kernel`fixup_filename 4 0.0%\n"
"kernel`_isitmyx 4 0.0%\n"
"kernel`find_instance 4 0.0%\n"
"kernel`_mtx_unlock_flags 5 0.0%\n"
"kernel`syscall 5 0.0%\n"
"kernel`DELAY 5 0.0%\n"
"0xc108a253 6 0.0%\n"
"kernel`witness_lock 7 0.0%\n"
"kernel`read_aux_data_no_wait 7 0.0%\n"
"kernel`Xint0x80_syscall 7 0.0%\n"
"kernel`witness_checkorder 7 0.0%\n"
"kernel`sse2_pagezero 8 0.0%\n"
"kernel`strncmp 9 0.0%\n"
"kernel`spinlock_exit 10 0.0%\n"
"kernel`_mtx_lock_flags 11 0.0%\n"
"kernel`witness_unlock 15 0.0%\n"
"kernel`sched_idletd 137 0.3%\n"
"0xc10981a5 42139 99.3%\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:223
msgid ""
"This script will also work with kernel modules. To use this feature, run "
"the script with `-m`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:242
#, no-wrap
msgid ""
"# ./hotkernel -m\n"
"Sampling... Hit Ctrl-C to end.\n"
"^C\n"
"MODULE COUNT PCNT\n"
"0xc107882e 1 0.0%\n"
"0xc10e6aa4 1 0.0%\n"
"0xc1076983 1 0.0%\n"
"0xc109708a 1 0.0%\n"
"0xc1075a5d 1 0.0%\n"
"0xc1077325 1 0.0%\n"
"0xc108a245 1 0.0%\n"
"0xc107730d 1 0.0%\n"
"0xc1097063 2 0.0%\n"
"0xc108a253 73 0.0%\n"
"kernel 874 0.4%\n"
"0xc10981a5 213781 99.6%\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:248
msgid ""
"The [.filename]#procsystime# script captures and prints the system call time "
"usage for a given process `ID` (`PID`) or process name. In the following "
"example, a new instance of [.filename]#/bin/csh# was spawned. Then, [."
"filename]#procsystime# was executed and remained waiting while a few "
"commands were typed on the other incarnation of `csh`. These are the "
"results of this test:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:254
#, no-wrap
msgid ""
"# ./procsystime -n csh\n"
"Tracing... Hit Ctrl-C to end...\n"
"^C\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:256
#, no-wrap
msgid "Elapsed Times for processes csh,\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/dtrace/_index.adoc:276
#, no-wrap
msgid ""
" SYSCALL TIME (ns)\n"
" getpid 6131\n"
" sigreturn 8121\n"
" close 19127\n"
" fcntl 19959\n"
" dup 26955\n"
" setpgid 28070\n"
" stat 31899\n"
" setitimer 40938\n"
" wait4 62717\n"
" sigaction 67372\n"
" sigprocmask 119091\n"
" gettimeofday 183710\n"
" write 263242\n"
" execve 492547\n"
" ioctl 770073\n"
" vfork 3258923\n"
" sigsuspend 6985124\n"
" read 3988049784\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/dtrace/_index.adoc:278
msgid ""
"As shown, the `read()` system call used the most time in nanoseconds while "
"the `getpid()` system call used the least amount of time."
msgstr ""
diff --git a/documentation/content/en/books/handbook/filesystems/_index.po b/documentation/content/en/books/handbook/filesystems/_index.po
index 9870e954ce..c908fd5b6b 100644
--- a/documentation/content/en/books/handbook/filesystems/_index.po
+++ b/documentation/content/en/books/handbook/filesystems/_index.po
@@ -1,175 +1,175 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/filesystems/_index.adoc:1
#, no-wrap
msgid "This chapter shows the other filesystems supported by FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/filesystems/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/filesystems/_index.adoc:1
#, no-wrap
-msgid "Chapter 21. Other File Systems"
+msgid "Chapter 22. Other File Systems"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/filesystems/_index.adoc:15
#, no-wrap
msgid "Other File Systems"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/filesystems/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:61
msgid ""
"File systems are an integral part of any operating system. They allow users "
"to upload and store files, provide access to data, and make hard drives "
"useful. Different operating systems differ in their native file system. "
"Traditionally, the native FreeBSD file system has been the Unix File System "
"UFS which has been modernized as UFS2. Since FreeBSD 7.0, the Z File System "
"(ZFS) is also available as a native file system. See crossref:zfs[zfs,The Z "
"File System (ZFS)] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:64
msgid ""
"In addition to its native file systems, FreeBSD supports a multitude of "
"other file systems so that data from other operating systems can be accessed "
"locally, such as data stored on locally attached USB storage devices, flash "
"drives, and hard disks. This includes support for the Linux(R) Extended "
"File System (EXT)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:68
msgid ""
"There are different levels of FreeBSD support for the various file systems. "
"Some require a kernel module to be loaded and others may require a toolset "
"to be installed. Some non-native file system support is full read-write "
"while others are read-only."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:70
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:72
msgid "The difference between native and supported file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:73
msgid "Which file systems are supported by FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:74
msgid ""
"How to enable, configure, access, and make use of non-native file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:76
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:78
msgid "Understand UNIX(R) and crossref:basics[basics,FreeBSD basics]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:79
msgid ""
"Be familiar with the basics of crossref:kernelconfig[kernelconfig,kernel "
"configuration and compilation]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:80
msgid "Feel comfortable crossref:ports[ports,installing software] in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:81
msgid ""
"Have some familiarity with crossref:disks[disks,disks], storage, and device "
"names in FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/filesystems/_index.adoc:83
#, no-wrap
msgid "Linux(R) File Systems"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:87
msgid ""
"FreeBSD provides built-in support for several Linux(R) file systems. This "
"section demonstrates how to load support for and how to mount the supported "
"Linux(R) file systems."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/filesystems/_index.adoc:88
#, no-wrap
msgid "ext2 / ext3 / ext4"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:92
msgid ""
"Kernel support for ext2 file systems has been available since FreeBSD 2.2. "
"The man:ext2fs[5] driver allows the FreeBSD kernel to both read and write to "
"ext2, ext3, and ext4 file systems."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/filesystems/_index.adoc:96
msgid "Journalling and encryption are not supported yet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/filesystems/_index.adoc:100
msgid ""
"To access an ext file system, mount the ext volume by specifying its FreeBSD "
"partition name and an existing mount point. This example mounts [."
"filename]#/dev/ad1s1# on [.filename]#/mnt#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/filesystems/_index.adoc:104
#, no-wrap
msgid "# mount -t ext2fs /dev/ad1s1 /mnt\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/firewalls/_index.po b/documentation/content/en/books/handbook/firewalls/_index.po
index a71ae2ea3d..a0ab8d8b3e 100644
--- a/documentation/content/en/books/handbook/firewalls/_index.po
+++ b/documentation/content/en/books/handbook/firewalls/_index.po
@@ -1,5621 +1,5621 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1
#, no-wrap
msgid "FreeBSD has three firewalls built into the base system: PF, IPFW, and IPFILTER. This chapter covers how to define packet filtering rules, the differences between the firewalls built into FreeBSD and how to use them"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1
#, no-wrap
-msgid "Chapter 31. Firewalls"
+msgid "Chapter 32. Firewalls"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/firewalls/_index.adoc:15
#, no-wrap
msgid "Firewalls"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:58
msgid ""
"Firewalls make it possible to filter the incoming and outgoing traffic that "
"flows through a system. A firewall can use one or more sets of \"rules\" to "
"inspect network packets as they come in or go out of network connections and "
"either allows the traffic through or blocks it. The rules of a firewall can "
"inspect one or more characteristics of the packets such as the protocol "
"type, source or destination host address, and source or destination port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:61
msgid ""
"Firewalls can enhance the security of a host or a network. They can be used "
"to do one or more of the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:63
msgid ""
"Protect and insulate the applications, services, and machines of an internal "
"network from unwanted traffic from the public Internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:64
msgid ""
"Limit or disable access from hosts of the internal network to services of "
"the public Internet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:65
msgid ""
"Support network address translation (NAT), which allows an internal network "
"to use private IP addresses and share a single connection to the public "
"Internet using either a single IP address or a shared pool of automatically "
"assigned public addresses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:70
msgid ""
"FreeBSD has three firewalls built into the base system: PF, IPFW, and "
"IPFILTER, also known as IPF. FreeBSD also provides two traffic shapers for "
"controlling bandwidth usage: man:altq[4] and man:dummynet[4]. ALTQ has "
"traditionally been closely tied with PF and dummynet with IPFW. Each "
"firewall uses rules to control the access of packets to and from a FreeBSD "
"system, although they go about it in different ways and each has a different "
"rule syntax."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:73
msgid ""
"FreeBSD provides multiple firewalls in order to meet the different "
"requirements and preferences for a wide variety of users. Each user should "
"evaluate which firewall best meets their needs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:75
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:77
msgid "How to define packet filtering rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:78
msgid "The differences between the firewalls built into FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:79
msgid "How to use and configure the PF firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:80
msgid "How to use and configure the IPFW firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:81
msgid "How to use and configure the IPFILTER firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:83
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:85
msgid "Understand basic FreeBSD and Internet concepts."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:90
msgid ""
"Since all firewalls are based on inspecting the values of selected packet "
"control fields, the creator of the firewall ruleset must have an "
"understanding of how TCP/IP works, what the different values in the packet "
"control fields are, and how these values are used in a normal session "
"conversation. For a good introduction, refer to http://www.ipprimer."
"com[Daryl's TCP/IP Primer]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:93
#, no-wrap
msgid "Firewall Concepts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:101
msgid ""
"A ruleset contains a group of rules which pass or block packets based on the "
"values contained in the packet. The bi-directional exchange of packets "
"between hosts comprises a session conversation. The firewall ruleset "
"processes both the packets arriving from the public Internet, as well as the "
"packets produced by the system as a response to them. Each TCP/IP service "
"is predefined by its protocol and listening port. Packets destined for a "
"specific service originate from the source address using an unprivileged "
"port and target the specific service port on the destination address. All "
"the above parameters can be used as selection criteria to create rules which "
"will pass or block services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:104
msgid ""
"To lookup unknown port numbers, refer to [.filename]#/etc/services#. "
"Alternatively, visit http://en.wikipedia.org/wiki/"
"List_of_TCP_and_UDP_port_numbers[http://en.wikipedia.org/wiki/"
"List_of_TCP_and_UDP_port_numbers] and do a port number lookup to find the "
"purpose of a particular port number."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:106
msgid ""
"Check out this link for http://web.archive.org/web/20150803024617/http://www."
"sans.org/security-resources/idfaq/oddports.php[port numbers used by Trojans]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:111
msgid ""
"FTP has two modes: active mode and passive mode. The difference is in how "
"the data channel is acquired. Passive mode is more secure as the data "
"channel is acquired by the ordinal ftp session requester. For a good "
"explanation of FTP and the different modes, see http://www.slacksite.com/"
"other/ftp.html[http://www.slacksite.com/other/ftp.html]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:115
msgid ""
"A firewall ruleset can be either \"exclusive\" or \"inclusive\". An "
"exclusive firewall allows all traffic through except for the traffic "
"matching the ruleset. An inclusive firewall does the reverse as it only "
"allows traffic matching the rules through and blocks everything else."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:120
msgid ""
"An inclusive firewall offers better control of the outgoing traffic, making "
"it a better choice for systems that offer services to the public Internet. "
"It also controls the type of traffic originating from the public Internet "
"that can gain access to a private network. All traffic that does not match "
"the rules is blocked and logged. Inclusive firewalls are generally safer "
"than exclusive firewalls because they significantly reduce the risk of "
"allowing unwanted traffic."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:124
msgid ""
"Unless noted otherwise, all configuration and example rulesets in this "
"chapter create inclusive firewall rulesets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:128
msgid ""
"Security can be tightened further using a \"stateful firewall\". This type "
"of firewall keeps track of open connections and only allows traffic which "
"either matches an existing connection or opens a new, allowed connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:133
msgid ""
"Stateful filtering treats traffic as a bi-directional exchange of packets "
"comprising a session. When state is specified on a matching rule the "
"firewall dynamically generates internal rules for each anticipated packet "
"being exchanged during the session. It has sufficient matching capabilities "
"to determine if a packet is valid for a session. Any packets that do not "
"properly fit the session template are automatically rejected."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:135
msgid "When the session completes, it is removed from the dynamic state table."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:140
msgid ""
"Stateful filtering allows one to focus on blocking/passing new sessions. If "
"the new session is passed, all its subsequent packets are allowed "
"automatically and any impostor packets are automatically rejected. If a new "
"session is blocked, none of its subsequent packets are allowed. Stateful "
"filtering provides advanced matching abilities capable of defending against "
"the flood of different attack methods employed by attackers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:144
msgid ""
"NAT stands for _Network Address Translation_. NAT function enables the "
"private LAN behind the firewall to share a single ISP-assigned IP address, "
"even if that address is dynamically assigned. NAT allows each computer in "
"the LAN to have Internet access, without having to pay the ISP for multiple "
"Internet accounts or IP addresses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:147
msgid ""
"NAT will automatically translate the private LAN IP address for each system "
"on the LAN to the single public IP address as packets exit the firewall "
"bound for the public Internet. It also performs the reverse translation for "
"returning packets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:149
msgid ""
"According to RFC 1918, the following IP address ranges are reserved for "
"private networks which will never be routed directly to the public Internet, "
"and therefore are available for use with NAT:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:151
msgid "`10.0.0.0/8`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:152
msgid "`172.16.0.0/12`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:153
msgid "`192.168.0.0/16`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:159
msgid ""
"When working with the firewall rules, be _very careful_. Some "
"configurations _can lock the administrator out_ of the server. To be on the "
"safe side, consider performing the initial firewall configuration from the "
"local console rather than doing it remotely over ssh."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:162
#, no-wrap
msgid "PF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:166
msgid ""
"Since FreeBSD 5.3, a ported version of OpenBSD's PF firewall has been "
"included as an integrated part of the base system. PF is a complete, full-"
"featured firewall that has optional support for ALTQ (Alternate Queuing), "
"which provides Quality of Service (QoS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:169
msgid ""
"The OpenBSD Project maintains the definitive reference for PF in the http://"
"www.openbsd.org/faq/pf/[PF FAQ]. Peter Hansteen maintains a thorough PF "
"tutorial at http://home.nuug.no/\\~peter/pf/[http://home.nuug.no/~peter/pf/]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:174
msgid ""
"When reading the http://www.openbsd.org/faq/pf/[PF FAQ], keep in mind that "
"FreeBSD's version of PF has diverged substantially from the upstream OpenBSD "
"version over the years. Not all features work the same way on FreeBSD as "
"they do in OpenBSD and vice versa."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:178
msgid ""
"The {freebsd-pf} is a good place to ask questions about configuring and "
"running the PF firewall. Check the mailing list archives before asking a "
"question as it may have already been answered."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:182
msgid ""
"This section of the Handbook focuses on PF as it pertains to FreeBSD. It "
"demonstrates how to enable PF and ALTQ. It also provides several examples "
"for creating rulesets on a FreeBSD system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:183
#, no-wrap
msgid "Enabling PF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:187
msgid ""
"To use PF, its kernel module must be first loaded. This section describes "
"the entries that can be added to [.filename]#/etc/rc.conf# to enable PF."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:189
msgid "Start by adding `pf_enable=yes` to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:193
#, no-wrap
msgid "# sysrc pf_enable=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:197
msgid ""
"Additional options, described in man:pfctl[8], can be passed to PF when it "
"is started. Add or change this entry in [.filename]#/etc/rc.conf# and "
"specify any required flags between the two quotes (`\"\"`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:201
#, no-wrap
msgid "pf_flags=\"\" # additional flags for pfctl startup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:207
msgid ""
"PF will not start if it cannot find its ruleset configuration file. By "
"default, FreeBSD does not ship with a ruleset and there is no [.filename]#/"
"etc/pf.conf#. Example rulesets can be found in [.filename]#/usr/share/"
"examples/pf/#. If a custom ruleset has been saved somewhere else, add a "
"line to [.filename]#/etc/rc.conf# which specifies the full path to the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:211
#, no-wrap
msgid "pf_rules=\"/path/to/pf.conf\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:215
msgid ""
"Logging support for PF is provided by man:pflog[4]. To enable logging "
"support, add `pflog_enable=yes` to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:219
#, no-wrap
msgid "# sysrc pflog_enable=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:222
msgid ""
"The following lines can also be added to change the default location of the "
"log file or to specify any additional flags to pass to man:pflog[4] when it "
"is started:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:227
#, no-wrap
msgid ""
"pflog_logfile=\"/var/log/pflog\" # where pflogd should store the logfile\n"
"pflog_flags=\"\" # additional flags for pflogd startup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:230
msgid ""
"Finally, if there is a LAN behind the firewall and packets need to be "
"forwarded for the computers on the LAN, or NAT is required, enable the "
"following option:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:234
#, no-wrap
msgid "gateway_enable=\"YES\" # Enable as LAN gateway\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:237
msgid ""
"After saving the needed edits, PF can be started with logging support by "
"typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:242
#, no-wrap
msgid ""
"# service pf start\n"
"# service pflog start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:247
msgid ""
"By default, PF reads its configuration rules from [.filename]#/etc/pf.conf# "
"and modifies, drops, or passes packets according to the rules or definitions "
"specified in this file. The FreeBSD installation includes several sample "
"files located in [.filename]#/usr/share/examples/pf/#. Refer to the http://"
"www.openbsd.org/faq/pf/[PF FAQ] for complete coverage of PF rulesets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:251
msgid ""
"To control PF, use `pfctl`. <<pfctl>> summarizes some useful options to "
"this command. Refer to man:pfctl[8] for a description of all available "
"options:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/firewalls/_index.adoc:252
#, no-wrap
msgid "Useful `pfctl` Options"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:256
#, no-wrap
msgid "Command"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:258
#, no-wrap
msgid "Purpose"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:259
#, no-wrap
msgid "`pfctl -e`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:261
#, no-wrap
msgid "Enable PF."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:262
#, no-wrap
msgid "`pfctl -d`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:264
#, no-wrap
msgid "Disable PF."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:265
#, no-wrap
msgid "`pfctl -F all -f /etc/pf.conf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:267
#, no-wrap
msgid "Flush all NAT, filter, state, and table rules and reload [.filename]#/etc/pf.conf#."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:267
#, no-wrap
msgid "`pfctl -s [ rules \\"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:267
#, no-wrap
msgid "nat \\"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:268
#, no-wrap
msgid "states ]`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:270
#, no-wrap
msgid "Report on the filter rules, NAT rules, or state table."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:271
#, no-wrap
msgid "`pfctl -vnf /etc/pf.conf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/firewalls/_index.adoc:272
#, no-wrap
msgid "Check [.filename]#/etc/pf.conf# for errors, but do not load ruleset."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:278
msgid ""
"package:security/sudo[] is useful for running commands like `pfctl` that "
"require elevated privileges. It can be installed from the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:282
msgid ""
"To keep an eye on the traffic that passes through the PF firewall, consider "
"installing the package:sysutils/pftop[] package or port. Once installed, "
"pftop can be run to view a running snapshot of traffic in a format which is "
"similar to man:top[1]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:284
#, no-wrap
msgid "PF Rulesets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:288
msgid ""
"This section demonstrates how to create a customized ruleset. It starts "
"with the simplest of rulesets and builds upon its concepts using several "
"examples to demonstrate real-world usage of PF's many features."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:291
msgid ""
"The simplest possible ruleset is for a single machine that does not run any "
"services and which needs access to one network, which may be the Internet. "
"To create this minimal ruleset, edit [.filename]#/etc/pf.conf# so it looks "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:296
#, no-wrap
msgid ""
"block in all\n"
"pass out all keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:302
msgid ""
"The first rule denies all incoming traffic by default. The second rule "
"allows connections created by this system to pass out, while retaining state "
"information on those connections. This state information allows return "
"traffic for those connections to pass back and should only be used on "
"machines that can be trusted. The ruleset can be loaded with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:306
#, no-wrap
msgid "# pfctl -e ; pfctl -f /etc/pf.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:311
msgid ""
"In addition to keeping state, PF provides _lists_ and _macros_ which can be "
"defined for use when creating rules. Macros can include lists and need to "
"be defined before use. As an example, insert these lines at the very top of "
"the ruleset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:316
#, no-wrap
msgid ""
"tcp_services = \"{ ssh, smtp, domain, www, pop3, auth, pop3s }\"\n"
"udp_services = \"{ domain }\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:323
msgid ""
"PF understands port names as well as port numbers, as long as the names are "
"listed in [.filename]#/etc/services#. This example creates two macros. The "
"first is a list of seven TCP port names and the second is one UDP port "
"name. Once defined, macros can be used in rules. In this example, all "
"traffic is blocked except for the connections initiated by this system for "
"the seven specified TCP services and the one specified UDP service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:331
#, no-wrap
msgid ""
"tcp_services = \"{ ssh, smtp, domain, www, pop3, auth, pop3s }\"\n"
"udp_services = \"{ domain }\"\n"
"block all\n"
"pass out proto tcp to any port $tcp_services keep state\n"
"pass proto udp to any port $udp_services keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:335
msgid ""
"Even though UDP is considered to be a stateless protocol, PF is able to "
"track some state information. For example, when a UDP request is passed "
"which asks a name server about a domain name, PF will watch for the response "
"to pass it back."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:337
msgid ""
"Whenever an edit is made to a ruleset, the new rules must be loaded so they "
"can be used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:341
#: documentation/content/en/books/handbook/firewalls/_index.adoc:559
#, no-wrap
msgid "# pfctl -f /etc/pf.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:345
msgid ""
"If there are no syntax errors, `pfctl` will not output any messages during "
"the rule load. Rules can also be tested before attempting to load them:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:349
#, no-wrap
msgid "# pfctl -nf /etc/pf.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:354
msgid ""
"Including `-n` causes the rules to be interpreted only, but not loaded. "
"This provides an opportunity to correct any errors. At all times, the last "
"valid ruleset loaded will be enforced until either PF is disabled or a new "
"ruleset is loaded."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:359
msgid ""
"Adding `-v` to a `pfctl` ruleset verify or load will display the fully "
"parsed rules exactly the way they will be loaded. This is extremely useful "
"when debugging rules."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:362
#, no-wrap
msgid "A Simple Gateway with NAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:367
msgid ""
"This section demonstrates how to configure a FreeBSD system running PF to "
"act as a gateway for at least one other machine. The gateway needs at least "
"two network interfaces, each connected to a separate network. In this "
"example, [.filename]#xl0# is connected to the Internet and [.filename]#xl1# "
"is connected to the internal network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:370
msgid ""
"First, enable the gateway to let the machine forward the network traffic it "
"receives on one interface to another interface. This sysctl setting will "
"forward IPv4 packets:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:374
#, no-wrap
msgid "# sysctl net.inet.ip.forwarding=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:377
msgid "To forward IPv6 traffic, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:381
#, no-wrap
msgid "# sysctl net.inet6.ip6.forwarding=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:384
msgid ""
"To enable these settings at system boot, use man:sysrc[8] to add them to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:389
#, no-wrap
msgid ""
"# sysrc gateway_enable=yes\n"
"# sysrc ipv6_gateway_enable=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:392
msgid "Verify with `ifconfig` that both of the interfaces are up and running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:395
msgid ""
"Next, create the PF rules to allow the gateway to pass traffic. While the "
"following rule allows stateful traffic from hosts of the internal network to "
"pass to the gateway, the `to` keyword does not guarantee passage all the way "
"from source to destination:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:399
#, no-wrap
msgid "pass in on xl1 from xl1:network to xl0:network port $ports keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:403
msgid ""
"That rule only lets the traffic pass in to the gateway on the internal "
"interface. To let the packets go further, a matching rule is needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:407
#, no-wrap
msgid "pass out on xl0 from xl1:network to xl0:network port $ports keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:413
msgid ""
"While these two rules will work, rules this specific are rarely needed. For "
"a busy network admin, a readable ruleset is a safer ruleset. The remainder "
"of this section demonstrates how to keep the rules as simple as possible for "
"readability. For example, those two rules could be replaced with one rule:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:417
#, no-wrap
msgid "pass from xl1:network to any port $ports keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:422
msgid ""
"The `interface:network` notation can be replaced with a macro to make the "
"ruleset even more readable. For example, a `$localnet` macro could be "
"defined as the network directly attached to the internal interface (`$xl1:"
"network`). Alternatively, the definition of `$localnet` could be changed to "
"an _IP address/netmask_ notation to denote a network, such as "
"`192.168.100.1/24` for a subnet of private addresses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:425
msgid ""
"If required, `$localnet` could even be defined as a list of networks. "
"Whatever the specific needs, a sensible `$localnet` definition could be used "
"in a typical pass rule as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:429
#, no-wrap
msgid "pass from $localnet to any port $ports keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:433
msgid ""
"The following sample ruleset allows all traffic initiated by machines on the "
"internal network. It first defines two macros to represent the external and "
"internal 3COM interfaces of the gateway."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:438
msgid ""
"For dialup users, the external interface will use [.filename]#tun0#. For an "
"ADSL connection, specifically those using PPP over Ethernet (PPPoE), the "
"correct external interface is [.filename]#tun0#, not the physical Ethernet "
"interface."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:449
#, no-wrap
msgid ""
"ext_if = \"xl0\"\t# macro for external interface - use tun0 for PPPoE\n"
"int_if = \"xl1\"\t# macro for internal interface\n"
"localnet = $int_if:network\n"
"# ext_if IP address could be dynamic, hence ($ext_if)\n"
"nat on $ext_if from $localnet to any -> ($ext_if)\n"
"block all\n"
"pass from { lo0, $localnet } to any keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:454
msgid ""
"This ruleset introduces the `nat` rule which is used to handle the network "
"address translation from the non-routable addresses inside the internal "
"network to the IP address assigned to the external interface. The "
"parentheses surrounding the last part of the nat rule `($ext_if)` is "
"included when the IP address of the external interface is dynamically "
"assigned. It ensures that network traffic runs without serious "
"interruptions even if the external IP address changes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:457
msgid ""
"Note that this ruleset probably allows more traffic to pass out of the "
"network than is needed. One reasonable setup could create this macro:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:462
#, no-wrap
msgid ""
"client_out = \"{ ftp-data, ftp, ssh, domain, pop3, auth, nntp, http, \\\n"
" https, cvspserver, 2628, 5999, 8000, 8080 }\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:465
msgid "to use in the main pass rule:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:470
#, no-wrap
msgid ""
"pass inet proto tcp from $localnet to any port $client_out \\\n"
" flags S/SA keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:474
msgid ""
"A few other pass rules may be needed. This one enables SSH on the external "
"interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:478
#, no-wrap
msgid "pass in inet proto tcp to $ext_if port ssh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:481
msgid "This macro definition and rule allows DNS and NTP for internal clients:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:486
#, no-wrap
msgid ""
"udp_services = \"{ domain, ntp }\"\n"
"pass quick inet proto { tcp, udp } to any port $udp_services keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:494
msgid ""
"Note the `quick` keyword in this rule. Since the ruleset consists of "
"several rules, it is important to understand the relationships between the "
"rules in a ruleset. Rules are evaluated from top to bottom, in the sequence "
"they are written. For each packet or connection evaluated by PF, _the last "
"matching rule_ in the ruleset is the one which is applied. However, when a "
"packet matches a rule which contains the `quick` keyword, the rule "
"processing stops and the packet is treated according to that rule. This is "
"very useful when an exception to the general rules is needed."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:496
#, no-wrap
msgid "Creating an FTP Proxy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:501
msgid ""
"Configuring working FTP rules can be problematic due to the nature of the "
"FTP protocol. FTP pre-dates firewalls by several decades and is insecure in "
"its design. The most common points against using FTP include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:503
msgid "Passwords are transferred in the clear."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:504
msgid ""
"The protocol demands the use of at least two TCP connections (control and "
"data) on separate ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:505
msgid ""
"When a session is established, data is communicated using randomly selected "
"ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:508
msgid ""
"All of these points present security challenges, even before considering any "
"potential security weaknesses in client or server software. More secure "
"alternatives for file transfer exist, such as man:sftp[1] or man:scp[1], "
"which both feature authentication and data transfer over encrypted "
"connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:511
msgid ""
"For those situations when FTP is required, PF provides redirection of FTP "
"traffic to a small proxy program called man:ftp-proxy[8], which is included "
"in the base system of FreeBSD. The role of the proxy is to dynamically "
"insert and delete rules in the ruleset, using a set of anchors, to correctly "
"handle FTP traffic."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:513
msgid "To enable the FTP proxy, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:517
#, no-wrap
msgid "ftpproxy_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:520
msgid "Then start the proxy by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:524
#, no-wrap
msgid "# service ftp-proxy start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:528
msgid ""
"For a basic configuration, three elements need to be added to [.filename]#/"
"etc/pf.conf#. First, the anchors which the proxy will use to insert the "
"rules it generates for the FTP sessions:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:533
#, no-wrap
msgid ""
"nat-anchor \"ftp-proxy/*\"\n"
"rdr-anchor \"ftp-proxy/*\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:536
msgid "Second, a pass rule is needed to allow FTP traffic in to the proxy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:539
msgid ""
"Third, redirection and NAT rules need to be defined before the filtering "
"rules. Insert this `rdr` rule immediately after the `nat` rule:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:543
#, no-wrap
msgid "rdr pass on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:546
msgid "Finally, allow the redirected traffic to pass:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:550
#, no-wrap
msgid "pass out proto tcp from $proxy to any port ftp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:553
msgid "where `$proxy` expands to the address the proxy daemon is bound to."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:555
msgid ""
"Save [.filename]#/etc/pf.conf#, load the new rules, and verify from a client "
"that FTP connections are working:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:565
msgid ""
"This example covers a basic setup where the clients in the local network "
"need to contact FTP servers elsewhere. This basic configuration should work "
"well with most combinations of FTP clients and servers. As shown in man:ftp-"
"proxy[8], the proxy's behavior can be changed in various ways by adding "
"options to the `ftpproxy_flags=` line. Some clients or servers may have "
"specific quirks that must be compensated for in the configuration, or there "
"may be a need to integrate the proxy in specific ways such as assigning FTP "
"traffic to a specific queue."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:567
msgid ""
"For ways to run an FTP server protected by PF and man:ftp-proxy[8], "
"configure a separate `ftp-proxy` in reverse mode, using `-R`, on a separate "
"port with its own redirecting pass rule."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:569
#, no-wrap
msgid "Managing ICMP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:572
msgid ""
"Many of the tools used for debugging or troubleshooting a TCP/IP network "
"rely on the Internet Control Message Protocol (ICMP), which was designed "
"specifically with debugging in mind."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:575
msgid ""
"The ICMP protocol sends and receives _control messages_ between hosts and "
"gateways, mainly to provide feedback to a sender about any unusual or "
"difficult conditions enroute to the target host. Routers use ICMP to "
"negotiate packet sizes and other transmission parameters in a process often "
"referred to as _path MTU discovery_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:579
msgid ""
"From a firewall perspective, some ICMP control messages are vulnerable to "
"known attack vectors. Also, letting all diagnostic traffic pass "
"unconditionally makes debugging easier, but it also makes it easier for "
"others to extract information about the network. For these reasons, the "
"following rule may not be optimal:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:583
#, no-wrap
msgid "pass inet proto icmp from any to any\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:586
msgid ""
"One solution is to let all ICMP traffic from the local network through while "
"stopping all probes from outside the network:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:591
#, no-wrap
msgid ""
"pass inet proto icmp from $localnet to any keep state\n"
"pass inet proto icmp from any to $ext_if keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:596
msgid ""
"Additional options are available which demonstrate some of PF's "
"flexibility. For example, rather than allowing all ICMP messages, one can "
"specify the messages used by man:ping[8] and man:traceroute[8]. Start by "
"defining a macro for that type of message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:600
#, no-wrap
msgid "icmp_types = \"echoreq\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:603
msgid "and a rule which uses the macro:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:607
#: documentation/content/en/books/handbook/firewalls/_index.adoc:647
#, no-wrap
msgid "pass inet proto icmp all icmp-type $icmp_types keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:612
msgid ""
"If other types of ICMP packets are needed, expand `icmp_types` to a list of "
"those packet types. Type `more /usr/src/sbin/pfctl/pfctl_parser.c` to see "
"the list of ICMP message types supported by PF. Refer to http://www.iana."
"org/assignments/icmp-parameters/icmp-parameters.xhtml[http://www.iana.org/"
"assignments/icmp-parameters/icmp-parameters.xhtml] for an explanation of "
"each message type."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:614
msgid ""
"Since Unix `traceroute` uses UDP by default, another rule is needed to allow "
"Unix `traceroute`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:619
#, no-wrap
msgid ""
"# allow out the default range for traceroute(8):\n"
"pass out on $ext_if inet proto udp from any to any port 33433 >< 33626 keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:624
msgid ""
"Since `TRACERT.EXE` on Microsoft Windows systems uses ICMP echo request "
"messages, only the first rule is needed to allow network traces from those "
"systems. Unix `traceroute` can be instructed to use other protocols as "
"well, and will use ICMP echo request messages if `-I` is used. Check the "
"man:traceroute[8] man page for details."
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:626
#, no-wrap
msgid "Path MTU Discovery"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:631
msgid ""
"Internet protocols are designed to be device independent, and one "
"consequence of device independence is that the optimal packet size for a "
"given connection cannot always be predicted reliably. The main constraint "
"on packet size is the _Maximum Transmission Unit_ (MTU) which sets the upper "
"limit on the packet size for an interface. Type `ifconfig` to view the MTUs "
"for a system's network interfaces."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:636
msgid ""
"TCP/IP uses a process known as path MTU discovery to determine the right "
"packet size for a connection. This process sends packets of varying sizes "
"with the \"Do not fragment\" flag set, expecting an ICMP return packet of "
"\"type 3, code 4\" when the upper limit has been reached. Type 3 means "
"\"destination unreachable\", and code 4 is short for \"fragmentation needed, "
"but the do-not-fragment flag is set\". To allow path MTU discovery in order "
"to support connections to other MTUs, add the `destination unreachable` type "
"to the `icmp_types` macro:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:640
#, no-wrap
msgid "icmp_types = \"{ echoreq, unreach }\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:643
msgid ""
"Since the pass rule already uses that macro, it does not need to be modified "
"to support the new ICMP type:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:651
msgid ""
"PF allows filtering on all variations of ICMP types and codes. The list of "
"possible types and codes are documented in man:icmp[4] and man:icmp6[4]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:653
#, no-wrap
msgid "Using Tables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:658
msgid ""
"Some types of data are relevant to filtering and redirection at a given "
"time, but their definition is too long to be included in the ruleset file. "
"PF supports the use of tables, which are defined lists that can be "
"manipulated without needing to reload the entire ruleset, and which can "
"provide fast lookups. Table names are always enclosed within `< >`, like "
"this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:662
#, no-wrap
msgid "table <clients> { 192.168.2.0/24, !192.168.2.5 }\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:666
msgid ""
"In this example, the `192.168.2.0/24` network is part of the table, except "
"for the address `192.168.2.5`, which is excluded using the `!` operator. It "
"is also possible to load tables from files where each item is on a separate "
"line, as seen in this example [.filename]#/etc/clients#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:671
#, no-wrap
msgid ""
"192.168.2.0/24\n"
"!192.168.2.5\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:674
msgid "To refer to the file, define the table like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:678
#, no-wrap
msgid "table <clients> persist file \"/etc/clients\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:681
msgid "Once the table is defined, it can be referenced by a rule:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:685
#, no-wrap
msgid "pass inet proto tcp from <clients> to any port $client_out flags S/SA keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:689
msgid ""
"A table's contents can be manipulated live, using `pfctl`. This example "
"adds another network to the table:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:693
#, no-wrap
msgid "# pfctl -t clients -T add 192.168.1.0/16\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:699
msgid ""
"Note that any changes made this way will take affect now, making them ideal "
"for testing, but will not survive a power failure or reboot. To make the "
"changes permanent, modify the definition of the table in the ruleset or edit "
"the file that the table refers to. One can maintain the on-disk copy of the "
"table using a man:cron[8] job which dumps the table's contents to disk at "
"regular intervals, using a command such as `pfctl -t clients -T show >/etc/"
"clients`. Alternatively, [.filename]#/etc/clients# can be updated with the "
"in-memory table contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:703
#, no-wrap
msgid "# pfctl -t clients -T replace -f /etc/clients\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:706
#, no-wrap
msgid "Using Overload Tables to Protect SSH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:709
msgid ""
"Those who run SSH on an external interface have probably seen something like "
"this in the authentication logs:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:718
#, no-wrap
msgid ""
"Sep 26 03:12:34 skapet sshd[25771]: Failed password for root from 200.72.41.31 port 40992 ssh2\n"
"Sep 26 03:12:34 skapet sshd[5279]: Failed password for root from 200.72.41.31 port 40992 ssh2\n"
"Sep 26 03:12:35 skapet sshd[5279]: Received disconnect from 200.72.41.31: 11: Bye Bye\n"
"Sep 26 03:12:44 skapet sshd[29635]: Invalid user admin from 200.72.41.31\n"
"Sep 26 03:12:44 skapet sshd[24703]: input_userauth_request: invalid user admin\n"
"Sep 26 03:12:44 skapet sshd[24703]: Failed password for invalid user admin from 200.72.41.31 port 41484 ssh2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:721
msgid ""
"This is indicative of a brute force attack where somebody or some program is "
"trying to discover the user name and password which will let them into the "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:726
msgid ""
"If external SSH access is needed for legitimate users, changing the default "
"port used by SSH can offer some protection. However, PF provides a more "
"elegant solution. Pass rules can contain limits on what connecting hosts "
"can do and violators can be banished to a table of addresses which are "
"denied some or all access. It is even possible to drop all existing "
"connections from machines which overreach the limits."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:728
msgid ""
"To configure this, create this table in the tables section of the ruleset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:732
#, no-wrap
msgid "table <bruteforce> persist\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:735
msgid ""
"Then, somewhere early in the ruleset, add rules to block brute access while "
"allowing legitimate access:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:743
#, no-wrap
msgid ""
"block quick from <bruteforce>\n"
"pass inet proto tcp from any to $localnet port $tcp_services \\\n"
" flags S/SA keep state \\\n"
" (max-src-conn 100, max-src-conn-rate 15/5, \\\n"
" overload <bruteforce> flush global)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:747
msgid ""
"The part in parentheses defines the limits and the numbers should be changed "
"to meet local requirements. It can be read as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:749
msgid ""
"`max-src-conn` is the number of simultaneous connections allowed from one "
"host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:751
msgid ""
"`max-src-conn-rate` is the rate of new connections allowed from any single "
"host (_15_) per number of seconds (_5_)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:754
msgid ""
"`overload <bruteforce>` means that any host which exceeds these limits gets "
"its address added to the `bruteforce` table. The ruleset blocks all traffic "
"from addresses in the `bruteforce` table."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:756
msgid ""
"Finally, `flush global` says that when a host reaches the limit, that all "
"(`global`) of that host's connections will be terminated (`flush`)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:760
msgid ""
"These rules will _not_ block slow bruteforcers, as described in http://home."
"nuug.no/\\~peter/hailmary2013/[http://home.nuug.no/~peter/hailmary2013/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:764
msgid ""
"This example ruleset is intended mainly as an illustration. For example, if "
"a generous number of connections in general are wanted, but the desire is to "
"be more restrictive when it comes to ssh, supplement the rule above with "
"something like the one below, early on in the rule set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:771
#, no-wrap
msgid ""
"pass quick proto { tcp, udp } from any to any port ssh \\\n"
" flags S/SA keep state \\\n"
" (max-src-conn 15, max-src-conn-rate 5/3, \\\n"
" overload <bruteforce> flush global)\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:776
#, no-wrap
msgid "*It May Not be Necessary to Block All Overloaders:* +\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:778
msgid ""
"It is worth noting that the overload mechanism is a general technique which "
"does not apply exclusively to SSH, and it is not always optimal to entirely "
"block all traffic from offenders."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:780
msgid ""
"For example, an overload rule could be used to protect a mail service or a "
"web service, and the overload table could be used in a rule to assign "
"offenders to a queue with a minimal bandwidth allocation or to redirect to a "
"specific web page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:784
msgid ""
"Over time, tables will be filled by overload rules and their size will grow "
"incrementally, taking up more memory. Sometimes an IP address that is "
"blocked is a dynamically assigned one, which has since been assigned to a "
"host who has a legitimate reason to communicate with hosts in the local "
"network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:787
msgid ""
"For situations like these, pfctl provides the ability to expire table "
"entries. For example, this command will remove `<bruteforce>` table entries "
"which have not been referenced for `86400` seconds:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:791
#, no-wrap
msgid "# pfctl -t bruteforce -T expire 86400\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:794
msgid ""
"Similar functionality is provided by package:security/expiretable[], which "
"removes table entries which have not been accessed for a specified period of "
"time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:797
msgid ""
"Once installed, expiretable can be run to remove `<bruteforce>` table "
"entries older than a specified age. This example removes all entries older "
"than 24 hours:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:801
#, no-wrap
msgid "/usr/local/sbin/expiretable -v -d -t 24h bruteforce\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:804
#, no-wrap
msgid "Protecting Against SPAM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:808
msgid ""
"Not to be confused with the spamd daemon which comes bundled with "
"spamassassin, package:mail/spamd[] can be configured with PF to provide an "
"outer defense against SPAM. This spamd hooks into the PF configuration "
"using a set of redirections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:810
msgid ""
"Spammers tend to send a large number of messages, and SPAM is mainly sent "
"from a few spammer friendly networks and a large number of hijacked "
"machines, both of which are reported to _blocklists_ fairly quickly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:814
msgid ""
"When an SMTP connection from an address in a blocklist is received, spamd "
"presents its banner and immediately switches to a mode where it answers SMTP "
"traffic one byte at a time. This technique, which is intended to waste as "
"much time as possible on the spammer's end, is called _tarpitting_. The "
"specific implementation which uses one byte SMTP replies is often referred "
"to as _stuttering_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:817
msgid ""
"This example demonstrates the basic procedure for setting up spamd with "
"automatically updated blocklists. Refer to the man pages which are "
"installed with package:mail/spamd[] for more information."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/firewalls/_index.adoc:820
#, no-wrap
msgid "Procedure: Configuring spamd"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:822
msgid ""
"Install the package:mail/spamd[] package or port. To use spamd's greylisting "
"features, man:fdescfs[5] must be mounted at [.filename]#/dev/fd#. Add the "
"following line to [.filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:826
#, no-wrap
msgid " fdescfs /dev/fd fdescfs rw 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:829
msgid "Then, mount the filesystem:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:833
#, no-wrap
msgid "# mount fdescfs\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:836
msgid "Next, edit the PF ruleset to include:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:845
#, no-wrap
msgid ""
"table <spamd> persist\n"
"table <spamd-white> persist\n"
"rdr pass on $ext_if inet proto tcp from <spamd> to \\\n"
" { $ext_if, $localnet } port smtp -> 127.0.0.1 port 8025\n"
"rdr pass on $ext_if inet proto tcp from !<spamd-white> to \\\n"
" { $ext_if, $localnet } port smtp -> 127.0.0.1 port 8025\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:849
msgid ""
"The two tables `<spamd>` and `<spamd-white>` are essential. SMTP traffic "
"from an address listed in `<spamd>` but not in `<spamd-white>` is redirected "
"to the spamd daemon listening at port 8025."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:850
msgid ""
"The next step is to configure spamd in [.filename]#/usr/local/etc/spamd."
"conf# and to add some [.filename]#rc.conf# parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:853
msgid ""
"The installation of package:mail/spamd[] includes a sample configuration "
"file ([.filename]#/usr/local/etc/spamd.conf.sample#) and a man page for [."
"filename]#spamd.conf#. Refer to these for additional configuration options "
"beyond those shown in this example."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:855
msgid ""
"One of the first lines in the configuration file that does not begin with a "
-"`#` comment sign contains the block which defines the `all` list, which "
+"`+#+` comment sign contains the block which defines the `all` list, which "
"specifies the lists to use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:860
#, no-wrap
msgid ""
"all:\\\n"
" :traplist:allowlist:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:863
msgid ""
"This entry adds the desired blocklists, separated by colons (`:`). To use "
"an allowlist to subtract addresses from a blocklist, add the name of the "
"allowlist _immediately_ after the name of that blocklist. For example: `:"
"blocklist:allowlist:`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:865
msgid "This is followed by the specified blocklist's definition:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:873
#, no-wrap
msgid ""
"traplist:\\\n"
" :black:\\\n"
" :msg=\"SPAM. Your address %A has sent spam within the last 24 hours\":\\\n"
" :method=http:\\\n"
" :file=www.openbsd.org/spamd/traplist.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:879
msgid ""
"where the first line is the name of the blocklist and the second line "
"specifies the list type. The `msg` field contains the message to display to "
"blocklisted senders during the SMTP dialogue. The `method` field specifies "
"how spamd-setup fetches the list data; supported methods are `http`, `ftp`, "
"from a `file` in a mounted file system, and via `exec` of an external "
"program. Finally, the `file` field specifies the name of the file spamd "
"expects to receive."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:881
msgid ""
"The definition of the specified allowlist is similar, but omits the `msg` "
"field since a message is not needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:888
#, no-wrap
msgid ""
"allowlist:\\\n"
" :white:\\\n"
" :method=file:\\\n"
" :file=/var/mail/allowlist.txt\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:893
#, no-wrap
msgid "*Choose Data Sources with Care:* +\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:896
msgid ""
"Using all the blocklists in the sample [.filename]#spamd.conf# will block "
"large blocks of the Internet. Administrators need to edit the file to "
"create an optimal configuration which uses applicable data sources and, when "
"necessary, uses custom lists."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:900
msgid ""
"Next, add this entry to [.filename]#/etc/rc.conf#. Additional flags are "
"described in the man page specified by the comment:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:904
#, no-wrap
msgid "spamd_flags=\"-v\" # use \"\" and see spamd-setup(8) for flags\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:908
msgid ""
"When finished, reload the ruleset, start spamd by typing `service obspamd "
"start`, and complete the configuration using `spamd-setup`. Finally, create "
"a man:cron[8] job which calls `spamd-setup` to update the tables at "
"reasonable intervals."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:911
msgid ""
"On a typical gateway in front of a mail server, hosts will soon start "
"getting trapped within a few seconds to several minutes."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:915
msgid ""
"PF also supports _greylisting_, which temporarily rejects messages from "
"unknown hosts with _45n_ codes. Messages from greylisted hosts which try "
"again within a reasonable time are let through. Traffic from senders which "
"are set up to behave within the limits set by RFC 1123 and RFC 2821 are "
"immediately let through."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:919
msgid ""
"More information about greylisting as a technique can be found at the http://"
"www.greylisting.org/[greylisting.org] web site. The most amazing thing "
"about greylisting, apart from its simplicity, is that it still works. "
"Spammers and malware writers have been very slow to adapt to bypass this "
"technique."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:921
msgid "The basic procedure for configuring greylisting is as follows:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/firewalls/_index.adoc:923
#, no-wrap
msgid "Procedure: Configuring Greylisting"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:925
msgid ""
"Make sure that man:fdescfs[5] is mounted as described in Step 1 of the "
"previous Procedure."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:926
msgid ""
"To run spamd in greylisting mode, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:930
#, no-wrap
msgid "spamd_grey=\"YES\" # use spamd greylisting if YES\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:933
msgid ""
"Refer to the spamd man page for descriptions of additional related "
"parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:934
msgid "To complete the greylisting setup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:939
#, no-wrap
msgid ""
"# service obspamd restart\n"
"# service obspamlogd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:943
msgid ""
"Behind the scenes, the spamdb database tool and the spamlogd whitelist "
"updater perform essential functions for the greylisting feature. spamdb is "
"the administrator's main interface to managing the block, grey, and allow "
"lists via the contents of the [.filename]#/var/db/spamdb# database."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:945
#, no-wrap
msgid "Network Hygiene"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:948
msgid ""
"This section describes how `block-policy`, `scrub`, and `antispoof` can be "
"used to make the ruleset behave sanely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:952
msgid ""
"The `block-policy` is an option which can be set in the `options` part of "
"the ruleset, which precedes the redirection and filtering rules. This "
"option determines which feedback, if any, PF sends to hosts that are blocked "
"by a rule. The option has two possible values: `drop` drops blocked packets "
"with no feedback, and `return` returns a status code such as `Connection "
"refused`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:955
msgid ""
"If not set, the default policy is `drop`. To change the `block-policy`, "
"specify the desired value:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:959
#, no-wrap
msgid "set block-policy return\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:965
msgid ""
"In PF, `scrub` is a keyword which enables network packet normalization. "
"This process reassembles fragmented packets and drops TCP packets that have "
"invalid flag combinations. Enabling `scrub` provides a measure of "
"protection against certain kinds of attacks based on incorrect handling of "
"packet fragments. A number of options are available, but the simplest form "
"is suitable for most configurations:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:969
#, no-wrap
msgid "scrub in all\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:973
msgid ""
"Some services, such as NFS, require specific fragment handling options. "
"Refer to https://home.nuug.no/\\~peter/pf/en/scrub.html[https://home.nuug.no/"
"~peter/pf/en/scrub.html] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:975
msgid ""
"This example reassembles fragments, clears the \"do not fragment\" bit, and "
"sets the maximum segment size to 1440 bytes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:979
#, no-wrap
msgid "scrub in all fragment reassemble no-df max-mss 1440\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:982
msgid ""
"The `antispoof` mechanism protects against activity from spoofed or forged "
"IP addresses, mainly by blocking packets appearing on interfaces and in "
"directions which are logically not possible."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:984
msgid ""
"These rules weed out spoofed traffic coming in from the rest of the world as "
"well as any spoofed packets which originate in the local network:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:989
#, no-wrap
msgid ""
"antispoof for $ext_if\n"
"antispoof for $int_if\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:992
#, no-wrap
msgid "Handling Non-Routable Addresses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:997
msgid ""
"Even with a properly configured gateway to handle network address "
"translation, one may have to compensate for other people's "
"misconfigurations. A common misconfiguration is to let traffic with non-"
"routable addresses out to the Internet. Since traffic from non-routeable "
"addresses can play a part in several DoS attack techniques, consider "
"explicitly blocking traffic from non-routeable addresses from entering the "
"network through the external interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1000
msgid ""
"In this example, a macro containing non-routable addresses is defined, then "
"used in blocking rules. Traffic to and from these addresses is quietly "
"dropped on the gateway's external interface."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1006
#, no-wrap
msgid ""
"martians = \"{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \\\n"
"\t 10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \\\n"
"\t 0.0.0.0/8, 240.0.0.0/4 }\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1009
#, no-wrap
msgid ""
"block drop in quick on $ext_if from $martians to any\n"
"block drop out quick on $ext_if from any to $martians\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1011
#, no-wrap
msgid "Enabling ALTQ"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1015
msgid ""
"On FreeBSD, ALTQ can be used with PF to provide Quality of Service (QOS). "
"Once ALTQ is enabled, queues can be defined in the ruleset which determine "
"the processing priority of outbound packets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1017
msgid ""
"Before enabling ALTQ, refer to man:altq[4] to determine if the drivers for "
"the network cards installed on the system support it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1023
msgid ""
"ALTQ is not available as a loadable kernel module. If the system's "
"interfaces support ALTQ, create a custom kernel using the instructions in "
"crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]. The "
"following kernel options are available. The first is needed to enable "
"ALTQ. At least one of the other options is necessary to specify the "
"queueing scheduler algorithm:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1032
#, no-wrap
msgid ""
"options ALTQ\n"
"options ALTQ_CBQ # Class Based Queuing (CBQ)\n"
"options ALTQ_RED # Random Early Detection (RED)\n"
"options ALTQ_RIO # RED In/Out\n"
"options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)\n"
"options ALTQ_PRIQ # Priority Queuing (PRIQ)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1035
msgid "The following scheduler algorithms are available:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1036
#, no-wrap
msgid "CBQ"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1038
msgid ""
"Class Based Queuing (CBQ) is used to divide a connection's bandwidth into "
"different classes or queues to prioritize traffic based on filter rules."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1039
#, no-wrap
msgid "RED"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1042
msgid ""
"Random Early Detection (RED) is used to avoid network congestion by "
"measuring the length of the queue and comparing it to the minimum and "
"maximum thresholds for the queue. When the queue is over the maximum, all "
"new packets are randomly dropped."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1043
#, no-wrap
msgid "RIO"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1045
msgid ""
"In Random Early Detection In and Out (RIO) mode, RED maintains multiple "
"average queue lengths and multiple threshold values, one for each QOS level."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1046
#, no-wrap
msgid "HFSC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1048
msgid ""
"Hierarchical Fair Service Curve Packet Scheduler (HFSC) is described in "
"http://www-2.cs.cmu.edu/\\~hzhang/HFSC/main.html[http://www-2.cs.cmu.edu/"
"~hzhang/HFSC/main.html]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1049
#, no-wrap
msgid "PRIQ"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1051
msgid ""
"Priority Queuing (PRIQ) always passes traffic that is in a higher queue "
"first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1053
msgid ""
"More information about the scheduling algorithms and example rulesets are "
"available at the https://web.archive.org/web/20151109213426/http://www."
"openbsd.org/faq/pf/queueing.html[OpenBSD's web archive]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1055
#, no-wrap
msgid "IPFW"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1059
msgid ""
"IPFW is a stateful firewall written for FreeBSD which supports both IPv4 and "
"IPv6. It is comprised of several components: the kernel firewall filter "
"rule processor and its integrated packet accounting facility, the logging "
"facility, NAT, the man:dummynet[4] traffic shaper, a forward facility, a "
"bridge facility, and an ipstealth facility."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1062
msgid ""
"FreeBSD provides a sample ruleset in [.filename]#/etc/rc.firewall# which "
"defines several firewall types for common scenarios to assist novice users "
"in generating an appropriate ruleset. IPFW provides a powerful syntax which "
"advanced users can use to craft customized rulesets that meet the security "
"requirements of a given environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1064
msgid ""
"This section describes how to enable IPFW, provides an overview of its rule "
"syntax, and demonstrates several rulesets for common configuration scenarios."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1066
#, no-wrap
msgid "Enabling IPFW"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1069
msgid ""
"IPFW is included in the basic FreeBSD install as a kernel loadable module, "
"meaning that a custom kernel is not needed in order to enable IPFW."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1071
msgid ""
"For those users who wish to statically compile IPFW support into a custom "
"kernel, see <<firewalls-ipfw-kernelconfig>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1073
msgid ""
-"To configure the system to enable IPFW at boot time, add `firewall_enable="
-"\"YES\"` to [.filename]#/etc/rc.conf#:"
+"To configure the system to enable IPFW at boot time, add "
+"`firewall_enable=\"YES\"` to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1077
#, no-wrap
msgid "# sysrc firewall_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1080
msgid ""
"To use one of the default firewall types provided by FreeBSD, add another "
"line which specifies the type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1084
#, no-wrap
msgid "# sysrc firewall_type=\"open\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1087
msgid "The available types are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1089
msgid "`open`: passes all traffic."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1090
msgid "`client`: protects only this machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1091
msgid "`simple`: protects the whole network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1092
msgid ""
"`closed`: entirely disables IP traffic except for the loopback interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1093
msgid "`workstation`: protects only this machine using stateful rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1094
msgid "`UNKNOWN`: disables the loading of firewall rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1095
msgid ""
"[.filename]#filename#: full path of the file containing the firewall ruleset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1097
msgid ""
"If `firewall_type` is set to either `client` or `simple`, modify the default "
"rules found in [.filename]#/etc/rc.firewall# to fit the configuration of the "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1099
msgid "Note that the `filename` type is used to load a custom ruleset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1102
msgid ""
"An alternate way to load a custom ruleset is to set the `firewall_script` "
"variable to the absolute path of an _executable script_ that includes IPFW "
"commands. The examples used in this section assume that the "
"`firewall_script` is set to [.filename]#/etc/ipfw.rules#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1106
#, no-wrap
msgid "# sysrc firewall_script=\"/etc/ipfw.rules\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1109
msgid "To enable logging through man:syslogd[8], include this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1113
#, no-wrap
msgid "# sysrc firewall_logging=\"YES\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1121
msgid ""
"Only firewall rules with the `log` option will be logged. The default rules "
"do not include this option and it must be manually added. Therefore it is "
"advisable that the default ruleset is edited for logging. In addition, log "
"rotation may be desired if the logs are stored in a separate file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1125
msgid ""
"There is no [.filename]#/etc/rc.conf# variable to set logging limits. To "
"limit the number of times a rule is logged per connection attempt, specify "
"the number using this line in [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1129
#, no-wrap
msgid "# echo \"net.inet.ip.fw.verbose_limit=5\" >> /etc/sysctl.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1132
msgid ""
"To enable logging through a dedicated interface named `ipfw0`, add this line "
"to [.filename]#/etc/rc.conf# instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1136
#, no-wrap
msgid "# sysrc firewall_logif=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1139
msgid "Then use tcpdump to see what is being logged:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1143
#, no-wrap
msgid "# tcpdump -t -n -i ipfw0\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1149
msgid "There is no overhead due to logging unless tcpdump is attached."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1153
msgid ""
"After saving the needed edits, start the firewall. To enable logging limits "
"now, also set the `sysctl` value specified above:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1158
#, no-wrap
msgid ""
"# service ipfw start\n"
"# sysctl net.inet.ip.fw.verbose_limit=5\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1161
#, no-wrap
msgid "IPFW Rule Syntax"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1169
msgid ""
"When a packet enters the IPFW firewall, it is compared against the first "
"rule in the ruleset and progresses one rule at a time, moving from top to "
"bottom in sequence. When the packet matches the selection parameters of a "
"rule, the rule's action is executed and the search of the ruleset terminates "
"for that packet. This is referred to as \"first match wins\". If the "
"packet does not match any of the rules, it gets caught by the mandatory IPFW "
"default rule number 65535, which denies all packets and silently discards "
"them. However, if the packet matches a rule that contains the `count`, "
"`skipto`, or `tee` keywords, the search continues. Refer to man:ipfw[8] for "
"details on how these keywords affect rule processing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1175
msgid ""
"When creating an IPFW rule, keywords must be written in the following "
"order. Some keywords are mandatory while other keywords are optional. The "
"words shown in uppercase represent a variable and the words shown in "
-"lowercase must precede the variable that follows it. The `#` symbol is used "
-"to mark the start of a comment and may appear at the end of a rule or on its "
-"own line. Blank lines are ignored."
+"lowercase must precede the variable that follows it. The `+#+` symbol is "
+"used to mark the start of a comment and may appear at the end of a rule or "
+"on its own line. Blank lines are ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1177
msgid ""
"`_CMD RULE_NUMBER set SET_NUMBER ACTION log LOG_AMOUNT PROTO from SRC "
"SRC_PORT to DST DST_PORT OPTIONS_`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1181
msgid ""
"This section provides an overview of these keywords and their options. It "
"is not an exhaustive list of every possible option. Refer to man:ipfw[8] "
"for a complete description of the rule syntax that can be used when creating "
"IPFW rules."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1182
#, no-wrap
msgid "CMD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1184
msgid "Every rule must start with `ipfw add`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1185
#, no-wrap
msgid "RULE_NUMBER"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1189
msgid ""
"Each rule is associated with a number from `1` to `65534`. The number is "
"used to indicate the order of rule processing. Multiple rules can have the "
"same number, in which case they are applied according to the order in which "
"they have been added."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1190
#, no-wrap
msgid "SET_NUMBER"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1194
msgid ""
"Each rule is associated with a set number from `0` to `31`. Sets can be "
"individually disabled or enabled, making it possible to quickly add or "
"delete a set of rules. If a SET_NUMBER is not specified, the rule will be "
"added to set `0`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1195
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1941
#, no-wrap
msgid "ACTION"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1198
msgid ""
"A rule can be associated with one of the following actions. The specified "
"action will be executed when the packet matches the selection criterion of "
"the rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1200
msgid ""
"`allow | accept | pass | permit`: these keywords are equivalent and allow "
"packets that match the rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1205
msgid ""
"`check-state`: checks the packet against the dynamic state table. If a "
"match is found, execute the action associated with the rule which generated "
"this dynamic rule, otherwise move to the next rule. A `check-state` rule "
"does not have selection criterion. If no `check-state` rule is present in "
"the ruleset, the dynamic rules table is checked at the first `keep-state` or "
"`limit` rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1208
msgid ""
"`count`: updates counters for all packets that match the rule. The search "
"continues with the next rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1210
msgid ""
"`deny | drop`: either word silently discards packets that match this rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1213
msgid "Additional actions are available. Refer to man:ipfw[8] for details."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1214
#, no-wrap
msgid "LOG_AMOUNT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1220
msgid ""
"When a packet matches a rule with the `log` keyword, a message will be "
"logged to man:syslogd[8] with a facility name of `SECURITY`. Logging only "
"occurs if the number of packets logged for that particular rule does not "
"exceed a specified LOG_AMOUNT. If no LOG_AMOUNT is specified, the limit is "
"taken from the value of `net.inet.ip.fw.verbose_limit`. A value of zero "
"removes the logging limit. Once the limit is reached, logging can be re-"
"enabled by clearing the logging counter or the packet counter for that rule, "
"using `ipfw resetlog`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1225
msgid ""
"Logging is done after all other packet matching conditions have been met, "
"and before performing the final action on the packet. The administrator "
"decides which rules to enable logging on."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1227
#, no-wrap
msgid "PROTO"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1229
msgid ""
"This optional value can be used to specify any protocol name or number found "
"in [.filename]#/etc/protocols#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1230
#, no-wrap
msgid "SRC"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1235
msgid ""
"The `from` keyword must be followed by the source address or a keyword that "
"represents the source address. An address can be represented by `any`, `me` "
"(any address configured on an interface on this system), `me6`, (any IPv6 "
"address configured on an interface on this system), or `table` followed by "
"the number of a lookup table which contains a list of addresses. When "
"specifying an IP address, it can be optionally followed by its CIDR mask or "
"subnet mask. For example, `1.2.3.4/25` or `1.2.3.4:255.255.255.128`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1236
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2007
#, no-wrap
msgid "SRC_PORT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1238
msgid ""
"An optional source port can be specified using the port number or name from "
"[.filename]#/etc/services#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1239
#, no-wrap
msgid "DST"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1242
msgid ""
"The `to` keyword must be followed by the destination address or a keyword "
"that represents the destination address. The same keywords and addresses "
"described in the SRC section can be used to describe the destination."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1243
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2020
#, no-wrap
msgid "DST_PORT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1245
msgid ""
"An optional destination port can be specified using the port number or name "
"from [.filename]#/etc/services#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1246
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1971
#, no-wrap
msgid "OPTIONS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1250
msgid ""
"Several keywords can follow the source and destination. As the name "
"suggests, OPTIONS are optional. Commonly used options include `in` or "
"`out`, which specify the direction of packet flow, `icmptypes` followed by "
"the type of ICMP message, and `keep-state`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1252
msgid ""
"When a `keep-state` rule is matched, the firewall will create a dynamic rule "
"which matches bidirectional traffic between the source and destination "
"addresses and ports using the same protocol."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1257
msgid ""
"The dynamic rules facility is vulnerable to resource depletion from a SYN-"
"flood attack which would open a huge number of dynamic rules. To counter "
"this type of attack with IPFW, use `limit`. This option limits the number "
"of simultaneous sessions by checking the open dynamic rules, counting the "
"number of times this rule and IP address combination occurred. If this "
"count is greater than the value specified by `limit`, the packet is "
"discarded."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1260
msgid ""
"Dozens of OPTIONS are available. Refer to man:ipfw[8] for a description of "
"each available option."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1261
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2048
#, no-wrap
msgid "Example Ruleset"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1266
msgid ""
"This section demonstrates how to create an example stateful firewall ruleset "
"script named [.filename]#/etc/ipfw.rules#. In this example, all connection "
"rules use `in` or `out` to clarify the direction. They also use `via` "
"_interface-name_ to specify the interface the packet is traveling over."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1270
msgid ""
"When first creating or testing a firewall ruleset, consider temporarily "
"setting this tunable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1274
#, no-wrap
msgid "net.inet.ip.fw.default_to_accept=\"1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1277
msgid ""
"This sets the default policy of man:ipfw[8] to be more permissive than the "
"default `deny ip from any to any`, making it slightly more difficult to get "
"locked out of the system right after a reboot."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1282
msgid ""
"The firewall script begins by indicating that it is a Bourne shell script "
"and flushes any existing rules. It then creates the `cmd` variable so that "
"`ipfw add` does not have to be typed at the beginning of every rule. It "
"also defines the `pif` variable which represents the name of the interface "
"that is attached to the Internet."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1288
#, no-wrap
msgid ""
"#!/bin/sh\n"
"# Flush out the list before we begin.\n"
"ipfw -q -f flush\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1292
#, no-wrap
msgid ""
"# Set rules command prefix\n"
"cmd=\"ipfw -q add\"\n"
"pif=\"dc0\" # interface name of NIC attached to Internet\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1295
msgid ""
"The first two rules allow all traffic on the trusted internal interface and "
"on the loopback interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1300
#, no-wrap
msgid ""
"# Change xl0 to LAN NIC interface name\n"
"$cmd 00005 allow all from any to any via xl0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1303
#, no-wrap
msgid ""
"# No restrictions on Loopback Interface\n"
"$cmd 00010 allow all from any to any via lo0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1306
msgid ""
"The next rule allows the packet through if it matches an existing entry in "
"the dynamic rules table:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1310
#, no-wrap
msgid "$cmd 00101 check-state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1313
msgid ""
"The next set of rules defines which stateful connections internal systems "
"can create to hosts on the Internet:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1321
#, no-wrap
msgid ""
"# Allow access to public DNS\n"
"# Replace x.x.x.x with the IP address of a public DNS server\n"
"# and repeat for each DNS server in /etc/resolv.conf\n"
"$cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state\n"
"$cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1327
#, no-wrap
msgid ""
"# Allow access to ISP's DHCP server for cable/DSL configurations.\n"
"# Use the first rule and check log for IP address.\n"
"# Then, uncomment the second rule, input the IP address, and delete the first rule\n"
"$cmd 00120 allow log udp from any to any 67 out via $pif keep-state\n"
"#$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1331
#, no-wrap
msgid ""
"# Allow outbound HTTP and HTTPS connections\n"
"$cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state\n"
"$cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1335
#, no-wrap
msgid ""
"# Allow outbound email connections\n"
"$cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state\n"
"$cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1338
#, no-wrap
msgid ""
"# Allow outbound ping\n"
"$cmd 00250 allow icmp from any to any out via $pif keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1341
#, no-wrap
msgid ""
"# Allow outbound NTP\n"
"$cmd 00260 allow udp from any to any 123 out via $pif keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1344
#, no-wrap
msgid ""
"# Allow outbound SSH\n"
"$cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1347
#, no-wrap
msgid ""
"# deny and log all other outbound connections\n"
"$cmd 00299 deny log all from any to any out via $pif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1352
msgid ""
"The next set of rules controls connections from Internet hosts to the "
"internal network. It starts by denying packets typically associated with "
"attacks and then explicitly allows specific types of connections. All the "
"authorized services that originate from the Internet use `limit` to prevent "
"flooding."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1365
#, no-wrap
msgid ""
"# Deny all inbound traffic from non-routable reserved address spaces\n"
"$cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918 private IP\n"
"$cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918 private IP\n"
"$cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918 private IP\n"
"$cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #loopback\n"
"$cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #loopback\n"
"$cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP auto-config\n"
"$cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #reserved for docs\n"
"$cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun cluster interconnect\n"
"$cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #Class D & E multicast\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1368
#, no-wrap
msgid ""
"# Deny public pings\n"
"$cmd 00310 deny icmp from any to any in via $pif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1371
#, no-wrap
msgid ""
"# Deny ident\n"
"$cmd 00315 deny tcp from any to any 113 in via $pif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1377
#, no-wrap
msgid ""
"# Deny all Netbios services.\n"
"$cmd 00320 deny tcp from any to any 137 in via $pif\n"
"$cmd 00321 deny tcp from any to any 138 in via $pif\n"
"$cmd 00322 deny tcp from any to any 139 in via $pif\n"
"$cmd 00323 deny tcp from any to any 81 in via $pif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1380
#, no-wrap
msgid ""
"# Deny fragments\n"
"$cmd 00330 deny all from any to any frag in via $pif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1383
#, no-wrap
msgid ""
"# Deny ACK packets that did not match the dynamic rule table\n"
"$cmd 00332 deny tcp from any to any established in via $pif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1387
#, no-wrap
msgid ""
"# Allow traffic from ISP's DHCP server.\n"
"# Replace x.x.x.x with the same IP address used in rule 00120.\n"
"#$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1390
#, no-wrap
msgid ""
"# Allow HTTP connections to internal web server\n"
"$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1393
#, no-wrap
msgid ""
"# Allow inbound SSH connections\n"
"$cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1396
#, no-wrap
msgid ""
"# Reject and log all other incoming connections\n"
"$cmd 00499 deny log all from any to any in via $pif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1399
msgid ""
"The last rule logs all packets that do not match any of the rules in the "
"ruleset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1404
#, no-wrap
msgid ""
"# Everything else is denied and logged\n"
"$cmd 00999 deny log all from any to any\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1407
#, no-wrap
msgid "In-kernel NAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1412
msgid ""
"FreeBSD's IPFW firewall has two implementations of NAT: the userland "
"implementation man:natd[8], and the more recent in-kernel NAT "
"implementation. Both work in conjunction with IPFW to provide network "
"address translation. This can be used to provide an Internet Connection "
"Sharing solution so that several internal computers can connect to the "
"Internet using a single public IP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1416
msgid ""
"To do this, the FreeBSD machine connected to the Internet must act as a "
"gateway. This system must have two NICs, where one is connected to the "
"Internet and the other is connected to the internal LAN. Each machine "
"connected to the LAN should be assigned an IP address in the private network "
"space, as defined by https://www.ietf.org/rfc/rfc1918.txt[RFC 1918]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1419
msgid ""
"Some additional configuration is needed in order to enable the in-kernel NAT "
"facility of IPFW. To enable in-kernel NAT support at boot time, the "
"following must be set in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1425
#, no-wrap
msgid ""
"gateway_enable=\"YES\"\n"
"firewall_enable=\"YES\"\n"
"firewall_nat_enable=\"YES\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1431
msgid ""
"When `firewall_nat_enable` is set but `firewall_enable` is not, it will have "
"no effect and do nothing. This is because the in-kernel NAT implementation "
"is only compatible with IPFW."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1438
msgid ""
"When the ruleset contains stateful rules, the positioning of the NAT rule is "
"critical and the `skipto` action is used. The `skipto` action requires a "
"rule number so that it knows which rule to jump to. The example below "
"builds upon the firewall ruleset shown in the previous section. It adds "
"some additional entries and modifies some existing rules in order to "
"configure the firewall for in-kernel NAT. It starts by adding some "
"additional variables which represent the rule number to skip to, the `keep-"
"state` option, and a list of TCP ports which will be used to reduce the "
"number of rules."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1448
#, no-wrap
msgid ""
"#!/bin/sh\n"
"ipfw -q -f flush\n"
"cmd=\"ipfw -q add\"\n"
"skip=\"skipto 1000\"\n"
"pif=dc0\n"
"ks=\"keep-state\"\n"
"good_tcpo=\"22,25,37,53,80,443,110\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1453
msgid ""
"With in-kernel NAT it is necessary to disable TCP segmentation offloading "
"(TSO) due to the architecture of man:libalias[3], a library implemented as a "
"kernel module to provide the in-kernel NAT facility of IPFW. TSO can be "
"disabled on a per network interface basis using man:ifconfig[8] or on a "
"system wide basis using man:sysctl[8]. To disable TSO system wide, the "
"following must be set it [.filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1457
#, no-wrap
msgid "net.inet.tcp.tso=\"0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1466
msgid ""
"A NAT instance will also be configured. It is possible to have multiple NAT "
"instances each with their own configuration. For this example only one NAT "
"instance is needed, NAT instance number 1. The configuration can take a few "
"options such as: `if` which indicates the public interface, `same_ports` "
"which takes care that aliased ports and local port numbers are mapped the "
"same, `unreg_only` will result in only unregistered (private) address spaces "
"to be processed by the NAT instance, and `reset` which will help to keep a "
"functioning NAT instance even when the public IP address of the IPFW machine "
"changes. For all possible options that can be passed to a single NAT "
"instance configuration consult man:ipfw[8]. When configuring a stateful "
"NATing firewall, it is necessary to allow translated packets to be "
"reinjected in the firewall for further processing. This can be achieved by "
"disabling `one_pass` behavior at the start of the firewall script."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1471
#, no-wrap
msgid ""
"ipfw disable one_pass\n"
"ipfw -q nat 1 config if $pif same_ports unreg_only reset\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1477
msgid ""
"The inbound NAT rule is inserted _after_ the two rules which allow all "
"traffic on the trusted and loopback interfaces and after the reassemble rule "
"but _before_ the `check-state` rule. It is important that the rule number "
"selected for this NAT rule, in this example `100`, is higher than the first "
"three rules and lower than the `check-state` rule. Furthermore, because of "
"the behavior of in-kernel NAT it is advised to place a reassemble rule just "
"before the first NAT rule and after the rules that allow traffic on trusted "
"interface. Normally, IP fragmentation should not happen, but when dealing "
"with IPSEC/ESP/GRE tunneling traffic it might and the reassembling of "
"fragments is necessary before handing the complete packet over to the in-"
"kernel NAT facility."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1481
msgid ""
"The reassemble rule was not needed with userland man:natd[8] because the "
"internal workings of the IPFW `divert` action already takes care of "
"reassembling packets before delivery to the socket as also stated in man:"
"ipfw[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1484
msgid ""
"The NAT instance and rule number used in this example does not match with "
"the default NAT instance and rule number created by [.filename]#rc."
"firewall#. [.filename]#rc.firewall# is a script that sets up the default "
"firewall rules present in FreeBSD."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1494
#, no-wrap
msgid ""
"$cmd 005 allow all from any to any via xl0 # exclude LAN traffic\n"
"$cmd 010 allow all from any to any via lo0 # exclude loopback traffic\n"
"$cmd 099 reass all from any to any in # reassemble inbound packets\n"
"$cmd 100 nat 1 ip from any to any in via $pif # NAT any inbound packets\n"
"# Allow the packet through if it has an existing entry in the dynamic rules table\n"
"$cmd 101 check-state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1498
msgid ""
-"The outbound rules are modified to replace the `allow` action with the `"
-"$skip` variable, indicating that rule processing will continue at rule "
-"`1000`. The seven `tcp` rules have been replaced by rule `125` as the `"
-"$good_tcpo` variable contains the seven allowed outbound ports."
+"The outbound rules are modified to replace the `allow` action with the "
+"`$skip` variable, indicating that rule processing will continue at rule "
+"`1000`. The seven `tcp` rules have been replaced by rule `125` as the "
+"`$good_tcpo` variable contains the seven allowed outbound ports."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1502
msgid ""
"Remember that IPFW's performance is largely determined by the number of "
"rules present in the ruleset."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1511
#, no-wrap
msgid ""
"# Authorized outbound packets\n"
"$cmd 120 $skip udp from any to x.x.x.x 53 out via $pif $ks\n"
"$cmd 121 $skip udp from any to x.x.x.x 67 out via $pif $ks\n"
"$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks\n"
"$cmd 130 $skip icmp from any to any out via $pif $ks\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1517
msgid ""
"The inbound rules remain the same, except for the very last rule which "
"removes the `via $pif` in order to catch both inbound and outbound rules. "
"The NAT rule must follow this last outbound rule, must have a higher number "
"than that last rule, and the rule number must be referenced by the `skipto` "
"action. In this ruleset, rule number `1000` handles passing all packets to "
"our configured instance for NAT processing. The next rule allows any packet "
"which has undergone NAT processing to pass."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1523
#, no-wrap
msgid ""
"$cmd 999 deny log all from any to any\n"
"$cmd 1000 nat 1 ip from any to any out via $pif # skipto location for outbound stateful rules\n"
"$cmd 1001 allow ip from any to any\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1526
msgid ""
"In this example, rules `100`, `101`, `125`, `1000`, and `1001` control the "
"address translation of the outbound and inbound packets so that the entries "
"in the dynamic state table always register the private LANIP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1538
msgid ""
"Consider an internal web browser which initializes a new outbound HTTP "
"session over port 80. When the first outbound packet enters the firewall, "
"it does not match rule `100` because it is headed out rather than in. It "
"passes rule `101` because this is the first packet and it has not been "
"posted to the dynamic state table yet. The packet finally matches rule "
"`125` as it is outbound on an allowed port and has a source IP address from "
"the internal LAN. On matching this rule, two actions take place. First, "
"the `keep-state` action adds an entry to the dynamic state table and the "
"specified action, `skipto rule 1000`, is executed. Next, the packet "
"undergoes NAT and is sent out to the Internet. This packet makes its way to "
"the destination web server, where a response packet is generated and sent "
"back. This new packet enters the top of the ruleset. It matches rule `100` "
"and has its destination IP address mapped back to the original internal "
"address. It then is processed by the `check-state` rule, is found in the "
"table as an existing session, and is released to the LAN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1543
msgid ""
"On the inbound side, the ruleset has to deny bad packets and allow only "
"authorized services. A packet which matches an inbound rule is posted to "
"the dynamic state table and the packet is released to the LAN. The packet "
"generated as a response is recognized by the `check-state` rule as belonging "
"to an existing session. It is then sent to rule `1000` to undergo NAT "
"before being released to the outbound interface."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1551
msgid ""
"Transitioning from userland man:natd[8] to in-kernel NAT might appear "
"seamless at first but there is small catch. When using the GENERIC kernel, "
"IPFW will load the [.filename]#libalias.ko# kernel module, when "
"`firewall_nat_enable` is enabled in [.filename]#/etc/rc.conf#. The [."
"filename]#libalias.ko# kernel module only provides basic NAT functionality, "
"whereas the userland implementation man:natd[8] has all NAT functionality "
"available in its userland library without any extra configuration. All "
"functionality refers to the following kernel modules that can additionally "
"be loaded when needed besides the standard [.filename]#libalias.ko# kernel "
"module: [.filename]#alias_ftp.ko#, [.filename]#alias_bbt.ko#, [."
"filename]#skinny.ko#, [.filename]#irc.ko#, [.filename]#alias_pptp.ko# and [."
"filename]#alias_smedia.ko# using the `kld_list` directive in [.filename]#/"
"etc/rc.conf#. If a custom kernel is used, the full functionality of the "
"userland library can be compiled in, in the kernel, using the `options "
"LIBALIAS`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1553
#, no-wrap
msgid "Port Redirection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1559
msgid ""
"The drawback with NAT in general is that the LAN clients are not accessible "
"from the Internet. Clients on the LAN can make outgoing connections to the "
"world but cannot receive incoming ones. This presents a problem if trying "
"to run Internet services on one of the LAN client machines. A simple way "
"around this is to redirect selected Internet ports on the NAT providing "
"machine to a LAN client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1562
msgid ""
"For example, an IRC server runs on client `A` and a web server runs on "
"client `B`. For this to work properly, connections received on ports 6667 "
"(IRC) and 80 (HTTP) must be redirected to the respective machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1566
msgid ""
"With in-kernel NAT all configuration is done in the NAT instance "
"configuration. For a full list of options that an in-kernel NAT instance "
"can use, consult man:ipfw[8]. The IPFW syntax follows the syntax of natd. "
"The syntax for `redirect_port` is as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1572
#, no-wrap
msgid ""
"redirect_port proto targetIP:targetPORT[-targetPORT]\n"
" [aliasIP:]aliasPORT[-aliasPORT]\n"
" [remoteIP[:remotePORT[-remotePORT]]]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1575
msgid "To configure the above example setup, the arguments should be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1580
#, no-wrap
msgid ""
"redirect_port tcp 192.168.0.2:6667 6667\n"
"redirect_port tcp 192.168.0.3:80 80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1583
msgid ""
"After adding these arguments to the configuration of NAT instance 1 in the "
"above ruleset, the TCP ports will be port forwarded to the LAN client "
"machines running the IRC and HTTP services."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1589
#, no-wrap
msgid ""
"ipfw -q nat 1 config if $pif same_ports unreg_only reset \\\n"
" redirect_port tcp 192.168.0.2:6667 6667 \\\n"
" redirect_port tcp 192.168.0.3:80 80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1593
msgid ""
"Port ranges over individual ports can be indicated with `redirect_port`. "
"For example, _tcp 192.168.0.2:2000-3000 2000-3000_ would redirect all "
"connections received on ports 2000 to 3000 to ports 2000 to 3000 on client "
"`A`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1594
#, no-wrap
msgid "Address Redirection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1600
msgid ""
"Address redirection is useful if more than one IP address is available. "
"Each LAN client can be assigned its own external IP address by man:ipfw[8], "
"which will then rewrite outgoing packets from the LAN clients with the "
"proper external IP address and redirects all traffic incoming on that "
"particular IP address back to the specific LAN client. This is also known "
"as static NAT. For example, if IP addresses `128.1.1.1`, `128.1.1.2`, and "
"`128.1.1.3` are available, `128.1.1.1` can be used as the man:ipfw[8] "
"machine's external IP address, while `128.1.1.2` and `128.1.1.3` are "
"forwarded back to LAN clients `A` and `B`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1602
msgid ""
-"The `redirect_address` syntax is as below, where `localIP` is the internal "
-"IP address of the LAN client, and `publicIP` the external IP address "
+"The `redirect_addr` syntax is as below, where `localIP` is the internal IP "
+"address of the LAN client, and `publicIP` the external IP address "
"corresponding to the LAN client."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1606
#, no-wrap
-msgid "redirect_address localIP publicIP\n"
+msgid "redirect_addr localIP publicIP\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1609
msgid "In the example, the arguments would read:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1614
#, no-wrap
msgid ""
-"redirect_address 192.168.0.2 128.1.1.2\n"
-"redirect_address 192.168.0.3 128.1.1.3\n"
+"redirect_addr 192.168.0.2 128.1.1.2\n"
+"redirect_addr 192.168.0.3 128.1.1.3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1618
msgid ""
"Like `redirect_port`, these arguments are placed in a NAT instance "
"configuration. With address redirection, there is no need for port "
"redirection, as all data received on a particular IP address is redirected."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1621
msgid ""
"The external IP addresses on the man:ipfw[8] machine must be active and "
"aliased to the external interface. Refer to man:rc.conf[5] for details."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1622
#, no-wrap
msgid "Userspace NAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1626
msgid ""
"Let us start with a statement: the userspace NAT implementation: man:"
"natd[8], has more overhead than in-kernel NAT. For man:natd[8] to translate "
"packets, the packets have to be copied from the kernel to userspace and back "
"which brings in extra overhead that is not present with in-kernel NAT."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1630
msgid ""
"To enable the userpace NAT daemon man:natd[8] at boot time, the following is "
"a minimum configuration in [.filename]#/etc/rc.conf#. Where "
"`natd_interface` is set to the name of the NIC attached to the Internet. "
"The man:rc[8] script of man:natd[8] will automatically check if a dynamic IP "
"address is used and configure itself to handle that."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1636
#, no-wrap
msgid ""
"gateway_enable=\"YES\"\n"
"natd_enable=\"YES\"\n"
"natd_interface=\"rl0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1641
msgid ""
"In general, the above ruleset as explained for in-kernel NAT can also be "
"used together with man:natd[8]. The exceptions are the configuration of the "
"in-kernel NAT instance `(ipfw -q nat 1 config ...)` which is not needed "
"together with reassemble rule 99 because its functionality is included in "
"the `divert` action. Rule number 100 and 1000 will have to change sligthly "
"as shown below."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1646
#, no-wrap
msgid ""
"$cmd 100 divert natd ip from any to any in via $pif\n"
"$cmd 1000 divert natd ip from any to any out via $pif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1651
msgid ""
"To configure port or address redirection, a similar syntax as with in-kernel "
"NAT is used. Although, now, instead of specifying the configuration in our "
"ruleset script like with in-kernel NAT, configuration of man:natd[8] is best "
"done in a configuration file. To do this, an extra flag must be passed via "
"[.filename]#/etc/rc.conf# which specifies the path of the configuration file."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1655
#, no-wrap
msgid "natd_flags=\"-f /etc/natd.conf\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1662
msgid ""
"The specified file must contain a list of configuration options, one per "
"line. For more information about the configuration file and possible "
"variables, consult man:natd[8]. Below are two example entries, one per line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1667
#, no-wrap
msgid ""
"redirect_port tcp 192.168.0.2:6667 6667\n"
-"redirect_address 192.168.0.3 128.1.1.3\n"
+"redirect_addr 192.168.0.3 128.1.1.3\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1672
#, no-wrap
msgid "The IPFW Command"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1677
msgid ""
"`ipfw` can be used to make manual, single rule additions or deletions to the "
"active firewall while it is running. The problem with using this method is "
"that all the changes are lost when the system reboots. It is recommended to "
"instead write all the rules in a file and to use that file to load the rules "
"at boot time and to replace the currently running firewall rules whenever "
"that file changes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1681
msgid ""
"`ipfw` is a useful way to display the running firewall rules to the console "
"screen. The IPFW accounting facility dynamically creates a counter for each "
"rule that counts each packet that matches the rule. During the process of "
"testing a rule, listing the rule with its counter is one way to determine if "
"the rule is functioning as expected."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1683
msgid "To list all the running rules in sequence:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1687
#, no-wrap
msgid "# ipfw list\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1690
msgid ""
"To list all the running rules with a time stamp of when the last time the "
"rule was matched:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1694
#, no-wrap
msgid "# ipfw -t list\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1698
msgid ""
"The next example lists accounting information and the packet count for "
"matched rules along with the rules themselves. The first column is the rule "
"number, followed by the number of matched packets and bytes, followed by the "
"rule itself."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1702
#, no-wrap
msgid "# ipfw -a list\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1705
msgid "To list dynamic rules in addition to static rules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1709
#, no-wrap
msgid "# ipfw -d list\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1712
msgid "To also show the expired dynamic rules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1716
#, no-wrap
msgid "# ipfw -d -e list\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1719
msgid "To zero the counters:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1723
#, no-wrap
msgid "# ipfw zero\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1726
msgid "To zero the counters for just the rule with number _NUM_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1730
#, no-wrap
msgid "# ipfw zero NUM\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1732
#, no-wrap
msgid "Logging Firewall Messages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1739
msgid ""
"Even with the logging facility enabled, IPFW will not generate any rule "
"logging on its own. The firewall administrator decides which rules in the "
"ruleset will be logged, and adds the `log` keyword to those rules. Normally "
"only deny rules are logged. It is customary to duplicate the \"ipfw default "
"deny everything\" rule with the `log` keyword included as the last rule in "
"the ruleset. This way, it is possible to see all the packets that did not "
"match any of the rules in the ruleset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1743
msgid ""
"Logging is a two edged sword. If one is not careful, an over abundance of "
"log data or a DoS attack can fill the disk with log files. Log messages are "
"not only written to syslogd, but also are displayed on the root console "
"screen and soon become annoying."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1748
msgid ""
"The `IPFIREWALL_VERBOSE_LIMIT=5` kernel option limits the number of "
"consecutive messages sent to man:syslogd[8], concerning the packet matching "
"of a given rule. When this option is enabled in the kernel, the number of "
"consecutive messages concerning a particular rule is capped at the number "
"specified. There is nothing to be gained from 200 identical log messages. "
"With this option set to five, five consecutive messages concerning a "
"particular rule would be logged to syslogd and the remainder identical "
"consecutive messages would be counted and posted to syslogd with a phrase "
"like the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1752
#, no-wrap
msgid "last message repeated 45 times\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1755
msgid ""
"All logged packets messages are written by default to [.filename]#/var/log/"
"security#, which is defined in [.filename]#/etc/syslog.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1757
#, no-wrap
msgid "Building a Rule Script"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1763
msgid ""
"Most experienced IPFW users create a file containing the rules and code them "
"in a manner compatible with running them as a script. The major benefit of "
"doing this is the firewall rules can be refreshed in mass without the need "
"of rebooting the system to activate them. This method is convenient in "
"testing new rules as the procedure can be executed as many times as needed. "
"Being a script, symbolic substitution can be used for frequently used values "
"to be substituted into multiple rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1768
msgid ""
"This example script is compatible with the syntax used by the man:sh[1], man:"
"csh[1], and man:tcsh[1] shells. Symbolic substitution fields are prefixed "
"with a dollar sign ($). Symbolic fields do not have the $ prefix. The "
"value to populate the symbolic field must be enclosed in double quotes "
"(\"\")."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1770
msgid "Start the rules file like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1788
#, no-wrap
msgid ""
"############### start of example ipfw rules script #############\n"
"#\n"
"ipfw -q -f flush # Delete all rules\n"
"# Set defaults\n"
"oif=\"tun0\" # out interface\n"
"odns=\"192.0.2.11\" # ISP's DNS server IP address\n"
"cmd=\"ipfw -q add \" # build rule prefix\n"
"ks=\"keep-state\" # just too lazy to key this each time\n"
"$cmd 00500 check-state\n"
"$cmd 00502 deny all from any to any frag\n"
"$cmd 00501 deny tcp from any to any established\n"
"$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks\n"
"$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks\n"
"$cmd 00611 allow udp from any to $odns 53 out via $oif $ks\n"
"################### End of example ipfw rules script ############\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1791
msgid ""
"The rules are not important as the focus of this example is how the symbolic "
"substitution fields are populated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1793
msgid ""
"If the above example was in [.filename]#/etc/ipfw.rules#, the rules could be "
"reloaded by the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1797
#, no-wrap
msgid "# sh /etc/ipfw.rules\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1800
msgid ""
"[.filename]#/etc/ipfw.rules# can be located anywhere and the file can have "
"any name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1802
msgid "The same thing could be accomplished by running these commands by hand:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1812
#, no-wrap
msgid ""
"# ipfw -q -f flush\n"
"# ipfw -q add check-state\n"
"# ipfw -q add deny all from any to any frag\n"
"# ipfw -q add deny tcp from any to any established\n"
"# ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state\n"
"# ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state\n"
"# ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-state\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1815
#, no-wrap
msgid "IPFW Kernel Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1819
msgid ""
"In order to statically compile IPFW support into a custom kernel, refer to "
"the instructions in crossref:kernelconfig[kernelconfig,Configuring the "
"FreeBSD Kernel]. The following options are available for the custom kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1832
#, no-wrap
msgid ""
"options IPFIREWALL\t\t\t# enables IPFW\n"
"options IPFIREWALL_VERBOSE\t\t# enables logging for rules with log keyword to syslogd(8)\n"
"options IPFIREWALL_VERBOSE_LIMIT=5\t# limits number of logged packets per-entry\n"
"options IPFIREWALL_DEFAULT_TO_ACCEPT # sets default policy to pass what is not explicitly denied\n"
"options IPFIREWALL_NAT\t\t# enables basic in-kernel NAT support\n"
"options LIBALIAS\t\t\t# enables full in-kernel NAT support\n"
"options IPFIREWALL_NAT64\t\t# enables in-kernel NAT64 support\n"
"options IPFIREWALL_NPTV6\t\t# enables in-kernel IPv6 NPT support\n"
"options IPFIREWALL_PMOD\t\t# enables protocols modification module support\n"
"options IPDIVERT\t\t\t# enables NAT through natd(8)\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1837
msgid ""
"IPFW can be loaded as a kernel module: options above are built by default as "
"modules or can be set at runtime using tunables."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1840
#, no-wrap
msgid "IPFILTER (IPF)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1843
msgid ""
"IPFILTER, also known as IPF, is a cross-platform, open source firewall which "
"has been ported to several operating systems, including FreeBSD, NetBSD, "
"OpenBSD, and Solaris(TM)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1846
msgid ""
"IPFILTER is a kernel-side firewall and NAT mechanism that can be controlled "
"and monitored by userland programs. Firewall rules can be set or deleted "
"using ipf, NAT rules can be set or deleted using ipnat, run-time statistics "
"for the kernel parts of IPFILTER can be printed using ipfstat, and ipmon can "
"be used to log IPFILTER actions to the system log files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1849
msgid ""
"IPF was originally written using a rule processing logic of \"the last "
"matching rule wins\" and only used stateless rules. Since then, IPF has "
"been enhanced to include the `quick` and `keep state` options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1852
msgid ""
"The IPF FAQ is at http://www.phildev.net/ipf/index.html[http://www.phildev."
"net/ipf/index.html]. A searchable archive of the IPFilter mailing list is "
"available at http://marc.info/?l=ipfilter[http://marc.info/?l=ipfilter]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1855
msgid ""
"This section of the Handbook focuses on IPF as it pertains to FreeBSD. It "
"provides examples of rules that contain the `quick` and `keep state` options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1856
#, no-wrap
msgid "Enabling IPF"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1859
msgid ""
"IPF is included in the basic FreeBSD install as a kernel loadable module, "
"meaning that a custom kernel is not needed in order to enable IPF."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1862
msgid ""
"For users who prefer to statically compile IPF support into a custom kernel, "
"refer to the instructions in crossref:kernelconfig[kernelconfig,Configuring "
"the FreeBSD Kernel]. The following kernel options are available:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1869
#, no-wrap
msgid ""
"options IPFILTER\n"
"options IPFILTER_LOG\n"
"options IPFILTER_LOOKUP\n"
"options IPFILTER_DEFAULT_BLOCK\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1872
msgid ""
"where `options IPFILTER` enables support for IPFILTER, `options "
"IPFILTER_LOG` enables IPF logging using the [.filename]#ipl# packet logging "
"pseudo-device for every rule that has the `log` keyword, `IPFILTER_LOOKUP` "
"enables IP pools in order to speed up IP lookups, and `options "
"IPFILTER_DEFAULT_BLOCK` changes the default behavior so that any packet not "
"matching a firewall `pass` rule gets blocked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1876
msgid ""
"To configure the system to enable IPF at boot time, add the following "
"entries to [.filename]#/etc/rc.conf#. These entries will also enable "
"logging and `default pass all`. To change the default policy to `block all` "
"without compiling a custom kernel, remember to add a `block all` rule at the "
"end of the ruleset."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1887
#, no-wrap
msgid ""
"ipfilter_enable=\"YES\" # Start ipf firewall\n"
"ipfilter_rules=\"/etc/ipf.rules\" # loads rules definition text file\n"
"ipv6_ipfilter_rules=\"/etc/ipf6.rules\" # loads rules definition text file for IPv6\n"
"ipmon_enable=\"YES\" # Start IP monitor log\n"
"ipmon_flags=\"-Ds\" # D = start as daemon\n"
" # s = log to syslog\n"
" # v = log tcp window, ack, seq\n"
" # n = map IP & port to names\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1890
msgid "If NAT functionality is needed, also add these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1896
#, no-wrap
msgid ""
"gateway_enable=\"YES\" # Enable as LAN gateway\n"
"ipnat_enable=\"YES\" # Start ipnat function\n"
"ipnat_rules=\"/etc/ipnat.rules\" # rules definition file for ipnat\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1899
msgid "Then, to start IPF now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1903
#, no-wrap
msgid "# service ipfilter start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1907
msgid ""
"To load the firewall rules, specify the name of the ruleset file using "
"`ipf`. The following command can be used to replace the currently running "
"firewall rules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1911
#, no-wrap
msgid "# ipf -Fa -f /etc/ipf.rules\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1914
msgid ""
"where `-Fa` flushes all the internal rules tables and `-f` specifies the "
"file containing the rules to load."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1917
msgid ""
"This provides the ability to make changes to a custom ruleset and update the "
"running firewall with a fresh copy of the rules without having to reboot the "
"system. This method is convenient for testing new rules as the procedure "
"can be executed as many times as needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1919
msgid ""
"Refer to man:ipf[8] for details on the other flags available with this "
"command."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1920
#, no-wrap
msgid "IPF Rule Syntax"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1926
msgid ""
"This section describes the IPF rule syntax used to create stateful rules. "
"When creating rules, keep in mind that unless the `quick` keyword appears in "
"a rule, every rule is read in order, with the _last matching rule_ being the "
"one that is applied. This means that even if the first rule to match a "
"packet is a `pass`, if there is a later matching rule that is a `block`, the "
"packet will be dropped. Sample rulesets can be found in [.filename]#/usr/"
"share/examples/ipfilter#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1929
msgid ""
-"When creating rules, a `#` character is used to mark the start of a comment "
-"and may appear at the end of a rule, to explain that rule's function, or on "
-"its own line. Any blank lines are ignored."
+"When creating rules, a `+#+` character is used to mark the start of a "
+"comment and may appear at the end of a rule, to explain that rule's "
+"function, or on its own line. Any blank lines are ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1934
msgid ""
"The keywords which are used in rules must be written in a specific order, "
"from left to right. Some keywords are mandatory while others are optional. "
"Some keywords have sub-options which may be keywords themselves and also "
"include more sub-options. The keyword order is as follows, where the words "
"shown in uppercase represent a variable and the words shown in lowercase "
"must precede the variable that follows it:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1936
msgid ""
"`_ACTION DIRECTION OPTIONS proto PROTO_TYPE from SRC_ADDR SRC_PORT to "
"DST_ADDR DST_PORT TCP_FLAG|ICMP_TYPE keep state STATE_`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1940
msgid ""
"This section describes each of these keywords and their options. It is not "
"an exhaustive list of every possible option. Refer to man:ipf[5] for a "
"complete description of the rule syntax that can be used when creating IPF "
"rules and examples for using each keyword."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1945
msgid ""
"The action keyword indicates what to do with the packet if it matches that "
"rule. Every rule _must_ have an action. The following actions are "
"recognized:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1947
msgid "`block`: drops the packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1949
msgid "`pass`: allows the packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1951
msgid "`log`: generates a log record."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1953
msgid ""
"`count`: counts the number of packets and bytes which can provide an "
"indication of how often a rule is used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1955
msgid "`auth`: queues the packet for further processing by another program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1957
msgid ""
"`call`: provides access to functions built into IPF that allow more complex "
"actions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1959
msgid ""
"`decapsulate`: removes any headers in order to process the contents of the "
"packet."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1960
#, no-wrap
msgid "DIRECTION"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1962
msgid ""
"Next, each rule must explicitly state the direction of traffic using one of "
"these keywords:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1964
msgid "`in`: the rule is applied against an inbound packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1966
msgid "`out`: the rule is applied against an outbound packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1968
msgid "`all`: the rule applies to either direction."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1970
msgid ""
"If the system has multiple interfaces, the interface can be specified along "
"with the direction. An example would be `in on fxp0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1974
msgid ""
"Options are optional. However, if multiple options are specified, they must "
"be used in the order shown here."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1976
msgid ""
"`log`: when performing the specified ACTION, the contents of the packet's "
"headers will be written to the man:ipl[4] packet log pseudo-device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1978
msgid ""
"`quick`: if a packet matches this rule, the ACTION specified by the rule "
"occurs and no further processing of any following rules will occur for this "
"packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1981
msgid ""
"`on`: must be followed by the interface name as displayed by man:"
"ifconfig[8]. The rule will only match if the packet is going through the "
"specified interface in the specified direction."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1983
msgid ""
"When using the `log` keyword, the following qualifiers may be used in this "
"order:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1985
msgid ""
"`body`: indicates that the first 128 bytes of the packet contents will be "
"logged after the headers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1987
msgid ""
"`first`: if the `log` keyword is being used in conjunction with a `keep "
"state` option, this option is recommended so that only the triggering packet "
"is logged and not every packet which matches the stateful connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1990
msgid ""
"Additional options are available to specify error return messages. Refer to "
"man:ipf[5] for more details."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1991
#, no-wrap
msgid "PROTO_TYPE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1997
msgid ""
"The protocol type is optional. However, it is mandatory if the rule needs "
"to specify a SRC_PORT or a DST_PORT as it defines the type of protocol. "
"When specifying the type of protocol, use the `proto` keyword followed by "
"either a protocol number or name from [.filename]#/etc/protocols#. Example "
"protocol names include `tcp`, `udp`, or `icmp`. If PROTO_TYPE is specified "
"but no SRC_PORT or DST_PORT is specified, all port numbers for that protocol "
"will match that rule."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:1998
#, no-wrap
msgid "SRC_ADDR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2002
msgid ""
"The `from` keyword is mandatory and is followed by a keyword which "
"represents the source of the packet. The source can be a hostname, an IP "
"address followed by the CIDR mask, an address pool, or the keyword `all`. "
"Refer to man:ipf[5] for examples."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2006
msgid ""
"There is no way to match ranges of IP addresses which do not express "
"themselves easily using the dotted numeric form / mask-length notation. The "
"package:net-mgmt/ipcalc[] package or port may be used to ease the "
"calculation of the CIDR mask. Additional information is available at the "
"utility's web page: http://jodies.de/ipcalc[http://jodies.de/ipcalc]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2011
msgid ""
"The port number of the source is optional. However, if it is used, it "
"requires PROTO_TYPE to be first defined in the rule. The port number must "
"also be preceded by the `proto` keyword."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2013
msgid ""
"A number of different comparison operators are supported: `=` (equal to), `!"
"=` (not equal to), `<` (less than), `>` (greater than), `<=` (less than or "
"equal to), and `>=` (greater than or equal to)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2015
msgid ""
"To specify port ranges, place the two port numbers between `<>` (less than "
"and greater than ), `><` (greater than and less than ), or `:` (greater than "
"or equal to and less than or equal to)."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2016
#, no-wrap
msgid "DST_ADDR"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2019
msgid ""
"The `to` keyword is mandatory and is followed by a keyword which represents "
"the destination of the packet. Similar to SRC_ADDR, it can be a hostname, "
"an IP address followed by the CIDR mask, an address pool, or the keyword "
"`all`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2024
msgid ""
"Similar to SRC_PORT, the port number of the destination is optional. "
"However, if it is used, it requires PROTO_TYPE to be first defined in the "
"rule. The port number must also be preceded by the `proto` keyword."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2025
#, no-wrap
msgid "TCP_FLAG|ICMP_TYPE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2028
msgid ""
"If `tcp` is specified as the PROTO_TYPE, flags can be specified as letters, "
"where each letter represents one of the possible TCP flags used to determine "
"the state of a connection. Possible values are: `S` (SYN), `A` (ACK), `P` "
"(PSH), `F` (FIN), `U` (URG), `R` (RST), `C` (CWN), and `E` (ECN)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2031
msgid ""
"If `icmp` is specified as the PROTO_TYPE, the ICMP type to match can be "
"specified. Refer to man:ipf[5] for the allowable types."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2032
#, no-wrap
msgid "STATE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2036
msgid ""
"If a `pass` rule contains `keep state`, IPF will add an entry to its dynamic "
"state table and allow subsequent packets that match the connection. IPF can "
"track state for TCP, UDP, and ICMP sessions. Any packet that IPF can be "
"certain is part of an active session, even if it is a different protocol, "
"will be allowed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2043
msgid ""
"In IPF, packets destined to go out through the interface connected to the "
"public Internet are first checked against the dynamic state table. If the "
"packet matches the next expected packet comprising an active session "
"conversation, it exits the firewall and the state of the session "
"conversation flow is updated in the dynamic state table. Packets that do "
"not belong to an already active session are checked against the outbound "
"ruleset. Packets coming in from the interface connected to the public "
"Internet are first checked against the dynamic state table. If the packet "
"matches the next expected packet comprising an active session, it exits the "
"firewall and the state of the session conversation flow is updated in the "
"dynamic state table. Packets that do not belong to an already active "
"session are checked against the inbound ruleset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2047
msgid ""
"Several keywords can be added after `keep state`. If used, these keywords "
"set various options that control stateful filtering, such as setting "
"connection limits or connection age. Refer to man:ipf[5] for the list of "
"available options and their descriptions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2051
msgid ""
"This section demonstrates how to create an example ruleset which only allows "
"services matching `pass` rules and blocks all others."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2054
msgid ""
"FreeBSD uses the loopback interface ([.filename]#lo0#) and the IP address "
"`127.0.0.1` for internal communication. The firewall ruleset must contain "
"rules to allow free movement of these internally used packets:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2060
#, no-wrap
msgid ""
"# no restrictions on loopback interface\n"
"pass in quick on lo0 all\n"
"pass out quick on lo0 all\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2065
msgid ""
"The public interface connected to the Internet is used to authorize and "
"control access of all outbound and inbound connections. If one or more "
"interfaces are cabled to private networks, those internal interfaces may "
"require rules to allow packets originating from the LAN to flow between the "
"internal networks or to the interface attached to the Internet. The ruleset "
"should be organized into three major sections: any trusted internal "
"interfaces, outbound connections through the public interface, and inbound "
"connections through the public interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2067
msgid ""
"These two rules allow all traffic to pass through a trusted LAN interface "
"named [.filename]#xl0#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2073
#, no-wrap
msgid ""
"# no restrictions on inside LAN interface for private network\n"
"pass out quick on xl0 all\n"
"pass in quick on xl0 all\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2076
msgid ""
"The rules for the public interface's outbound and inbound sections should "
"have the most frequently matched rules placed before less commonly matched "
"rules, with the last rule in the section blocking and logging all packets "
"for that interface and direction."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2080
msgid ""
"This set of rules defines the outbound section of the public interface named "
"[.filename]#dc0#. These rules keep state and identify the specific services "
"that internal systems are authorized for public Internet access. All the "
"rules use `quick` and specify the appropriate port numbers and, where "
"applicable, destination addresses."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2086
#, no-wrap
msgid ""
"# interface facing Internet (outbound)\n"
"# Matches session start requests originating from or behind the\n"
"# firewall, destined for the Internet.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2092
#, no-wrap
msgid ""
"# Allow outbound access to public DNS servers.\n"
"# Replace x.x.x.x with address listed in /etc/resolv.conf.\n"
"# Repeat for each DNS server.\n"
"pass out quick on dc0 proto tcp from any to x.x.x.x port = 53 flags S keep state\n"
"pass out quick on dc0 proto udp from any to x.x.x.x port = 53 keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2099
#, no-wrap
msgid ""
"# Allow access to ISP's specified DHCP server for cable or DSL networks.\n"
"# Use the first rule, then check log for the IP address of DHCP server.\n"
"# Then, uncomment the second rule, replace z.z.z.z with the IP address,\n"
"# and comment out the first rule\n"
"pass out log quick on dc0 proto udp from any to any port = 67 keep state\n"
"#pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2103
#, no-wrap
msgid ""
"# Allow HTTP and HTTPS\n"
"pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state\n"
"pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2107
#, no-wrap
msgid ""
"# Allow email\n"
"pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state\n"
"pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2110
#, no-wrap
msgid ""
"# Allow NTP\n"
"pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2113
#, no-wrap
msgid ""
"# Allow FTP\n"
"pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2116
#, no-wrap
msgid ""
"# Allow SSH\n"
"pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2119
#, no-wrap
msgid ""
"# Allow ping\n"
"pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2122
#, no-wrap
msgid ""
"# Block and log everything else\n"
"block out log first quick on dc0 all\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2126
msgid ""
"This example of the rules in the inbound section of the public interface "
"blocks all undesirable packets first. This reduces the number of packets "
"that are logged by the last rule."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2140
#, no-wrap
msgid ""
"# interface facing Internet (inbound)\n"
"# Block all inbound traffic from non-routable or reserved address spaces\n"
"block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918 private IP\n"
"block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918 private IP\n"
"block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918 private IP\n"
"block in quick on dc0 from 127.0.0.0/8 to any #loopback\n"
"block in quick on dc0 from 0.0.0.0/8 to any #loopback\n"
"block in quick on dc0 from 169.254.0.0/16 to any #DHCP auto-config\n"
"block in quick on dc0 from 192.0.2.0/24 to any #reserved for docs\n"
"block in quick on dc0 from 204.152.64.0/23 to any #Sun cluster interconnect\n"
"block in quick on dc0 from 224.0.0.0/3 to any #Class D & E multicast\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2144
#, no-wrap
msgid ""
"# Block fragments and too short tcp packets\n"
"block in quick on dc0 all with frags\n"
"block in quick on dc0 proto tcp all with short\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2148
#, no-wrap
msgid ""
"# block source routed packets\n"
"block in quick on dc0 all with opt lsrr\n"
"block in quick on dc0 all with opt ssrr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2151
#, no-wrap
msgid ""
"# Block OS fingerprint attempts and log first occurrence\n"
"block in log first quick on dc0 proto tcp from any to any flags FUP\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2154
#, no-wrap
msgid ""
"# Block anything with special options\n"
"block in quick on dc0 all with ipopts\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2158
#, no-wrap
msgid ""
"# Block public pings and ident\n"
"block in quick on dc0 proto icmp all icmp-type 8\n"
"block in quick on dc0 proto tcp from any to any port = 113\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2164
#, no-wrap
msgid ""
"# Block incoming Netbios services\n"
"block in log first quick on dc0 proto tcp/udp from any to any port = 137\n"
"block in log first quick on dc0 proto tcp/udp from any to any port = 138\n"
"block in log first quick on dc0 proto tcp/udp from any to any port = 139\n"
"block in log first quick on dc0 proto tcp/udp from any to any port = 81\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2168
msgid ""
"Any time there are logged messages on a rule with the `log first` option, "
"run `ipfstat -hio` to evaluate how many times the rule has been matched. A "
"large number of matches may indicate that the system is under attack."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2171
msgid ""
"The rest of the rules in the inbound section define which connections are "
"allowed to be initiated from the Internet. The last rule denies all "
"connections which were not explicitly allowed by previous rules in this "
"section."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2177
#, no-wrap
msgid ""
"# Allow traffic in from ISP's DHCP server. Replace z.z.z.z with\n"
"# the same IP address used in the outbound section.\n"
"pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2180
#, no-wrap
msgid ""
"# Allow public connections to specified internal web server\n"
"pass in quick on dc0 proto tcp from any to x.x.x.x port = 80 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2183
#, no-wrap
msgid ""
"# Block and log only first occurrence of all remaining traffic.\n"
"block in log first quick on dc0 all\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2185
#, no-wrap
msgid "Configuring NAT"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2188
msgid ""
"To enable NAT, add these statements to [.filename]#/etc/rc.conf# and specify "
"the name of the file containing the NAT rules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2194
#, no-wrap
msgid ""
"gateway_enable=\"YES\"\n"
"ipnat_enable=\"YES\"\n"
"ipnat_rules=\"/etc/ipnat.rules\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2199
msgid ""
"NAT rules are flexible and can accomplish many different things to fit the "
"needs of both commercial and home users. The rule syntax presented here has "
"been simplified to demonstrate common usage. For a complete rule syntax "
"description, refer to man:ipnat[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2201
msgid ""
"The basic syntax for a NAT rule is as follows, where `map` starts the rule "
"and _IF_ should be replaced with the name of the external interface:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2205
#, no-wrap
msgid "map IF LAN_IP_RANGE -> PUBLIC_ADDRESS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2210
msgid ""
"The _LAN_IP_RANGE_ is the range of IP addresses used by internal clients. "
"Usually, it is a private address range such as `192.168.1.0/24`. The "
"_PUBLIC_ADDRESS_ can either be the static external IP address or the keyword "
"`0/32` which represents the IP address assigned to _IF_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2217
msgid ""
"In IPF, when a packet arrives at the firewall from the LAN with a public "
"destination, it first passes through the outbound rules of the firewall "
"ruleset. Then, the packet is passed to the NAT ruleset which is read from "
"the top down, where the first matching rule wins. IPF tests each NAT rule "
"against the packet's interface name and source IP address. When a packet's "
"interface name matches a NAT rule, the packet's source IP address in the "
"private LAN is checked to see if it falls within the IP address range "
"specified in _LAN_IP_RANGE_. On a match, the packet has its source IP "
"address rewritten with the public IP address specified by _PUBLIC_ADDRESS_. "
"IPF posts an entry in its internal NAT table so that when the packet returns "
"from the Internet, it can be mapped back to its original private IP address "
"before being passed to the firewall rules for further processing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2220
msgid ""
"For networks that have large numbers of internal systems or multiple "
"subnets, the process of funneling every private IP address into a single "
"public IP address becomes a resource problem. Two methods are available to "
"relieve this issue."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2223
msgid ""
"The first method is to assign a range of ports to use as source ports. By "
"adding the `portmap` keyword, NAT can be directed to only use source ports "
"in the specified range:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2227
#, no-wrap
msgid "map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2230
msgid ""
"Alternately, use the `auto` keyword which tells NAT to determine the ports "
"that are available for use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2234
#, no-wrap
msgid "map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2239
msgid ""
"The second method is to use a pool of public addresses. This is useful when "
"there are too many LAN addresses to fit into a single public address and a "
"block of public IP addresses is available. These public addresses can be "
"used as a pool from which NAT selects an IP address as a packet's address is "
"mapped on its way out."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2242
msgid ""
"The range of public IP addresses can be specified using a netmask or CIDR "
"notation. These two rules are equivalent:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2247
#, no-wrap
msgid ""
"map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0\n"
"map dc0 192.168.1.0/24 -> 204.134.75.0/24\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2252
msgid ""
"A common practice is to have a publically accessible web server or mail "
"server segregated to an internal network segment. The traffic from these "
"servers still has to undergo NAT, but port redirection is needed to direct "
"inbound traffic to the correct server. For example, to map a web server "
"using the internal address `10.0.10.25` to its public IP address of "
"`20.20.20.5`, use this rule:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2256
#, no-wrap
msgid "rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2259
msgid ""
"If it is the only web server, this rule would also work as it redirects all "
"external HTTP requests to `10.0.10.25`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2263
#, no-wrap
msgid "rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2268
msgid ""
"IPF has a built in FTP proxy which can be used with NAT. It monitors all "
"outbound traffic for active or passive FTP connection requests and "
"dynamically creates temporary filter rules containing the port number used "
"by the FTP data channel. This eliminates the need to open large ranges of "
"high order ports for FTP connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2271
msgid ""
"In this example, the first rule calls the proxy for outbound FTP traffic "
"from the internal LAN. The second rule passes the FTP traffic from the "
"firewall to the Internet, and the third rule handles all non-FTP traffic "
"from the internal LAN:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2277
#, no-wrap
msgid ""
"map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcp\n"
"map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcp\n"
"map dc0 10.0.10.0/29 -> 0/32\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2281
msgid ""
"The FTP `map` rules go before the NAT rule so that when a packet matches an "
"FTP rule, the FTP proxy creates temporary filter rules to let the FTP "
"session packets pass and undergo NAT. All LAN packets that are not FTP will "
"not match the FTP rules but will undergo NAT if they match the third rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2284
msgid ""
"Without the FTP proxy, the following firewall rules would instead be "
"needed. Note that without the proxy, all ports above `1024` need to be "
"allowed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2290
#, no-wrap
msgid ""
"# Allow out LAN PC client FTP to public Internet\n"
"# Active and passive modes\n"
"pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2293
#, no-wrap
msgid ""
"# Allow out passive mode data channel high order port numbers\n"
"pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2296
#, no-wrap
msgid ""
"# Active mode let data channel in from FTP server\n"
"pass in quick on rl0 proto tcp from any to any port = 20 flags S keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2300
msgid ""
"Whenever the file containing the NAT rules is edited, run `ipnat` with `-CF` "
"to delete the current NAT rules and flush the contents of the dynamic "
"translation table. Include `-f` and specify the name of the NAT ruleset to "
"load:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2304
#, no-wrap
msgid "# ipnat -CF -f /etc/ipnat.rules\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2307
msgid "To display the NAT statistics:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2311
#, no-wrap
msgid "# ipnat -s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2314
msgid "To list the NAT table's current mappings:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2318
#, no-wrap
msgid "# ipnat -l\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2321
msgid ""
"To turn verbose mode on and display information relating to rule processing "
"and active rules and table entries:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2325
#, no-wrap
msgid "# ipnat -v\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2327
#, no-wrap
msgid "Viewing IPF Statistics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2331
msgid ""
"IPF includes man:ipfstat[8] which can be used to retrieve and display "
"statistics which are gathered as packets match rules as they go through the "
"firewall. Statistics are accumulated since the firewall was last started or "
"since the last time they were reset to zero using `ipf -Z`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2333
msgid "The default `ipfstat` output looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2353
#, no-wrap
msgid ""
"input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0\n"
" output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0\n"
" input packets logged: blocked 99286 passed 0\n"
" output packets logged: blocked 0 passed 0\n"
" packets logged: input 0 output 0\n"
" log failures: input 3898 output 0\n"
" fragment state(in): kept 0 lost 0\n"
" fragment state(out): kept 0 lost 0\n"
" packet state(in): kept 169364 lost 0\n"
" packet state(out): kept 431395 lost 0\n"
" ICMP replies: 0 TCP RSTs sent: 0\n"
" Result cache hits(in): 1215208 (out): 1098963\n"
" IN Pullups succeeded: 2 failed: 0\n"
" OUT Pullups succeeded: 0 failed: 0\n"
" Fastroute successes: 0 failures: 0\n"
" TCP cksum fails(in): 0 (out): 0\n"
" Packet log flags set: (0)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2359
msgid ""
"Several options are available. When supplied with either `-i` for inbound "
"or `-o` for outbound, the command will retrieve and display the appropriate "
"list of filter rules currently installed and in use by the kernel. To also "
"see the rule numbers, include `-n`. For example, `ipfstat -on` displays the "
"outbound rules table with rule numbers:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2365
#, no-wrap
msgid ""
"@1 pass out on xl0 from any to any\n"
"@2 block out on dc0 from any to any\n"
"@3 pass out quick on dc0 proto tcp/udp from any to any keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2369
msgid ""
"Include `-h` to prefix each rule with a count of how many times the rule was "
"matched. For example, `ipfstat -oh` displays the outbound internal rules "
"table, prefixing each rule with its usage count:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2375
#, no-wrap
msgid ""
"2451423 pass out on xl0 from any to any\n"
"354727 block out on dc0 from any to any\n"
"430918 pass out quick on dc0 proto tcp/udp from any to any keep state\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2381
msgid ""
"To display the state table in a format similar to man:top[1], use `ipfstat -"
"t`. When the firewall is under attack, this option provides the ability to "
"identify and see the attacking packets. The optional sub-flags give the "
"ability to select the destination or source IP, port, or protocol to be "
"monitored in real time. Refer to man:ipfstat[8] for details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2382
#, no-wrap
msgid "IPF Logging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2386
msgid ""
"IPF provides `ipmon`, which can be used to write the firewall's logging "
"information in a human readable format. It requires that `options "
"IPFILTER_LOG` be first added to a custom kernel using the instructions in "
"crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2389
msgid ""
"This command is typically run in daemon mode in order to provide a "
"continuous system log file so that logging of past events may be reviewed. "
"Since FreeBSD has a built in man:syslogd[8] facility to automatically rotate "
"system logs, the default [.filename]#rc.conf# `ipmon_flags` statement uses `-"
"Ds`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2396
#, no-wrap
msgid ""
"ipmon_flags=\"-Ds\" # D = start as daemon\n"
" # s = log to syslog\n"
" # v = log tcp window, ack, seq\n"
" # n = map IP & port to names\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2400
msgid ""
"Logging provides the ability to review, after the fact, information such as "
"which packets were dropped, what addresses they came from, and where they "
"were going. This information is useful in tracking down attackers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2405
msgid ""
"Once the logging facility is enabled in [.filename]#rc.conf# and started "
"with `service ipmon start`, IPF will only log the rules which contain the "
"`log` keyword. The firewall administrator decides which rules in the "
"ruleset should be logged and normally only deny rules are logged. It is "
"customary to include the `log` keyword in the last rule in the ruleset. "
"This makes it possible to see all the packets that did not match any of the "
"rules in the ruleset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2408
msgid ""
"By default, `ipmon -Ds` mode uses `local0` as the logging facility. The "
"following logging levels can be used to further segregate the logged data:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2415
#, no-wrap
msgid ""
"LOG_INFO - packets logged using the \"log\" keyword as the action rather than pass or block.\n"
"LOG_NOTICE - packets logged which are also passed\n"
"LOG_WARNING - packets logged which are also blocked\n"
"LOG_ERR - packets which have been logged and which can be considered short due to an incomplete header\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2418
msgid ""
"In order to setup IPF to log all data to [.filename]#/var/log/ipfilter.log#, "
"first create the empty file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2422
#, no-wrap
msgid "# touch /var/log/ipfilter.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2425
msgid ""
"Then, to write all logged messages to the specified file, add the following "
"statement to [.filename]#/etc/syslog.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2429
#, no-wrap
msgid "local0.* /var/log/ipfilter.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2432
msgid ""
"To activate the changes and instruct man:syslogd[8] to read the modified [."
"filename]#/etc/syslog.conf#, run `service syslogd reload`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2434
msgid ""
"Do not forget to edit [.filename]#/etc/newsyslog.conf# to rotate the new log "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2437
msgid ""
"Messages generated by `ipmon` consist of data fields separated by white "
"space. Fields common to all messages are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2439
msgid "The date of packet receipt."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2440
msgid ""
"The time of packet receipt. This is in the form HH:MM:SS.F, for hours, "
"minutes, seconds, and fractions of a second."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2441
msgid "The name of the interface that processed the packet."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2442
msgid "The group and rule number of the rule in the format `@0:17`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2443
msgid ""
"The action: `p` for passed, `b` for blocked, `S` for a short packet, `n` did "
"not match any rules, and `L` for a log rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2444
msgid ""
"The addresses written as three fields: the source address and port separated "
"by a comma, the -> symbol, and the destination address and port. For "
"example: `209.53.17.22,80 -> 198.73.220.17,1722`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2445
msgid "`PR` followed by the protocol name or number: for example, `PR tcp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2446
msgid ""
"`len` followed by the header length and total length of the packet: for "
"example, `len 20 40`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2449
msgid ""
"If the packet is a TCP packet, there will be an additional field starting "
"with a hyphen followed by letters corresponding to any flags that were set. "
"Refer to man:ipf[5] for a list of letters and their flags."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2452
msgid ""
"If the packet is an ICMP packet, there will be two fields at the end: the "
"first always being \"icmp\" and the next being the ICMP message and sub-"
"message type, separated by a slash. For example: `icmp 3/3` for a port "
"unreachable message."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2454
#, no-wrap
msgid "Blacklistd"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2461
msgid ""
"Blacklistd is a daemon listening to sockets awaiting to receive "
"notifications from other daemons about connection attempts that failed or "
"were successful. It is most widely used in blocking too many connection "
"attempts on open ports. A prime example is SSH running on the internet "
"getting a lot of requests from bots or scripts trying to guess passwords and "
"gain access. Using blacklistd, the daemon can notify the firewall to create "
"a filter rule to block excessive connection attempts from a single source "
"after a number of tries. Blacklistd was first developed on NetBSD and "
"appeared there in version 7. FreeBSD 11 imported blacklistd from NetBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2466
msgid ""
"This chapter describes how to set up blacklistd, configure it, and provides "
"examples on how to use it. Readers should be familiar with basic firewall "
"concepts like rules. For details, refer to the firewall chapter. PF is "
"used in the examples, but other firewalls available on FreeBSD should be "
"able to work with blacklistd, too."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2467
#, no-wrap
msgid "Enabling Blacklistd"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2473
msgid ""
"The main configuration for blacklistd is stored in man:blacklistd.conf[5]. "
"Various command line options are also available to change blacklistd's run-"
"time behavior. Persistent configuration across reboots should be stored in "
"[.filename]#/etc/blacklistd.conf#. To enable the daemon during system boot, "
"add a `blacklistd_enable` line to [.filename]#/etc/rc.conf# like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2477
#, no-wrap
msgid "# sysrc blacklistd_enable=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2480
msgid "To start the service manually, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2484
#, no-wrap
msgid "# service blacklistd start\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2486
#, no-wrap
msgid "Creating a Blacklistd Ruleset"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2491
msgid ""
"Rules for blacklistd are configured in man:blacklistd.conf[5] with one entry "
"per line. Each rule contains a tuple separated by spaces or tabs. Rules "
"either belong to a `local` or a `remote`, which applies to the machine where "
"blacklistd is running or an outside source, respectively."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2492
#, no-wrap
msgid "Local Rules"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2495
msgid "An example blacklistd.conf entry for a local rule looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2500
#, no-wrap
msgid ""
"[local]\n"
"ssh stream * * * 3 24h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2504
msgid ""
"All rules that follow the `[local]` section are treated as local rules "
"(which is the default), applying to the local machine. When a `[remote]` "
"section is encountered, all rules that follow it are handled as remote "
"machine rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2512
msgid ""
"Seven fields separated by either tabs or spaces define a rule. The first "
"four fields identify the traffic that should be blocklisted. The three "
"fields that follow define backlistd's behavior. Wildcards are denoted as "
"asterisks (`*`), matching anything in this field. The first field defines "
"the location. In local rules, these are the network ports. The syntax for "
"the location field is as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2516
#, no-wrap
msgid "[address|interface][/mask][:port]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2520
msgid ""
"Addresses can be specified as IPv4 in numeric format or IPv6 in square "
"brackets. An interface name like `_em0_` can also be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2524
msgid ""
"The socket type is defined by the second field. TCP sockets are of type "
"`stream`, whereas UDP is denoted as `dgram`. The example above uses TCP, "
"since SSH is using that protocol."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2528
msgid ""
"A protocol can be used in the third field of a blacklistd rule. The "
"following protocols can be used: `tcp`, `udp`, `tcp6`, `udp6`, or numeric. "
"A wildcard, like in the example, is typically used to match all protocols "
"unless there is a reason to distinguish traffic by a certain protocol."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2531
msgid ""
"In the fourth field, the effective user or owner of the daemon process that "
"is reporting the event is defined. The username or UID can be used here, as "
"well as a wildcard (see example rule above)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2534
msgid ""
"The packet filter rule name is declared by the fifth field, which starts the "
"behavior part of the rule. By default, blacklistd puts all blocks under a "
"pf anchor called `blacklistd` in [.filename]#pf.conf# like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2540
#, no-wrap
msgid ""
"anchor \"blacklistd/*\" in on $ext_if\n"
"block in\n"
"pass out\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2546
msgid ""
"For separate blocklists, an anchor name can be used in this field. In other "
"cases, the wildcard will suffice. When a name starts with a hyphen (`-`) it "
"means that an anchor with the default rule name prepended should be used. A "
"modified example from the above using the hyphen would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2550
#, no-wrap
msgid "ssh stream * * -ssh 3 24h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2553
msgid ""
"With such a rule, any new blocklist rules are added to an anchor called "
"`blacklistd-ssh`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2557
msgid ""
"To block whole subnets for a single rule violation, a `/` in the rule name "
"can be used. This causes the remaining portion of the name to be "
"interpreted as the mask to be applied to the address specified in the rule. "
"For example, this rule would block every address adjoining `/24`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2561
#, no-wrap
msgid "22 stream tcp * */24 3 24h\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2567
msgid ""
"It is important to specify the proper protocol here. IPv4 and IPv6 "
"treat /24 differently, that is the reason why `*` cannot be used in the "
"third field for this rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2570
msgid ""
"This rule defines that if any one host in that network is misbehaving, "
"everything else on that network will be blocked, too."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2574
msgid ""
"The sixth field, called `nfail`, sets the number of login failures required "
"to blocklist the remote IP in question. When a wildcard is used at this "
"position, it means that blocks will never happen. In the example rule "
"above, a limit of three is defined meaning that after three attempts to log "
"into SSH on one connection, the IP is blocked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2577
msgid ""
"The last field in a blacklistd rule definition specifies how long a host is "
"blocklisted. The default unit is seconds, but suffixes like `m`, `h`, and "
"`d` can also be specified for minutes, hours, and days, respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2581
msgid ""
"The example rule in its entirety means that after three times authenticating "
"to SSH will result in a new PF block rule for that host. Rule matches are "
"performed by first checking local rules one after another, from most "
"specific to least specific. When a match occurs, the `remote` rules are "
"applied and the name, `nfail`, and disable fields are changed by the "
"`remote` rule that matched."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2582
#, no-wrap
msgid "Remote Rules"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2588
msgid ""
"Remote rules are used to specify how blacklistd changes its behavior "
"depending on the remote host currently being evaluated. Each field in a "
"remote rule is the same as in a local rule. The only difference is in the "
"way blacklistd is using them. To explain it, this example rule is used:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2593
#, no-wrap
msgid ""
"[remote]\n"
"203.0.113.128/25 * * * =/25 = 48h\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2598
msgid ""
"The address field can be an IP address (either v4 or v6), a port or both. "
"This allows setting special rules for a specific remote address range like "
"in this example. The fields for socket type, protocol and owner are "
"identically interpreted as in the local rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2604
msgid ""
"The name fields is different though: the equal sign (`=`) in a remote rule "
"tells blacklistd to use the value from the matching local rule. It means "
"that the firewall rule entry is taken and the `/25` prefix (a netmask of "
"`255.255.255.128`) is added. When a connection from that address range is "
"blocklisted, the entire subnet is affected. A PF anchor name can also be "
"used here, in which case blacklistd will add rules for this address block to "
"the anchor of that name. The default table is used when a wildcard is "
"specified."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2608
msgid ""
"A custom number of failures in the `nfail` column can be defined for an "
"address. This is useful for exceptions to a specific rule, to maybe allow "
"someone a less strict application of rules or a bit more leniency in login "
"tries. Blocking is disabled when an asterisk is used in this sixth field."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2610
msgid ""
"Remote rules allow a stricter enforcement of limits on attempts to log in "
"compared to attempts coming from a local network like an office."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2611
#, no-wrap
msgid "Blacklistd Client Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2616
msgid ""
"There are a few software packages in FreeBSD that can utilize blacklistd's "
"functionality. The two most prominent ones are man:ftpd[8] and man:sshd[8] "
"to block excessive connection attempts. To activate blacklistd in the SSH "
"daemon, add the following line to [.filename]#/etc/ssh/sshd_config#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2620
#, no-wrap
msgid "UseBlacklist yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2623
msgid "Restart sshd afterwards to make these changes take effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2625
msgid ""
"Blacklisting for man:ftpd[8] is enabled using `-B`, either in [.filename]#/"
"etc/inetd.conf# or as a flag in [.filename]#/etc/rc.conf# like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2629
#, no-wrap
msgid "ftpd_flags=\"-B\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2632
msgid "That is all that is needed to make these programs talk to blacklistd."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2633
#, no-wrap
msgid "Blacklistd Management"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2638
msgid ""
"Blacklistd provides the user with a management utility called man:"
"blacklistctl[8]. It displays blocked addresses and networks that are "
"blocklisted by the rules defined in man:blacklistd.conf[5]. To see the list "
"of currently blocked hosts, use `dump` combined with `-b` like this."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2644
#, no-wrap
msgid ""
"# blacklistctl dump -b\n"
" address/ma:port id nfail last access\n"
"213.0.123.128/25:22 OK 6/3 2019/06/08 14:30:19\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2650
msgid ""
"This example shows that there were 6 out of three permitted attempts on port "
"22 coming from the address range `213.0.123.128/25`. There are more "
"attempts listed than are allowed because SSH allows a client to try multiple "
"logins on a single TCP connection. A connection that is currently going on "
"is not stopped by blacklistd. The last connection attempt is listed in the "
"`last access` column of the output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2652
msgid ""
"To see the remaining time that this host will be on the blocklist, add `-r` "
"to the previous command."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2658
#, no-wrap
msgid ""
"# blacklistctl dump -br\n"
" address/ma:port id nfail remaining time\n"
"213.0.123.128/25:22 OK 6/3 36s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2661
msgid ""
"In this example, there are 36s seconds left until this host will not be "
"blocked any more."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2662
#, no-wrap
msgid "Removing Hosts from the Block List"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2673
msgid ""
"Sometimes it is necessary to remove a host from the block list before the "
"remaining time expires. Unfortunately, there is no functionality in "
"blacklistd to do that. However, it is possible to remove the address from "
"the PF table using pfctl. For each blocked port, there is a child anchor "
"inside the blacklistd anchor defined in [.filename]#/etc/pf.conf#. For "
"example, if there is a child anchor for blocking port 22 it is called "
"`blacklistd/22`. There is a table inside that child anchor that contains "
"the blocked addresses. This table is called port followed by the port "
"number. In this example, it would be called `port22`. With that "
"information at hand, it is now possible to use man:pfctl[8] to display all "
"addresses listed like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2680
#, no-wrap
msgid ""
"# pfctl -a blacklistd/22 -t port22 -T show\n"
"...\n"
"213.0.123.128/25\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2683
msgid ""
"After identifying the address to be unblocked from the list, the following "
"command removes it from the list:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2687
#, no-wrap
msgid "# pfctl -a blacklistd/22 -t port22 -T delete 213.0.123.128/25\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/firewalls/_index.adoc:2691
msgid ""
"The address is now removed from PF, but will still show up in the "
"blacklistctl list, since it does not know about any changes made in PF. The "
"entry in blacklistd's database will eventually expire and be removed from "
"its output. The entry will be added again if the host is matching one of "
"the block rules in blacklistd again."
msgstr ""
diff --git a/documentation/content/en/books/handbook/geom/_index.po b/documentation/content/en/books/handbook/geom/_index.po
index 6fe47e1a77..32e1128ae2 100644
--- a/documentation/content/en/books/handbook/geom/_index.po
+++ b/documentation/content/en/books/handbook/geom/_index.po
@@ -1,2364 +1,2364 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/geom/_index.adoc:1
#, no-wrap
msgid "In FreeBSD, the GEOM framework permits access and control to classes, such as Master Boot Records and BSD labels, through the use of providers, or the disk devices in /dev."
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/geom/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/geom/_index.adoc:1
#, no-wrap
-msgid "Chapter 19. GEOM: Modular Disk Transformation Framework"
+msgid "Chapter 20. GEOM: Modular Disk Transformation Framework"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/geom/_index.adoc:15
#, no-wrap
msgid "GEOM: Modular Disk Transformation Framework"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:57
msgid ""
"In FreeBSD, the GEOM framework permits access and control to classes, such "
"as Master Boot Records and BSD labels, through the use of providers, or the "
"disk devices in [.filename]#/dev#. By supporting various software RAID "
"configurations, GEOM transparently provides access to the operating system "
"and operating system utilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:61
msgid ""
"This chapter covers the use of disks under the GEOM framework in FreeBSD. "
"This includes the major RAID control utilities which use the framework for "
"configuration. This chapter is not a definitive guide to RAID "
"configurations and only GEOM-supported RAID classifications are discussed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:63
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:65
msgid "What type of RAID support is available through GEOM."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:66
msgid ""
"How to use the base utilities to configure, maintain, and manipulate the "
"various RAID levels."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:67
msgid ""
"How to mirror, stripe, encrypt, and remotely connect disk devices through "
"GEOM."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:68
msgid "How to troubleshoot disks attached to the GEOM framework."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:70
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:72
msgid ""
"Understand how FreeBSD treats disk devices (crossref:disks[disks,Storage])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:73
msgid ""
"Know how to configure and install a new kernel (crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:75
#, no-wrap
msgid "RAID0 - Striping"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:80
msgid ""
"Striping combines several disk drives into a single volume. Striping can be "
"performed through the use of hardware RAID controllers. The GEOM disk "
"subsystem provides software support for disk striping, also known as RAID0, "
"without the need for a RAID disk controller."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:84
msgid ""
"In RAID0, data is split into blocks that are written across all the drives "
"in the array. As seen in the following illustration, instead of having to "
"wait on the system to write 256k to one disk, RAID0 can simultaneously write "
"64k to each of the four disks in the array, offering superior I/O "
"performance. This performance can be enhanced further by using multiple "
"disk controllers."
msgstr ""
#. type: Positional ($1) AttributeList argument for macro 'image'
#: documentation/content/en/books/handbook/geom/_index.adoc:85
#, no-wrap
msgid "Disk Striping Illustration"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/geom/_index.adoc:85
#, no-wrap
msgid "striping.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:88
msgid ""
"Each disk in a RAID0 stripe must be of the same size, since I/O requests are "
"interleaved to read or write to multiple disks in parallel."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:94
msgid ""
"RAID0 does _not_ provide any redundancy. This means that if one disk in the "
"array fails, all of the data on the disks is lost. If the data is "
"important, implement a backup strategy that regularly saves backups to a "
"remote system or device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:98
msgid ""
"The process for creating a software, GEOM-based RAID0 on a FreeBSD system "
"using commodity disks is as follows. Once the stripe is created, refer to "
"man:gstripe[8] for more information on how to control an existing stripe."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/geom/_index.adoc:102
#, no-wrap
msgid "*Procedure: Creating a Stripe of Unformatted ATA Disks*\n"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/geom/_index.adoc:104
msgid "Load the [.filename]#geom_stripe.ko# module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:108
#, no-wrap
msgid "# kldload geom_stripe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:111
msgid ""
"Ensure that a suitable mount point exists. If this volume will become a root "
"partition, then temporarily use another mount point such as [.filename]#/"
"mnt#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:112
msgid ""
"Determine the device names for the disks which will be striped, and create "
"the new stripe device. For example, to stripe two unused and unpartitioned "
"ATA disks with device names of [.filename]#/dev/ad2# and [.filename]#/dev/"
"ad3#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:119
#, no-wrap
msgid ""
"# gstripe label -v st0 /dev/ad2 /dev/ad3\n"
"Metadata value stored on /dev/ad2.\n"
"Metadata value stored on /dev/ad3.\n"
"Done.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:122
msgid ""
"Write a standard label, also known as a partition table, on the new volume "
"and install the default bootstrap code:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:126
#, no-wrap
msgid "# bsdlabel -wB /dev/stripe/st0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:129
msgid ""
"This process should create two other devices in [.filename]#/dev/stripe# in "
"addition to [.filename]#st0#. Those include [.filename]#st0a# and [."
"filename]#st0c#. At this point, a UFS file system can be created on [."
"filename]#st0a# using `newfs`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:133
#, no-wrap
msgid "# newfs -U /dev/stripe/st0a\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:137
msgid ""
"Many numbers will glide across the screen, and after a few seconds, the "
"process will be complete. The volume has been created and is ready to be "
"mounted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:138
msgid "To manually mount the created disk stripe:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:142
#, no-wrap
msgid "# mount /dev/stripe/st0a /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:145
msgid ""
"To mount this striped file system automatically during the boot process, "
"place the volume information in [.filename]#/etc/fstab#. In this example, a "
"permanent mount point, named [.filename]#stripe#, is created:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:151
#, no-wrap
msgid ""
"# mkdir /stripe\n"
"# echo \"/dev/stripe/st0a /stripe ufs rw 2 2\" \\\n"
">> /etc/fstab\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:154
msgid ""
"The [.filename]#geom_stripe.ko# module must also be automatically loaded "
"during system initialization, by adding a line to [.filename]#/boot/loader."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:158
#, no-wrap
msgid "# echo 'geom_stripe_load=\"YES\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:162
#, no-wrap
msgid "RAID1 - Mirroring"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/geom/_index.adoc:169
msgid ""
"RAID1, or _mirroring_, is the technique of writing the same data to more "
"than one disk drive. Mirrors are usually used to guard against data loss "
"due to drive failure. Each drive in a mirror contains an identical copy of "
"the data. When an individual drive fails, the mirror continues to work, "
"providing data from the drives that are still functioning. The computer "
"keeps running, and the administrator has time to replace the failed drive "
"without user interruption."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/geom/_index.adoc:174
msgid ""
"Two common situations are illustrated in these examples. The first creates "
"a mirror out of two new drives and uses it as a replacement for an existing "
"single drive. The second example creates a mirror on a single new drive, "
"copies the old drive's data to it, then inserts the old drive into the "
"mirror. While this procedure is slightly more complicated, it only requires "
"one new drive."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/geom/_index.adoc:179
msgid ""
"Traditionally, the two drives in a mirror are identical in model and "
"capacity, but man:gmirror[8] does not require that. Mirrors created with "
"dissimilar drives will have a capacity equal to that of the smallest drive "
"in the mirror. Extra space on larger drives will be unused. Drives "
"inserted into the mirror later must have at least as much capacity as the "
"smallest drive already in the mirror."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:183
msgid ""
"The mirroring procedures shown here are non-destructive, but as with any "
"major disk operation, make a full backup first."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:189
msgid ""
"While man:dump[8] is used in these procedures to copy file systems, it does "
"not work on file systems with soft updates journaling. See man:tunefs[8] "
"for information on detecting and disabling soft updates journaling."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:192
#, no-wrap
msgid "Metadata Issues"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:197
msgid ""
"Many disk systems store metadata at the end of each disk. Old metadata "
"should be erased before reusing the disk for a mirror. Most problems are "
"caused by two particular types of leftover metadata: GPT partition tables "
"and old metadata from a previous mirror."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:200
msgid ""
"GPT metadata can be erased with man:gpart[8]. This example erases both "
"primary and backup GPT partition tables from disk [.filename]#ada8#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:204
#, no-wrap
msgid "# gpart destroy -F ada8\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:208
msgid ""
"A disk can be removed from an active mirror and the metadata erased in one "
"step using man:gmirror[8]. Here, the example disk [.filename]#ada8# is "
"removed from the active mirror [.filename]#gm4#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:212
#, no-wrap
msgid "# gmirror remove gm4 ada8\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:215
msgid ""
"If the mirror is not running, but old mirror metadata is still on the disk, "
"use `gmirror clear` to remove it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:219
#, no-wrap
msgid "# gmirror clear ada8\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:224
msgid ""
"man:gmirror[8] stores one block of metadata at the end of the disk. As GPT "
"partition schemes also store metadata at the end of the disk, mirroring "
"entire GPT disks with man:gmirror[8] is not recommended. MBR partitioning "
"is used here because it only stores a partition table at the start of the "
"disk and does not conflict with the mirror metadata."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:226
#, no-wrap
msgid "Creating a Mirror with Two New Disks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:231
msgid ""
"In this example, FreeBSD has already been installed on a single disk, [."
"filename]#ada0#. Two new disks, [.filename]#ada1# and [.filename]#ada2#, "
"have been connected to the system. A new mirror will be created on these "
"two disks and used to replace the old single disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:234
msgid ""
"The [.filename]#geom_mirror.ko# kernel module must either be built into the "
"kernel or loaded at boot- or run-time. Manually load the kernel module now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:238
#: documentation/content/en/books/handbook/geom/_index.adoc:360
#, no-wrap
msgid "# gmirror load\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:241
msgid "Create the mirror with the two new drives:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:245
#, no-wrap
msgid "# gmirror label -v gm0 /dev/ada1 /dev/ada2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:249
msgid ""
"[.filename]#gm0# is a user-chosen device name assigned to the new mirror. "
"After the mirror has been started, this device name appears in [.filename]#/"
"dev/mirror/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:253
msgid ""
"MBR and bsdlabel partition tables can now be created on the mirror with man:"
"gpart[8]. This example uses a traditional file system layout, with "
"partitions for [.filename]#/#, swap, [.filename]#/var#, [.filename]#/tmp#, "
"and [.filename]#/usr#. A single [.filename]#/# and a swap partition will "
"also work."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:255
msgid ""
"Partitions on the mirror do not have to be the same size as those on the "
"existing disk, but they must be large enough to hold all the data already "
"present on [.filename]#ada0#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:265
#, no-wrap
msgid ""
"# gpart create -s MBR mirror/gm0\n"
"# gpart add -t freebsd -a 4k mirror/gm0\n"
"# gpart show mirror/gm0\n"
"=> 63 156301423 mirror/gm0 MBR (74G)\n"
" 63 63 - free - (31k)\n"
" 126 156301299 1 freebsd (74G)\n"
" 156301425 61 - free - (30k)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:284
#, no-wrap
msgid ""
"# gpart create -s BSD mirror/gm0s1\n"
"# gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1\n"
"# gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1\n"
"# gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1\n"
"# gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1\n"
"# gpart add -t freebsd-ufs -a 4k mirror/gm0s1\n"
"# gpart show mirror/gm0s1\n"
"=> 0 156301299 mirror/gm0s1 BSD (74G)\n"
" 0 2 - free - (1.0k)\n"
" 2 4194304 1 freebsd-ufs (2.0G)\n"
" 4194306 8388608 2 freebsd-swap (4.0G)\n"
" 12582914 4194304 4 freebsd-ufs (2.0G)\n"
" 16777218 2097152 5 freebsd-ufs (1.0G)\n"
" 18874370 137426928 6 freebsd-ufs (65G)\n"
" 156301298 1 - free - (512B)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:287
#: documentation/content/en/books/handbook/geom/_index.adoc:505
msgid ""
"Make the mirror bootable by installing bootcode in the MBR and bsdlabel and "
"setting the active slice:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:293
#: documentation/content/en/books/handbook/geom/_index.adoc:511
#, no-wrap
msgid ""
"# gpart bootcode -b /boot/mbr mirror/gm0\n"
"# gpart set -a active -i 1 mirror/gm0\n"
"# gpart bootcode -b /boot/boot mirror/gm0s1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:296
msgid "Format the file systems on the new mirror, enabling soft-updates."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:303
#, no-wrap
msgid ""
"# newfs -U /dev/mirror/gm0s1a\n"
"# newfs -U /dev/mirror/gm0s1d\n"
"# newfs -U /dev/mirror/gm0s1e\n"
"# newfs -U /dev/mirror/gm0s1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:306
msgid ""
"File systems from the original [.filename]#ada0# disk can now be copied onto "
"the mirror with man:dump[8] and man:restore[8]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:317
#, no-wrap
msgid ""
"# mount /dev/mirror/gm0s1a /mnt\n"
"# dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)\n"
"# mount /dev/mirror/gm0s1d /mnt/var\n"
"# mount /dev/mirror/gm0s1e /mnt/tmp\n"
"# mount /dev/mirror/gm0s1f /mnt/usr\n"
"# dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)\n"
"# dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -)\n"
"# dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:320
msgid ""
"Edit [.filename]#/mnt/etc/fstab# to point to the new mirror file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:329
#, no-wrap
msgid ""
"# Device\t\tMountpoint\tFStype\tOptions\tDump\tPass#\n"
"/dev/mirror/gm0s1a\t/\t\tufs\trw\t1\t1\n"
"/dev/mirror/gm0s1b\tnone\t\tswap\tsw\t0\t0\n"
"/dev/mirror/gm0s1d\t/var\t\tufs\trw\t2\t2\n"
"/dev/mirror/gm0s1e\t/tmp\t\tufs\trw\t2\t2\n"
"/dev/mirror/gm0s1f\t/usr\t\tufs\trw\t2\t2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:332
msgid ""
"If the [.filename]#geom_mirror.ko# kernel module has not been built into the "
"kernel, [.filename]#/mnt/boot/loader.conf# is edited to load the module at "
"boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:336
#: documentation/content/en/books/handbook/geom/_index.adoc:539
#: documentation/content/en/books/handbook/geom/_index.adoc:652
#, no-wrap
msgid "geom_mirror_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:341
msgid ""
"Reboot the system to test the new mirror and verify that all data has been "
"copied. The BIOS will see the mirror as two individual drives rather than a "
"mirror. Since the drives are identical, it does not matter which is "
"selected to boot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:344
msgid ""
"See <<gmirror-troubleshooting>> if there are problems booting. Powering "
"down and disconnecting the original [.filename]#ada0# disk will allow it to "
"be kept as an offline backup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:346
msgid "In use, the mirror will behave just like the original single drive."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:348
#, no-wrap
msgid "Creating a Mirror with an Existing Drive"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:354
msgid ""
"In this example, FreeBSD has already been installed on a single disk, [."
"filename]#ada0#. A new disk, [.filename]#ada1#, has been connected to the "
"system. A one-disk mirror will be created on the new disk, the existing "
"system copied onto it, and then the old disk will be inserted into the "
"mirror. This slightly complex procedure is required because `gmirror` needs "
"to put a 512-byte block of metadata at the end of each disk, and the "
"existing [.filename]#ada0# has usually had all of its space already "
"allocated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:356
msgid "Load the [.filename]#geom_mirror.ko# kernel module:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:363
msgid "Check the media size of the original disk with `diskinfo`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:370
#, no-wrap
msgid ""
"# diskinfo -v ada0 | head -n3\n"
"/dev/ada0\n"
" 512 # sectorsize\n"
" 1000204821504 # mediasize in bytes (931G)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:377
msgid ""
"Create a mirror on the new disk. To make certain that the mirror capacity "
"is not any larger than the original [.filename]#ada0# drive, man:gnop[8] is "
"used to create a fake drive of the exact same size. This drive does not "
"store any data, but is used only to limit the size of the mirror. When man:"
"gmirror[8] creates the mirror, it will restrict the capacity to the size of "
"[.filename]#gzero.nop#, even if the new [.filename]#ada1# drive has more "
"space. Note that the _1000204821504_ in the second line is equal to [."
"filename]#ada0#'s media size as shown by `diskinfo` above."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:384
#, no-wrap
msgid ""
"# geom zero load\n"
"# gnop create -s 1000204821504 gzero\n"
"# gmirror label -v gm0 gzero.nop ada1\n"
"# gmirror forget gm0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:389
msgid ""
"Since [.filename]#gzero.nop# does not store any data, the mirror does not "
"see it as connected. The mirror is told to \"forget\" unconnected "
"components, removing references to [.filename]#gzero.nop#. The result is a "
"mirror device containing only a single disk, [.filename]#ada1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:393
msgid ""
"After creating [.filename]#gm0#, view the partition table on [."
"filename]#ada0#. This output is from a 1 TB drive. If there is some "
"unallocated space at the end of the drive, the contents may be copied "
"directly from [.filename]#ada0# to the new mirror."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:395
msgid ""
"However, if the output shows that all of the space on the disk is allocated, "
"as in the following listing, there is no space available for the 512-byte "
"mirror metadata at the end of the disk."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:401
#, no-wrap
msgid ""
"# gpart show ada0\n"
"=> 63 1953525105 ada0 MBR (931G)\n"
" 63 1953525105 1 freebsd [active] (931G)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:405
msgid ""
"In this case, the partition table must be edited to reduce the capacity by "
"one sector on [.filename]#mirror/gm0#. The procedure will be explained "
"later."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:407
msgid ""
"In either case, partition tables on the primary disk should be first copied "
"using `gpart backup` and `gpart restore`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:412
#, no-wrap
msgid ""
"# gpart backup ada0 > table.ada0\n"
"# gpart backup ada0s1 > table.ada0s1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:416
msgid ""
"These commands create two files, [.filename]#table.ada0# and [."
"filename]#table.ada0s1#. This example is from a 1 TB drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:422
#, no-wrap
msgid ""
"# cat table.ada0\n"
"MBR 4\n"
"1 freebsd 63 1953525105 [active]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:434
#, no-wrap
msgid ""
"# cat table.ada0s1\n"
"BSD 8\n"
"1 freebsd-ufs 0 4194304\n"
"2 freebsd-swap 4194304 33554432\n"
"4 freebsd-ufs 37748736 50331648\n"
"5 freebsd-ufs 88080384 41943040\n"
"6 freebsd-ufs 130023424 838860800\n"
"7 freebsd-ufs 968884224 984640881\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:439
msgid ""
"If no free space is shown at the end of the disk, the size of both the slice "
"and the last partition must be reduced by one sector. Edit the two files, "
"reducing the size of both the slice and last partition by one. These are "
"the last numbers in each listing."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:445
#, no-wrap
msgid ""
"# cat table.ada0\n"
"MBR 4\n"
"1 freebsd 63 1953525104 [active]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:457
#, no-wrap
msgid ""
"# cat table.ada0s1\n"
"BSD 8\n"
"1 freebsd-ufs 0 4194304\n"
"2 freebsd-swap 4194304 33554432\n"
"4 freebsd-ufs 37748736 50331648\n"
"5 freebsd-ufs 88080384 41943040\n"
"6 freebsd-ufs 130023424 838860800\n"
"7 freebsd-ufs 968884224 984640880\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:460
msgid ""
"If at least one sector was unallocated at the end of the disk, these two "
"files can be used without modification."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:462
msgid "Now restore the partition table into [.filename]#mirror/gm0#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:467
#, no-wrap
msgid ""
"# gpart restore mirror/gm0 < table.ada0\n"
"# gpart restore mirror/gm0s1 < table.ada0s1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:471
msgid ""
"Check the partition table with `gpart show`. This example has [."
"filename]#gm0s1a# for [.filename]#/#, [.filename]#gm0s1d# for [.filename]#/"
"var#, [.filename]#gm0s1e# for [.filename]#/usr#, [.filename]#gm0s1f# for [."
"filename]#/data1#, and [.filename]#gm0s1g# for [.filename]#/data2#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:478
#, no-wrap
msgid ""
"# gpart show mirror/gm0\n"
"=> 63 1953525104 mirror/gm0 MBR (931G)\n"
" 63 1953525042 1 freebsd [active] (931G)\n"
" 1953525105 62 - free - (31k)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:488
#, no-wrap
msgid ""
"# gpart show mirror/gm0s1\n"
"=> 0 1953525042 mirror/gm0s1 BSD (931G)\n"
" 0 2097152 1 freebsd-ufs (1.0G)\n"
" 2097152 16777216 2 freebsd-swap (8.0G)\n"
" 18874368 41943040 4 freebsd-ufs (20G)\n"
" 60817408 20971520 5 freebsd-ufs (10G)\n"
" 81788928 629145600 6 freebsd-ufs (300G)\n"
" 710934528 1242590514 7 freebsd-ufs (592G)\n"
" 1953525042 63 - free - (31k)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:491
msgid ""
"Both the slice and the last partition must have at least one free block at "
"the end of the disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:494
msgid ""
"Create file systems on these new partitions. The number of partitions will "
"vary to match the original disk, [.filename]#ada0#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:502
#, no-wrap
msgid ""
"# newfs -U /dev/mirror/gm0s1a\n"
"# newfs -U /dev/mirror/gm0s1d\n"
"# newfs -U /dev/mirror/gm0s1e\n"
"# newfs -U /dev/mirror/gm0s1f\n"
"# newfs -U /dev/mirror/gm0s1g\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:515
msgid ""
"Adjust [.filename]#/etc/fstab# to use the new partitions on the mirror. "
"Back up this file first by copying it to [.filename]#/etc/fstab.orig#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:519
#, no-wrap
msgid "# cp /etc/fstab /etc/fstab.orig\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:522
msgid ""
"Edit [.filename]#/etc/fstab#, replacing [.filename]#/dev/ada0# with [."
"filename]#mirror/gm0#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:532
#, no-wrap
msgid ""
"# Device\t\tMountpoint\tFStype\tOptions\tDump\tPass#\n"
"/dev/mirror/gm0s1a\t/\t\tufs\trw\t1\t1\n"
"/dev/mirror/gm0s1b\tnone\t\tswap\tsw\t0\t0\n"
"/dev/mirror/gm0s1d\t/var\t\tufs\trw\t2\t2\n"
"/dev/mirror/gm0s1e\t/usr\t\tufs\trw\t2\t2\n"
"/dev/mirror/gm0s1f\t/data1\t\tufs\trw\t2\t2\n"
"/dev/mirror/gm0s1g\t/data2\t\tufs\trw\t2\t2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:535
msgid ""
"If the [.filename]#geom_mirror.ko# kernel module has not been built into the "
"kernel, edit [.filename]#/boot/loader.conf# to load it at boot:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:543
msgid ""
"File systems from the original disk can now be copied onto the mirror with "
"man:dump[8] and man:restore[8]. Each file system dumped with `dump -L` will "
"create a snapshot first, which can take some time."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:556
#, no-wrap
msgid ""
"# mount /dev/mirror/gm0s1a /mnt\n"
"# dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)\n"
"# mount /dev/mirror/gm0s1d /mnt/var\n"
"# mount /dev/mirror/gm0s1e /mnt/usr\n"
"# mount /dev/mirror/gm0s1f /mnt/data1\n"
"# mount /dev/mirror/gm0s1g /mnt/data2\n"
"# dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)\n"
"# dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)\n"
"# dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -)\n"
"# dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:561
msgid ""
"Restart the system, booting from [.filename]#ada1#. If everything is "
"working, the system will boot from [.filename]#mirror/gm0#, which now "
"contains the same data as [.filename]#ada0# had previously. See <<gmirror-"
"troubleshooting>> if there are problems booting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:563
msgid ""
"At this point, the mirror still consists of only the single [."
"filename]#ada1# disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:565
msgid ""
"After booting from [.filename]#mirror/gm0# successfully, the final step is "
"inserting [.filename]#ada0# into the mirror."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:571
msgid ""
"When [.filename]#ada0# is inserted into the mirror, its former contents will "
"be overwritten by data from the mirror. Make certain that [."
"filename]#mirror/gm0# has the same contents as [.filename]#ada0# before "
"adding [.filename]#ada0# to the mirror. If the contents previously copied "
"by man:dump[8] and man:restore[8] are not identical to what was on [."
"filename]#ada0#, revert [.filename]#/etc/fstab# to mount the file systems on "
"[.filename]#ada0#, reboot, and start the whole procedure again."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:577
#, no-wrap
msgid ""
"# gmirror insert gm0 ada0\n"
"GEOM_MIRROR: Device gm0: rebuilding provider ada0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:581
msgid ""
"Synchronization between the two disks will start immediately. Use `gmirror "
"status` to view the progress."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:588
#, no-wrap
msgid ""
"# gmirror status\n"
" Name Status Components\n"
"mirror/gm0 DEGRADED ada1 (ACTIVE)\n"
" ada0 (SYNCHRONIZING, 64%)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:591
msgid "After a while, synchronization will finish."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:599
#, no-wrap
msgid ""
"GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished.\n"
"# gmirror status\n"
" Name Status Components\n"
"mirror/gm0 COMPLETE ada1 (ACTIVE)\n"
" ada0 (ACTIVE)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:603
msgid ""
"[.filename]#mirror/gm0# now consists of the two disks [.filename]#ada0# and "
"[.filename]#ada1#, and the contents are automatically synchronized with each "
"other. In use, [.filename]#mirror/gm0# will behave just like the original "
"single drive."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:605
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:609
msgid ""
"If the system no longer boots, BIOS settings may have to be changed to boot "
"from one of the new mirrored drives. Either mirror drive can be used for "
"booting, as they contain identical data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:611
msgid ""
"If the boot stops with this message, something is wrong with the mirror "
"device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:615
#, no-wrap
msgid "Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:619
#, no-wrap
msgid ""
"Loader variables:\n"
" vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a\n"
" vfs.root.mountfrom.options=rw\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:624
#, no-wrap
msgid ""
"Manual root filesystem specification:\n"
" <fstype>:<device> [options]\n"
" Mount <device> using filesystem <fstype>\n"
" and with the specified (optional) option list.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:629
#, no-wrap
msgid ""
" e.g. ufs:/dev/da0s1a\n"
" zfs:tank\n"
" cd9660:/dev/acd0 ro\n"
" (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:633
#, no-wrap
msgid ""
" ? List valid disk boot devices\n"
" . Yield 1 second (for background tasks)\n"
" <empty line> Abort manual input\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:635
#, no-wrap
msgid "mountroot>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:640
msgid ""
"Forgetting to load the [.filename]#geom_mirror.ko# module in [.filename]#/"
"boot/loader.conf# can cause this problem. To fix it, boot from a FreeBSD "
"installation media and choose `Shell` at the first prompt. Then load the "
"mirror module and mount the mirror device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:645
#, no-wrap
msgid ""
"# gmirror load\n"
"# mount /dev/mirror/gm0s1a /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:648
msgid ""
"Edit [.filename]#/mnt/boot/loader.conf#, adding a line to load the mirror "
"module:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:655
msgid "Save the file and reboot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:661
msgid ""
"Other problems that cause `error 19` require more effort to fix. Although "
"the system should boot from [.filename]#ada0#, another prompt to select a "
"shell will appear if [.filename]#/etc/fstab# is incorrect. Enter `ufs:/dev/"
"ada0s1a` at the boot loader prompt and press kbd:[Enter]. Undo the edits in "
"[.filename]#/etc/fstab# then mount the file systems from the original disk "
"([.filename]#ada0#) instead of the mirror. Reboot the system and try the "
"procedure again."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:667
#, no-wrap
msgid ""
"Enter full pathname of shell or RETURN for /bin/sh:\n"
"# cp /etc/fstab.orig /etc/fstab\n"
"# reboot\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:669
#, no-wrap
msgid "Recovering from Disk Failure"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:673
msgid ""
"The benefit of disk mirroring is that an individual disk can fail without "
"causing the mirror to lose any data. In the above example, if [."
"filename]#ada0# fails, the mirror will continue to work, providing data from "
"the remaining working drive, [.filename]#ada1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:677
msgid ""
"To replace the failed drive, shut down the system and physically replace the "
"failed drive with a new drive of equal or greater capacity. Manufacturers "
"use somewhat arbitrary values when rating drives in gigabytes, and the only "
"way to really be sure is to compare the total count of sectors shown by "
"`diskinfo -v`. A drive with larger capacity than the mirror will work, "
"although the extra space on the new drive will not be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:680
msgid ""
"After the computer is powered back up, the mirror will be running in a "
"\"degraded\" mode with only one drive. The mirror is told to forget drives "
"that are not currently connected:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:684
#, no-wrap
msgid "# gmirror forget gm0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:688
msgid ""
"Any old metadata should be cleared from the replacement disk using the "
"instructions in <<geom-mirror-metadata>>. Then the replacement disk, [."
"filename]#ada4# for this example, is inserted into the mirror:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:692
#, no-wrap
msgid "# gmirror insert gm0 /dev/ada4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:697
msgid ""
"Resynchronization begins when the new drive is inserted into the mirror. "
"This process of copying mirror data to a new drive can take a while. "
"Performance of the mirror will be greatly reduced during the copy, so "
"inserting new drives is best done when there is low demand on the computer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:700
msgid ""
"Progress can be monitored with `gmirror status`, which shows drives that are "
"being synchronized and the percentage of completion. During "
"resynchronization, the status will be `DEGRADED`, changing to `COMPLETE` "
"when the process is finished."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:702
#, no-wrap
msgid "RAID3 - Byte-level Striping with Dedicated Parity"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:710
msgid ""
"RAID3 is a method used to combine several disk drives into a single volume "
"with a dedicated parity disk. In a RAID3 system, data is split up into a "
"number of bytes that are written across all the drives in the array except "
"for one disk which acts as a dedicated parity disk. This means that disk "
"reads from a RAID3 implementation access all disks in the array. "
"Performance can be enhanced by using multiple disk controllers. The RAID3 "
"array provides a fault tolerance of 1 drive, while providing a capacity of 1 "
"- 1/n times the total capacity of all drives in the array, where n is the "
"number of hard drives in the array. Such a configuration is mostly suitable "
"for storing data of larger sizes such as multimedia files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:714
msgid ""
"At least 3 physical hard drives are required to build a RAID3 array. Each "
"disk must be of the same size, since I/O requests are interleaved to read or "
"write to multiple disks in parallel. Also, due to the nature of RAID3, the "
"number of drives must be equal to 3, 5, 9, 17, and so on, or 2^n + 1."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:716
msgid ""
"This section demonstrates how to create a software RAID3 on a FreeBSD system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:720
msgid ""
"While it is theoretically possible to boot from a RAID3 array on FreeBSD, "
"that configuration is uncommon and is not advised."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:722
#, no-wrap
msgid "Creating a Dedicated RAID3 Array"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:726
msgid ""
"In FreeBSD, support for RAID3 is implemented by the man:graid3[8] GEOM "
"class. Creating a dedicated RAID3 array on FreeBSD requires the following "
"steps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:729
msgid ""
"First, load the [.filename]#geom_raid3.ko# kernel module by issuing one of "
"the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:733
#, no-wrap
msgid "# graid3 load\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:736
msgid "or:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:740
#, no-wrap
msgid "# kldload geom_raid3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:743
msgid ""
"Ensure that a suitable mount point exists. This command creates a new "
"directory to use as the mount point:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:747
#, no-wrap
msgid "# mkdir /multimedia\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:750
msgid ""
"Determine the device names for the disks which will be added to the array, "
"and create the new RAID3 device. The final device listed will act as the "
"dedicated parity disk. This example uses three unpartitioned ATA drives: [."
"filename]#ada1# and [.filename]#ada2# for data, and [.filename]#ada3# for "
"parity."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:758
#, no-wrap
msgid ""
"# graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3\n"
"Metadata value stored on /dev/ada1.\n"
"Metadata value stored on /dev/ada2.\n"
"Metadata value stored on /dev/ada3.\n"
"Done.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:761
msgid ""
"Partition the newly created [.filename]#gr0# device and put a UFS file "
"system on it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:767
#, no-wrap
msgid ""
"# gpart create -s GPT /dev/raid3/gr0\n"
"# gpart add -t freebsd-ufs /dev/raid3/gr0\n"
"# newfs -j /dev/raid3/gr0p1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:771
msgid ""
"Many numbers will glide across the screen, and after a bit of time, the "
"process will be complete. The volume has been created and is ready to be "
"mounted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:775
#, no-wrap
msgid "# mount /dev/raid3/gr0p1 /multimedia/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:778
msgid "The RAID3 array is now ready to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:780
msgid ""
"Additional configuration is needed to retain this setup across system "
"reboots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:783
msgid ""
"The [.filename]#geom_raid3.ko# module must be loaded before the array can be "
"mounted. To automatically load the kernel module during system "
"initialization, add the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:787
#, no-wrap
msgid "geom_raid3_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:790
msgid ""
"The following volume information must be added to [.filename]#/etc/fstab# in "
"order to automatically mount the array's file system during the system boot "
"process:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:794
#, no-wrap
msgid "/dev/raid3/gr0p1\t/multimedia\tufs\trw\t2\t2\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:797
#, no-wrap
msgid "Software RAID Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:802
msgid ""
"Some motherboards and expansion cards add some simple hardware, usually just "
"a ROM, that allows the computer to boot from a RAID array. After booting, "
"access to the RAID array is handled by software running on the computer's "
"main processor. This \"hardware-assisted software RAID\" gives RAID arrays "
"that are not dependent on any particular operating system, and which are "
"functional even before an operating system is loaded."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:805
msgid ""
"Several levels of RAID are supported, depending on the hardware in use. See "
"man:graid[8] for a complete list."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:808
msgid ""
"man:graid[8] requires the [.filename]#geom_raid.ko# kernel module, which is "
"included in the [.filename]#GENERIC# kernel starting with FreeBSD 9.1. If "
"needed, it can be loaded manually with `graid load`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:810
#, no-wrap
msgid "Creating an Array"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:815
msgid ""
"Software RAID devices often have a menu that can be entered by pressing "
"special keys when the computer is booting. The menu can be used to create "
"and delete RAID arrays. man:graid[8] can also create arrays directly from "
"the command line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:819
msgid ""
"`graid label` is used to create a new array. The motherboard used for this "
"example has an Intel software RAID chipset, so the Intel metadata format is "
"specified. The new array is given a label of [.filename]#gm0#, it is a "
"mirror (RAID1), and uses drives [.filename]#ada0# and [.filename]#ada1#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:824
msgid ""
"Some space on the drives will be overwritten when they are made into a new "
"array. Back up existing data first!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:838
#, no-wrap
msgid ""
"# graid label Intel gm0 RAID1 ada0 ada1\n"
"GEOM_RAID: Intel-a29ea104: Array Intel-a29ea104 created.\n"
"GEOM_RAID: Intel-a29ea104: Disk ada0 state changed from NONE to ACTIVE.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:0-ada0 state changed from NONE to ACTIVE.\n"
"GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to ACTIVE.\n"
"GEOM_RAID: Intel-a29ea104: Array started.\n"
"GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from STARTING to OPTIMAL.\n"
"Intel-a29ea104 created\n"
"GEOM_RAID: Intel-a29ea104: Provider raid/r0 for volume gm0 created.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:841
msgid "A status check shows the new mirror is ready for use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:848
#: documentation/content/en/books/handbook/geom/_index.adoc:1024
#, no-wrap
msgid ""
"# graid status\n"
" Name Status Components\n"
"raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE))\n"
" ada1 (ACTIVE (ACTIVE))\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:853
msgid ""
"The array device appears in [.filename]#/dev/raid/#. The first array is "
"called [.filename]#r0#. Additional arrays, if present, will be [."
"filename]#r1#, [.filename]#r2#, and so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:857
msgid ""
"The BIOS menu on some of these devices can create arrays with special "
"characters in their names. To avoid problems with those special characters, "
"arrays are given simple numbered names like [.filename]#r0#. To show the "
"actual labels, like [.filename]#gm0# in the example above, use man:sysctl[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:861
#, no-wrap
msgid "# sysctl kern.geom.raid.name_format=1\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:864
#, no-wrap
msgid "Multiple Volumes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:870
msgid ""
"Some software RAID devices support more than one _volume_ on an array. "
"Volumes work like partitions, allowing space on the physical drives to be "
"split and used in different ways. For example, Intel software RAID devices "
"support two volumes. This example creates a 40 G mirror for safely storing "
"the operating system, followed by a 20 G RAID0 (stripe) volume for fast "
"temporary storage:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:875
#, no-wrap
msgid ""
"# graid label -S 40G Intel gm0 RAID1 ada0 ada1\n"
"# graid add -S 20G gm0 RAID0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:879
msgid ""
"Volumes appear as additional [.filename]#rX# entries in [.filename]#/dev/"
"raid/#. An array with two volumes will show [.filename]#r0# and [."
"filename]#r1#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:881
msgid ""
"See man:graid[8] for the number of volumes supported by different software "
"RAID devices."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:883
#, no-wrap
msgid "Converting a Single Drive to a Mirror"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:887
msgid ""
"Under certain specific conditions, it is possible to convert an existing "
"single drive to a man:graid[8] array without reformatting. To avoid data "
"loss during the conversion, the existing drive must meet these minimum "
"requirements:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:889
msgid ""
"The drive must be partitioned with the MBR partitioning scheme. GPT or other "
"partitioning schemes with metadata at the end of the drive will be "
"overwritten and corrupted by the man:graid[8] metadata."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:890
msgid ""
"There must be enough unpartitioned and unused space at the end of the drive "
"to hold the man:graid[8] metadata. This metadata varies in size, but the "
"largest occupies 64 M, so at least that much free space is recommended."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:893
msgid ""
"If the drive meets these requirements, start by making a full backup. Then "
"create a single-drive mirror with that drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:897
#, no-wrap
msgid "# graid label Intel gm0 RAID1 ada0 NONE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:901
msgid ""
"man:graid[8] metadata was written to the end of the drive in the unused "
"space. A second drive can now be inserted into the mirror:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:905
#, no-wrap
msgid "# graid insert raid/r0 ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:909
msgid ""
"Data from the original drive will immediately begin to be copied to the "
"second drive. The mirror will operate in degraded status until the copy is "
"complete."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:911
#, no-wrap
msgid "Inserting New Drives into the Array"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:916
msgid ""
"Drives can be inserted into an array as replacements for drives that have "
"failed or are missing. If there are no failed or missing drives, the new "
"drive becomes a spare. For example, inserting a new drive into a working "
"two-drive mirror results in a two-drive mirror with one spare drive, not a "
"three-drive mirror."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:919
msgid ""
"In the example mirror array, data immediately begins to be copied to the "
"newly-inserted drive. Any existing information on the new drive will be "
"overwritten."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:927
#, no-wrap
msgid ""
"# graid insert raid/r0 ada1\n"
"GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to NEW.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NEW to REBUILD.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 rebuild start at 0.\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:930
#, no-wrap
msgid "Removing Drives from the Array"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:933
msgid ""
"Individual drives can be permanently removed from a from an array and their "
"metadata erased:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:940
#, no-wrap
msgid ""
"# graid remove raid/r0 ada1\n"
"GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from ACTIVE to OFFLINE.\n"
"GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-[unknown] state changed from ACTIVE to NONE.\n"
"GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from OPTIMAL to DEGRADED.\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:943
#, no-wrap
msgid "Stopping the Array"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:947
msgid ""
"An array can be stopped without removing metadata from the drives. The "
"array will be restarted when the system is booted."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:951
#, no-wrap
msgid "# graid stop raid/r0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:954
#, no-wrap
msgid "Checking Array Status"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:958
msgid ""
"Array status can be checked at any time. After a drive was added to the "
"mirror in the example above, data is being copied from the original drive to "
"the new drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:965
#, no-wrap
msgid ""
"# graid status\n"
" Name Status Components\n"
"raid/r0 DEGRADED ada0 (ACTIVE (ACTIVE))\n"
" ada1 (ACTIVE (REBUILD 28%))\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:969
msgid ""
"Some types of arrays, like `RAID0` or `CONCAT`, may not be shown in the "
"status report if disks have failed. To see these partially-failed arrays, "
"add `-ga`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:975
#, no-wrap
msgid ""
"# graid status -ga\n"
" Name Status Components\n"
"Intel-e2d07d9a BROKEN ada6 (ACTIVE (ACTIVE))\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:978
#, no-wrap
msgid "Deleting Arrays"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:982
msgid ""
"Arrays are destroyed by deleting all of the volumes from them. When the "
"last volume present is deleted, the array is stopped and metadata is removed "
"from the drives:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:986
#: documentation/content/en/books/handbook/geom/_index.adoc:1031
#, no-wrap
msgid "# graid delete raid/r0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:989
#, no-wrap
msgid "Deleting Unexpected Arrays"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:994
msgid ""
"Drives may unexpectedly contain man:graid[8] metadata, either from previous "
"use or manufacturer testing. man:graid[8] will detect these drives and "
"create an array, interfering with access to the individual drive. To remove "
"the unwanted metadata:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:997
msgid ""
"Boot the system. At the boot menu, select `2` for the loader prompt. Enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1002
#, no-wrap
msgid ""
"OK set kern.geom.raid.enable=0\n"
"OK boot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1005
msgid "The system will boot with man:graid[8] disabled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1006
msgid "Back up all data on the affected drive."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1007
msgid "As a workaround, man:graid[8] array detection can be disabled by adding"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1011
#, no-wrap
msgid "kern.geom.raid.enable=0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1014
msgid "to [.filename]#/boot/loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1017
msgid ""
"To permanently remove the man:graid[8] metadata from the affected drive, "
"boot a FreeBSD installation CD-ROM or memory stick, and select `Shell`. Use "
"`status` to find the name of the array, typically `raid/r0`:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1027
msgid "Delete the volume by name:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1035
msgid ""
"If there is more than one volume shown, repeat the process for each volume. "
"After the last array has been deleted, the volume will be destroyed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1038
msgid ""
"Reboot and verify data, restoring from backup if necessary. After the "
"metadata has been removed, the `kern.geom.raid.enable=0` entry in [."
"filename]#/boot/loader.conf# can also be removed."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:1040
#, no-wrap
msgid "GEOM Gate Network"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1045
msgid ""
"GEOM provides a simple mechanism for providing remote access to devices such "
"as disks, CDs, and file systems through the use of the GEOM Gate network "
"daemon, ggated. The system with the device runs the server daemon which "
"handles requests made by clients using ggatec. The devices should not "
"contain any sensitive data as the connection between the client and the "
"server is not encrypted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1049
msgid ""
"Similar to NFS, which is discussed in crossref:network-servers[network-nfs,"
"\"Network File System (NFS)\"], ggated is configured using an exports file. "
"This file specifies which systems are permitted to access the exported "
"resources and what level of access they are offered. For example, to give "
"the client `192.168.1.5` read and write access to the fourth slice on the "
"first SCSI disk, create [.filename]#/etc/gg.exports# with this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1053
#, no-wrap
msgid "192.168.1.5 RW /dev/da0s4d\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1057
msgid ""
"Before exporting the device, ensure it is not currently mounted. Then, "
"start ggated:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1061
#, no-wrap
msgid "# ggated\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1065
msgid ""
"Several options are available for specifying an alternate listening port or "
"changing the default location of the exports file. Refer to man:ggated[8] "
"for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1070
msgid ""
"To access the exported device on the client machine, first use `ggatec` to "
"specify the IP address of the server and the device name of the exported "
"device. If successful, this command will display a `ggate` device name to "
"mount. Mount that specified device name on a free mount point. This "
"example connects to the [.filename]#/dev/da0s4d# partition on `192.168.1.1`, "
"then mounts [.filename]#/dev/ggate0# on [.filename]#/mnt#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1076
#, no-wrap
msgid ""
"# ggatec create -o rw 192.168.1.1 /dev/da0s4d\n"
"ggate0\n"
"# mount /dev/ggate0 /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1080
msgid ""
"The device on the server may now be accessed through [.filename]#/mnt# on "
"the client. For more details about `ggatec` and a few usage examples, refer "
"to man:ggatec[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1085
msgid ""
"The mount will fail if the device is currently mounted on either the server "
"or any other client on the network. If simultaneous access is needed to "
"network resources, use NFS instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1088
msgid ""
"When the device is no longer needed, unmount it with `umount` so that the "
"resource is available to other clients."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:1090
#, no-wrap
msgid "Labeling Disk Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1096
msgid ""
"During system initialization, the FreeBSD kernel creates device nodes as "
"devices are found. This method of probing for devices raises some issues. "
"For instance, what if a new disk device is added via USB? It is likely that "
"a flash device may be handed the device name of [.filename]#da0# and the "
"original [.filename]#da0# shifted to [.filename]#da1#. This will cause "
"issues mounting file systems if they are listed in [.filename]#/etc/fstab# "
"which may also prevent the system from booting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1101
msgid ""
"One solution is to chain SCSI devices in order so a new device added to the "
"SCSI card will be issued unused device numbers. But what about USB devices "
"which may replace the primary SCSI disk? This happens because USB devices "
"are usually probed before the SCSI card. One solution is to only insert "
"these devices after the system has been booted. Another method is to use "
"only a single ATA drive and never list the SCSI devices in [.filename]#/etc/"
"fstab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1105
msgid ""
"A better solution is to use `glabel` to label the disk devices and use the "
"labels in [.filename]#/etc/fstab#. Since `glabel` stores the label in the "
"last sector of a given provider, the label will remain persistent across "
"reboots. By using this label as a device, the file-system may always be "
"mounted regardless of what device node it is accessed through."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1110
msgid ""
"`glabel` can create both transient and permanent labels. Only permanent "
"labels are consistent across reboots. Refer to man:glabel[8] for more "
"information on the differences between labels."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/geom/_index.adoc:1112
#, no-wrap
msgid "Label Types and Examples"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1120
msgid ""
"Permanent labels can be a generic or a file system label. Permanent file "
"system labels can be created with man:tunefs[8] or man:newfs[8]. These "
"types of labels are created in a sub-directory of [.filename]#/dev#, and "
"will be named according to the file system type. For example, UFS2 file "
"system labels will be created in [.filename]#/dev/ufs#. Generic permanent "
"labels can be created with `glabel label`. These are not file system "
"specific and will be created in [.filename]#/dev/label#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1124
msgid ""
"Temporary labels are destroyed at the next reboot. These labels are created "
"in [.filename]#/dev/label# and are suited to experimentation. A temporary "
"label can be created using `glabel create`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1126
msgid ""
"To create a permanent label for a UFS2 file system without destroying any "
"data, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1130
#, no-wrap
msgid "# tunefs -L home /dev/da3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1133
msgid ""
"A label should now exist in [.filename]#/dev/ufs# which may be added to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1137
#, no-wrap
msgid "/dev/ufs/home\t\t/home ufs rw 2 2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1142
msgid "The file system must not be mounted while attempting to run `tunefs`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1145
msgid "Now the file system may be mounted:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1149
#, no-wrap
msgid "# mount /home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1152
msgid ""
"From this point on, so long as the [.filename]#geom_label.ko# kernel module "
"is loaded at boot with [.filename]#/boot/loader.conf# or the `GEOM_LABEL` "
"kernel option is present, the device node may change without any ill effect "
"on the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1155
msgid ""
"File systems may also be created with a default label by using the `-L` flag "
"with `newfs`. Refer to man:newfs[8] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1157
msgid "The following command can be used to destroy the label:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1161
#, no-wrap
msgid "# glabel destroy home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1164
msgid "The following example shows how to label the partitions of a boot disk."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/geom/_index.adoc:1165
#, no-wrap
msgid "Labeling Partitions on the Boot Disk"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1171
msgid ""
"By permanently labeling the partitions on the boot disk, the system should "
"be able to continue to boot normally, even if the disk is moved to another "
"controller or transferred to a different system. For this example, it is "
"assumed that a single ATA disk is used, which is currently recognized by the "
"system as [.filename]#ad0#. It is also assumed that the standard FreeBSD "
"partition scheme is used, with [.filename]#/#, [.filename]#/var#, [."
"filename]#/usr# and [.filename]#/tmp#, as well as a swap partition."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1174
msgid ""
"Reboot the system, and at the man:loader[8] prompt, press kbd:[4] to boot "
"into single user mode. Then enter the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1188
#, no-wrap
msgid ""
"# glabel label rootfs /dev/ad0s1a\n"
"GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs\n"
"# glabel label var /dev/ad0s1d\n"
"GEOM_LABEL: Label for provider /dev/ad0s1d is label/var\n"
"# glabel label usr /dev/ad0s1f\n"
"GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr\n"
"# glabel label tmp /dev/ad0s1e\n"
"GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp\n"
"# glabel label swap /dev/ad0s1b\n"
"GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap\n"
"# exit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1193
msgid ""
"The system will continue with multi-user boot. After the boot completes, "
"edit [.filename]#/etc/fstab# and replace the conventional device names, with "
"their respective labels. The final [.filename]#/etc/fstab# will look like "
"this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1202
#, no-wrap
msgid ""
"# Device Mountpoint FStype Options Dump Pass#\n"
"/dev/label/swap none swap sw 0 0\n"
"/dev/label/rootfs / ufs rw 1 1\n"
"/dev/label/tmp /tmp ufs rw 2 2\n"
"/dev/label/usr /usr ufs rw 2 2\n"
"/dev/label/var /var ufs rw 2 2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1206
msgid ""
"The system can now be rebooted. If everything went well, it will come up "
"normally and `mount` will show:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1215
#, no-wrap
msgid ""
"# mount\n"
"/dev/label/rootfs on / (ufs, local)\n"
"devfs on /dev (devfs, local)\n"
"/dev/label/tmp on /tmp (ufs, local, soft-updates)\n"
"/dev/label/usr on /usr (ufs, local, soft-updates)\n"
"/dev/label/var on /var (ufs, local, soft-updates)\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1223
msgid ""
"The man:glabel[8] class supports a label type for UFS file systems, based on "
"the unique file system id, `ufsid`. These labels may be found in [."
"filename]#/dev/ufsid# and are created automatically during system startup. "
"It is possible to use `ufsid` labels to mount partitions using [.filename]#/"
"etc/fstab#. Use `glabel status` to receive a list of file systems and their "
"corresponding `ufsid` labels:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1230
#, no-wrap
msgid ""
"% glabel status\n"
" Name Status Components\n"
"ufsid/486b6fc38d330916 N/A ad4s1d\n"
"ufsid/486b6fc16926168e N/A ad4s1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1234
msgid ""
"In the above example, [.filename]#ad4s1d# represents [.filename]#/var#, "
"while [.filename]#ad4s1f# represents [.filename]#/usr#. Using the `ufsid` "
"values shown, these partitions may now be mounted with the following entries "
"in [.filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1239
#, no-wrap
msgid ""
"/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2\n"
"/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1242
msgid ""
"Any partitions with `ufsid` labels can be mounted in this way, eliminating "
"the need to manually create permanent labels, while still enjoying the "
"benefits of device name independent mounting."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/geom/_index.adoc:1244
#, no-wrap
msgid "UFS Journaling Through GEOM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1250
msgid ""
"Support for journals on UFS file systems is available on FreeBSD. The "
"implementation is provided through the GEOM subsystem and is configured "
"using `gjournal`. Unlike other file system journaling implementations, the "
"`gjournal` method is block based and not implemented as part of the file "
"system. It is a GEOM extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1253
msgid ""
"Journaling stores a log of file system transactions, such as changes that "
"make up a complete disk write operation, before meta-data and file writes "
"are committed to the disk. This transaction log can later be replayed to "
"redo file system transactions, preventing file system inconsistencies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1258
msgid ""
"This method provides another mechanism to protect against data loss and "
"inconsistencies of the file system. Unlike Soft Updates, which tracks and "
"enforces meta-data updates, and snapshots, which create an image of the file "
"system, a log is stored in disk space specifically for this task. For "
"better performance, the journal may be stored on another disk. In this "
"configuration, the journal provider or storage device should be listed after "
"the device to enable journaling on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1261
msgid ""
"The [.filename]#GENERIC# kernel provides support for `gjournal`. To "
"automatically load the [.filename]#geom_journal.ko# kernel module at boot "
"time, add the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1265
#, no-wrap
msgid "geom_journal_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1268
msgid ""
"If a custom kernel is used, ensure the following line is in the kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1272
#, no-wrap
msgid "options\tGEOM_JOURNAL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1276
msgid ""
"Once the module is loaded, a journal can be created on a new file system "
"using the following steps. In this example, [.filename]#da4# is a new SCSI "
"disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1281
#, no-wrap
msgid ""
"# gjournal load\n"
"# gjournal label /dev/da4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1284
msgid ""
"This will load the module and create a [.filename]#/dev/da4.journal# device "
"node on [.filename]#/dev/da4#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1286
msgid ""
"A UFS file system may now be created on the journaled device, then mounted "
"on an existing mount point:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1291
#, no-wrap
msgid ""
"# newfs -O 2 -J /dev/da4.journal\n"
"# mount /dev/da4.journal /mnt\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/geom/_index.adoc:1297
msgid ""
"In the case of several slices, a journal will be created for each individual "
"slice. For instance, if [.filename]#ad4s1# and [.filename]#ad4s2# are both "
"slices, then `gjournal` will create [.filename]#ad4s1.journal# and [."
"filename]#ad4s2.journal#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1303
msgid ""
"Journaling may also be enabled on current file systems by using `tunefs`. "
"However, _always_ make a backup before attempting to alter an existing file "
"system. In most cases, `gjournal` will fail if it is unable to create the "
"journal, but this does not protect against data loss incurred as a result of "
"misusing `tunefs`. Refer to man:gjournal[8] and man:tunefs[8] for more "
"information about these commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/geom/_index.adoc:1305
msgid ""
"It is possible to journal the boot disk of a FreeBSD system. Refer to the "
"article extref:{gjournal-desktop}[Implementing UFS Journaling on a Desktop "
"PC] for detailed instructions."
msgstr ""
diff --git a/documentation/content/en/books/handbook/introduction.po b/documentation/content/en/books/handbook/introduction.po
index d72b67cd62..1f0539a439 100644
--- a/documentation/content/en/books/handbook/introduction.po
+++ b/documentation/content/en/books/handbook/introduction.po
@@ -1,45 +1,44 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Plain text
#: documentation/content/en/books/handbook/introduction.adoc:3
msgid "Abstract"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction.adoc:8
msgid ""
"Welcome to FreeBSD! This handbook covers the installation and day to day use "
-"of _FreeBSD {rel131-current}-RELEASE_ and _FreeBSD "
-"{rel123-current}-RELEASE_. This book is the result of ongoing work by many "
-"individuals. Some sections might be outdated. Those interested in helping "
-"to update and expand this document should send email to the {freebsd-doc}."
+"of _FreeBSD {rel131-current}-RELEASE_ and _FreeBSD {rel124-current}-"
+"RELEASE_. This book is the result of ongoing work by many individuals. "
+"Some sections might be outdated. Those interested in helping to update and "
+"expand this document should send email to the {freebsd-doc}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction.adoc:12
msgid ""
-"The latest version of this book is available from the "
-"https://www.FreeBSD.org/[FreeBSD web site]. Previous versions can be "
-"obtained from https://docs.FreeBSD.org/doc/[https://docs.FreeBSD.org/doc/]. "
-"The book can be downloaded in a variety of formats and compression options "
-"from the https://download.freebsd.org/doc/[FreeBSD download server] or one "
-"of the numerous link:./mirrors#mirrors[mirror sites]. Searches can be "
-"performed on the handbook and other documents on the "
-"link:https://www.FreeBSD.org/search/[search page]."
+"The latest version of this book is available from the https://www.FreeBSD."
+"org/[FreeBSD web site]. Previous versions can be obtained from https://docs."
+"FreeBSD.org/doc/[https://docs.FreeBSD.org/doc/]. The book can be downloaded "
+"in a variety of formats and compression options from the https://download."
+"freebsd.org/doc/[FreeBSD download server] or one of the numerous link:./"
+"mirrors#mirrors[mirror sites]. Searches can be performed on the handbook "
+"and other documents on the link:https://www.FreeBSD.org/search/[search page]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/introduction/_index.po b/documentation/content/en/books/handbook/introduction/_index.po
index 55551bce93..33b2f7f83f 100644
--- a/documentation/content/en/books/handbook/introduction/_index.po
+++ b/documentation/content/en/books/handbook/introduction/_index.po
@@ -1,1049 +1,764 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/introduction/_index.adoc:1
#, no-wrap
msgid "This chapter covers various aspects of the FreeBSD Project, such as its history, goals, development model, and so on"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/introduction/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/introduction/_index.adoc:1
#, no-wrap
msgid "Chapter 1. Introduction"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/introduction/_index.adoc:15
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/introduction/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:56
msgid ""
"Thank you for your interest in FreeBSD! The following chapter covers various "
"aspects of the FreeBSD Project, such as its history, goals, development "
"model, and so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:58
msgid "After reading this chapter you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:60
msgid "How FreeBSD relates to other computer operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:61
msgid "The history of the FreeBSD Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:62
msgid "The goals of the FreeBSD Project."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:63
msgid "The basics of the FreeBSD open-source development model."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:64
msgid "And of course: where the name \"FreeBSD\" comes from."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/introduction/_index.adoc:66
#, no-wrap
msgid "Welcome to FreeBSD!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:71
msgid ""
"FreeBSD is an Open Source, standards-compliant Unix-like operating system "
"for x86 (both 32 and 64 bit), ARM(R), AArch64, RISC-V(R), MIPS(R), POWER(R), "
"PowerPC(R), and Sun UltraSPARC(R) computers. It provides all the features "
"that are nowadays taken for granted, such as preemptive multitasking, memory "
"protection, virtual memory, multi-user facilities, SMP support, all the Open "
"Source development tools for different languages and frameworks, and desktop "
"features centered around X Window System, KDE, or GNOME. Its particular "
"strengths are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:73
msgid ""
"_Liberal Open Source license_, which grants you rights to freely modify and "
"extend its source code and incorporate it in both Open Source projects and "
"closed products without imposing restrictions typical to copyleft licenses, "
"as well as avoiding potential license incompatibility problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:74
msgid ""
"_Strong TCP/IP networking_ - FreeBSD implements industry standard protocols "
"with ever increasing performance and scalability. This makes it a good match "
"in both server, and routing/firewalling roles - and indeed many companies "
"and vendors use it precisely for that purpose."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:75
msgid ""
"_Fully integrated OpenZFS support_, including root-on-ZFS, ZFS Boot "
"Environments, fault management, administrative delegation, support for "
"jails, FreeBSD specific documentation, and system installer support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:76
msgid ""
"_Extensive security features_, from the Mandatory Access Control framework "
"to Capsicum capability and sandbox mechanisms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:77
msgid ""
"_Over 30 thousand prebuilt packages_ for all supported architectures, and "
"the Ports Collection which makes it easy to build your own, customized ones."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:78
msgid ""
"_Documentation_ - in addition to the Handbook and books from different "
"authors that cover topics ranging from system administration to kernel "
"internals, there are also the man:man[1] pages, not only for userspace "
"daemons, utilities, and configuration files, but also for kernel driver APIs "
"(section 9) and individual drivers (section 4)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:79
msgid ""
"_Simple and consistent repository structure and build system_ - FreeBSD uses "
"a single repository for all of its components, both kernel and userspace. "
"This, along with a unified and easy to customize build system and a well "
"thought-out development process makes it easy to integrate FreeBSD with "
"build infrastructure for your own product."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:80
msgid ""
"_Staying true to Unix philosophy_, preferring composability instead of "
"monolithic \"all in one\" daemons with hardcoded behavior."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:81
msgid ""
"_Binary compatibility_ with Linux, which makes it possible to run many Linux "
"binaries without the need for virtualisation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:85
msgid ""
"FreeBSD is based on the 4.4BSD-Lite release from Computer Systems Research "
"Group (CSRG) at the University of California at Berkeley, and carries on the "
"distinguished tradition of BSD systems development. In addition to the fine "
"work provided by CSRG, the FreeBSD Project has put in many thousands of man-"
"hours into extending the functionality and fine-tuning the system for "
"maximum performance and reliability in real-life load situations. FreeBSD "
"offers performance and reliability on par with other Open Source and "
"commercial offerings, combined with cutting-edge features not available "
"anywhere else."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/introduction/_index.adoc:87
#, no-wrap
msgid "What Can FreeBSD Do?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:91
msgid ""
"The applications to which FreeBSD can be put are truly limited only by your "
"own imagination. From software development to factory automation, inventory "
-"control to azimuth correction of remote satellite antennae; if it can be "
-"done with a commercial UNIX(R) product then it is more than likely that you "
-"can do it with FreeBSD too! FreeBSD also benefits significantly from "
-"literally thousands of high quality applications developed by research "
-"centers and universities around the world, often available at little to no "
-"cost."
+"control to azimuth correction of remote satellite antenna; if it can be done "
+"with a commercial UNIX(R) product then it is more than likely that you can "
+"do it with FreeBSD too! FreeBSD also benefits significantly from literally "
+"thousands of high quality applications developed by research centers and "
+"universities around the world, often available at little to no cost."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:94
msgid ""
"Because the source code for FreeBSD itself is freely available, the system "
"can also be customized to an almost unheard-of degree for special "
"applications or projects, and in ways not generally possible with operating "
"systems from most major commercial vendors. Here is just a sampling of some "
"of the applications in which people are currently using FreeBSD:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:96
msgid ""
"_Internet Services:_ The robust TCP/IP networking built into FreeBSD makes "
"it an ideal platform for a variety of Internet services such as:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:98
msgid "Web servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:99
msgid "IPv4 and IPv6 routing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:100
msgid "Firewalls and NAT (\"IP masquerading\") gateways"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:101
msgid "FTP servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:102
msgid "Email servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:103
msgid "And more..."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:105
msgid ""
"_Education:_ Are you a student of computer science or a related engineering "
"field? There is no better way of learning about operating systems, computer "
"architecture and networking than the hands-on, under-the-hood experience "
"that FreeBSD can provide. A number of freely available CAD, mathematical and "
"graphic design packages also make it highly useful to those whose primary "
"interest in a computer is to get _other_ work done!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:106
msgid ""
"_Research:_ With source code for the entire system available, FreeBSD is an "
"excellent platform for research in operating systems as well as other "
"branches of computer science. FreeBSD's freely available nature also makes "
"it possible for remote groups to collaborate on ideas or shared development "
"without having to worry about special licensing agreements or limitations on "
"what may be discussed in open forums."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:107
msgid ""
"_Networking:_ Need a new router? A name server (DNS)? A firewall to keep "
"people out of your internal network? FreeBSD can easily turn that unused PC "
"sitting in the corner into an advanced router with sophisticated packet-"
"filtering capabilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:108
msgid ""
"_Embedded:_ FreeBSD makes an excellent platform to build embedded systems "
"upon. With support for the ARM(R), MIPS(R) and PowerPC(R) platforms, coupled "
"with a robust network stack, cutting edge features, and the permissive "
"extref:{faq}[BSD license, bsd-license-restrictions], FreeBSD makes an "
"excellent foundation for building embedded routers, firewalls, and other "
"devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:109
msgid ""
"_Desktop:_ FreeBSD makes a fine choice for an inexpensive desktop solution "
-"using the freely available X11 server. FreeBSD offers a choice from many "
-"open-source desktop environments, including the standard GNOME and KDE "
-"graphical user interfaces. FreeBSD can even boot \"diskless\" from a central "
-"server, making individual workstations even cheaper and easier to administer."
+"using the freely available X11 server and Wayland display server. FreeBSD "
+"offers a choice from many open-source desktop environments, including the "
+"standard GNOME and KDE graphical user interfaces. FreeBSD can even boot "
+"\"diskless\" from a central server, making individual workstations even "
+"cheaper and easier to administer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:110
msgid ""
"_Software Development:_ The basic FreeBSD system comes with a full suite of "
"development tools including a full C/C++ compiler and debugger suite. "
"Support for many other languages are also available through the ports and "
"packages collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/introduction/_index.adoc:113
msgid ""
"FreeBSD is available to download free of charge, or can be obtained on "
"either CD-ROM or DVD. Please see crossref:mirrors[mirrors, Obtaining "
"FreeBSD] for more information about obtaining FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/introduction/_index.adoc:115
#, no-wrap
msgid "Who Uses FreeBSD?"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:118
+#: documentation/content/en/books/handbook/introduction/_index.adoc:120
msgid ""
-"FreeBSD has been known for its web serving capabilities - sites that run on "
-"FreeBSD include link:https://news.ycombinator.com/[Hacker News], link:http://"
-"www.netcraft.com/[Netcraft], link:http://www.163.com/[NetEase], link:https://"
-"signup.netflix.com/openconnect[Netflix], link:http://www.sina.com/[Sina], "
-"link:http://www.sony.co.jp/[Sony Japan], link:http://www.rambler.ru/"
-"[Rambler], link:http://www.yahoo.com/[Yahoo!], and link:http://www.yandex.ru/"
-"[Yandex]."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:121
-msgid ""
-"FreeBSD's advanced features, proven security, predictable release cycle, and "
-"permissive license have led to its use as a platform for building many "
-"commercial and open source appliances, devices, and products. Many of the "
-"world's largest IT companies use FreeBSD:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:123
-msgid ""
-"link:http://www.apache.org/[Apache] - The Apache Software Foundation runs "
-"most of its public-facing infrastructure on FreeBSD, including possibly one "
-"of the largest SVN repositories in the world with over 1.4 million commits."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:124
-msgid ""
-"link:http://www.apple.com/[Apple] - OS X borrows heavily from FreeBSD for "
-"the network stack, virtual file system, and many userland components. Apple "
-"iOS also contains elements borrowed from FreeBSD."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:125
-msgid ""
-"link:http://www.cisco.com/[Cisco] - IronPort network security and anti-spam "
-"appliances run a modified FreeBSD kernel."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:126
-msgid ""
-"link:http://www.citrix.com/[Citrix] - The NetScaler line of security "
-"appliances provide layer 4-7 load balancing, content caching, application "
-"firewall, secure VPN, and mobile cloud network access, along with the power "
-"of a FreeBSD shell."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:127
-msgid ""
-"link:https://www.emc.com/isilon[Dell EMC Isilon] - Isilon's enterprise "
-"storage appliances are based on FreeBSD. The extremely liberal FreeBSD "
-"license allowed Isilon to integrate their intellectual property throughout "
-"the kernel and focus on building their product instead of an operating "
-"system."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:128
-msgid ""
-"link:http://www.quest.com/KACE[Quest KACE] - The KACE system management "
-"appliances run FreeBSD because of its reliability, scalability, and the "
-"community that supports its continued development."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:129
-msgid ""
-"link:http://www.ixsystems.com/[iXsystems] - The TrueNAS line of unified "
-"storage appliances is based on FreeBSD."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:130
-msgid ""
-"link:http://www.juniper.net/[Juniper] - The JunOS operating system that "
-"powers all Juniper networking gear (including routers, switches, and "
-"security and networking appliances) is based on FreeBSD. Juniper is one of "
-"many vendors that showcases the symbiotic relationship between the project "
-"and vendors of commercial products. Improvements generated at Juniper are "
-"upstreamed into FreeBSD to reduce the complexity of integrating new features "
-"from FreeBSD back into JunOS in the future."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:131
-msgid ""
-"link:http://www.mcafee.com/[McAfee] - SecurOS, the basis of McAfee "
-"enterprise firewall products including Sidewinder, is based on FreeBSD."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:132
-msgid ""
-"link:http://www.netapp.com/[NetApp] - The Data ONTAP GX line of storage "
-"appliances are based on FreeBSD. In addition, NetApp has contributed back "
-"many features, including the new BSD licensed hypervisor, bhyve."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:133
-msgid ""
-"link:http://www.netflix.com/[Netflix] - The OpenConnect appliance that "
-"Netflix uses to stream movies to its customers is based on FreeBSD. Netflix "
-"has made extensive contributions to the codebase and works to maintain a "
-"zero delta from mainline FreeBSD. Netflix OpenConnect appliances are "
-"responsible for delivering more than 32% of all Internet traffic in North "
-"America."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:134
-msgid ""
-"link:http://www.sandvine.com/[Sandvine] - Sandvine uses FreeBSD as the basis "
-"of their high performance real-time network processing platforms that make "
-"up their intelligent network policy control products."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:135
-msgid ""
-"link:http://www.sony.com/[Sony] - The PlayStation Vita, PlayStation 4, and "
-"PlayStation 5 gaming consoles run a modified version of FreeBSD."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:136
-msgid ""
-"link:http://www.sophos.com/[Sophos] - The Sophos Email Appliance product is "
-"based on a hardened FreeBSD and scans inbound mail for spam and viruses, "
-"while also monitoring outbound mail for malware as well as the accidental "
-"loss of sensitive information."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:137
-msgid ""
-"link:http://www.spectralogic.com/[Spectra Logic] - The nTier line of archive "
-"grade storage appliances run FreeBSD and OpenZFS."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:138
-msgid ""
-"link:https://www.stormshield.com[Stormshield] - Stormshield Network Security "
-"appliances are based on a hardened version of FreeBSD. The BSD license "
-"allows them to integrate their own intellectual property with the system "
-"while returning a great deal of interesting development to the community."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:139
-msgid ""
-"link:http://www.weather.com/[The Weather Channel] - The IntelliStar "
-"appliance that is installed at each local cable provider's headend and is "
-"responsible for injecting local weather forecasts into the cable TV "
-"network's programming runs FreeBSD."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:140
-msgid ""
-"link:http://www.verisign.com/[Verisign] - Verisign is responsible for "
-"operating the .com and .net root domain registries as well as the "
-"accompanying DNS infrastructure. They rely on a number of different network "
-"operating systems including FreeBSD to ensure there is no common point of "
-"failure in their infrastructure."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:141
-msgid ""
-"link:http://www.voxer.com/[Voxer] - Voxer powers their mobile voice "
-"messaging platform with ZFS on FreeBSD. Voxer switched from a Solaris "
-"derivative to FreeBSD because of its superior documentation, larger and more "
-"active community, and more developer friendly environment. In addition to "
-"critical features like ZFS and DTrace, FreeBSD also offers TRIM support for "
-"ZFS."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:142
-msgid ""
-"link:https://fudosecurity.com/en/[Fudo Security] - The FUDO security "
-"appliance allows enterprises to monitor, control, record, and audit "
-"contractors and administrators who work on their systems. Based on all of "
-"the best security features of FreeBSD including ZFS, GELI, Capsicum, HAST, "
-"and auditdistd."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:144
-msgid "FreeBSD has also spawned a number of related open source projects:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:146
-msgid ""
-"link:http://bsdrp.net/[BSD Router] - A FreeBSD-based replacement for large "
-"enterprise routers, designed to run on standard PC hardware."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:147
-msgid ""
-"link:https://www.truenas.com/[TrueNAS] is a Network Attached Storage (NAS) "
-"software that shares and protects data from modern-day threats like "
-"ransomware and malware. TrueNAS makes it easy for users and client devices "
-"to access shared data through virtually any sharing protocol."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:148
-msgid ""
-"link:https://ghostbsd.org/[GhostBSD] is derived from FreeBSD and uses the "
-"GTK environment to provide a beautiful look and comfortable experience on "
-"the modern BSD platform, offering a natural and native UNIX(R) work "
-"environment."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:149
-msgid ""
-"link:http://mfsbsd.vx.sk/[mfsBSD] - A toolkit for building a FreeBSD system "
-"image that runs entirely from memory."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:150
-msgid ""
-"link:https://xigmanas.com/[XigmaNAS] - A file server distribution based on "
-"FreeBSD with a PHP-powered web interface."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:151
-msgid ""
-"link:http://www.opnsense.org/[OPNSense] is an open source, easy-to-use and "
-"easy-to-build FreeBSD-based firewall and routing platform. OPNsense includes "
-"most of the features available in expensive commercial firewalls, and more "
-"in many cases. It brings the rich feature set of commercial offerings with "
-"the benefits of open and verifiable sources."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:152
-msgid ""
-"link:https://www.midnightbsd.org[MidnightBSD] is a FreeBSD-derived operating "
-"system developed with desktop users in mind. It includes all the software "
-"expected for daily tasks such as mail, web browsing, word processing, "
-"gaming, and much more."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:153
-msgid ""
-"link:https://www.nomadbsd.org[NomadBSD] is a persistent live system for USB "
-"flash drives, based on FreeBSD. Together with automatic hardware detection "
-"and setup, it is configured to be used as a desktop system that works out of "
-"the box, but can also be used for data recovery, for educational purposes, "
-"or to test FreeBSD's hardware compatibility."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:154
-msgid ""
-"link:http://www.pfsense.org/[pfSense] - A firewall distribution based on "
-"FreeBSD with a huge array of features and extensive IPv6 support."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:155
-msgid ""
-"link:http://zrouter.org/[ZRouter] - An open source alternative firmware for "
-"embedded devices based on FreeBSD. Designed to replace the proprietary "
-"firmware on off-the-shelf routers."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:158
-msgid ""
-"A list of link:https://www.freebsdfoundation.org/about/testimonials/"
-"[testimonials from companies basing their products and services on FreeBSD] "
-"can be found at the FreeBSD Foundation website. Wikipedia also maintains a "
-"link:https://en.wikipedia.org/wiki/List_of_products_based_on_FreeBSD[list of "
-"products based on FreeBSD]."
+"FreeBSD has been known for its web serving capabilities. A list of link:"
+"https://www.freebsdfoundation.org/about/testimonials/[testimonials from "
+"companies basing their products and services on FreeBSD] can be found at the "
+"FreeBSD Foundation website. Wikipedia also maintains a link:https://en."
+"wikipedia.org/wiki/List_of_products_based_on_FreeBSD[list of products based "
+"on FreeBSD]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/introduction/_index.adoc:160
+#: documentation/content/en/books/handbook/introduction/_index.adoc:122
#, no-wrap
msgid "About the FreeBSD Project"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:163
+#: documentation/content/en/books/handbook/introduction/_index.adoc:125
msgid ""
"The following section provides some background information on the project, "
"including a brief history, project goals, and the development model of the "
"project."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/introduction/_index.adoc:165
+#: documentation/content/en/books/handbook/introduction/_index.adoc:127
#, no-wrap
msgid "A Brief History of FreeBSD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:168
+#: documentation/content/en/books/handbook/introduction/_index.adoc:130
msgid ""
"The FreeBSD Project had its genesis in the early part of 1993, partially as "
"the brainchild of the Unofficial 386BSDPatchkit's last 3 coordinators: Nate "
"Williams, Rod Grimes and Jordan Hubbard."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:171
+#: documentation/content/en/books/handbook/introduction/_index.adoc:133
msgid ""
"The original goal was to produce an intermediate snapshot of 386BSD in order "
"to fix a number of problems that the patchkit mechanism was just not capable "
"of solving. The early working title for the project was 386BSD 0.5 or "
-"386BSD Interim in reference of that fact."
+"386BSD Interim in reference to that fact."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:175
+#: documentation/content/en/books/handbook/introduction/_index.adoc:137
msgid ""
"386BSD was Bill Jolitz's operating system, which had been up to that point "
"suffering rather severely from almost a year's worth of neglect. As the "
"patchkit swelled ever more uncomfortably with each passing day, they decided "
"to assist Bill by providing this interim \"cleanup\" snapshot. Those plans "
"came to a rude halt when Bill Jolitz suddenly decided to withdraw his "
"sanction from the project without any clear indication of what would be done "
"instead."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:180
+#: documentation/content/en/books/handbook/introduction/_index.adoc:142
msgid ""
"The trio thought that the goal remained worthwhile, even without Bill's "
"support, and so they adopted the name \"FreeBSD\" coined by David Greenman. "
"The initial objectives were set after consulting with the system's current "
"users and, once it became clear that the project was on the road to perhaps "
"even becoming a reality, Jordan contacted Walnut Creek CDROM with an eye "
"toward improving FreeBSD's distribution channels for those many unfortunates "
"without easy access to the Internet. Walnut Creek CDROM not only supported "
"the idea of distributing FreeBSD on CD but also went so far as to provide "
"the project with a machine to work on and a fast Internet connection. "
"Without Walnut Creek CDROM's almost unprecedented degree of faith in what "
"was, at the time, a completely unknown project, it is quite unlikely that "
"FreeBSD would have gotten as far, as fast, as it has today."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:184
+#: documentation/content/en/books/handbook/introduction/_index.adoc:146
msgid ""
"The first CD-ROM (and general net-wide) distribution was FreeBSD 1.0, "
"released in December of 1993. This was based on the 4.3BSD-Lite (\"Net/2\") "
"tape from U.C. Berkeley, with many components also provided by 386BSD and "
"the Free Software Foundation. It was a fairly reasonable success for a "
"first offering, and they followed it with the highly successful FreeBSD 1.1 "
"release in May of 1994."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:190
+#: documentation/content/en/books/handbook/introduction/_index.adoc:152
msgid ""
"Around this time, some rather unexpected storm clouds formed on the horizon "
"as Novell and U.C. Berkeley settled their long-running lawsuit over the "
"legal status of the Berkeley Net/2 tape. A condition of that settlement was "
-"U.C. Berkeley's concession that large parts of Net/2 were \"encumbered\" "
-"code and the property of Novell, who had in turn acquired it from AT&T some "
-"time previously. What Berkeley got in return was Novell's \"blessing\" that "
-"the 4.4BSD-Lite release, when it was finally released, would be declared "
-"unencumbered and all existing Net/2 users would be strongly encouraged to "
-"switch. This included FreeBSD, and the project was given until the end of "
-"July 1994 to stop shipping its own Net/2 based product. Under the terms of "
-"that agreement, the project was allowed one last release before the "
-"deadline, that release being FreeBSD 1.1.5.1."
+"U.C. Berkeley's concession that three files of Net/2 were \"encumbered\" "
+"code and had to be removed as they were the property of Novell, who had in "
+"turn acquired it from AT&T some time previously. What Berkeley got in "
+"return was Novell's \"blessing\" that the 4.4BSD-Lite release, when it was "
+"finally released, would be declared unencumbered and all existing Net/2 "
+"users would be strongly encouraged to switch. This included FreeBSD, and "
+"the project was given until the end of July 1994 to stop shipping its own "
+"Net/2 based product. Under the terms of that agreement, the project was "
+"allowed one last release before the deadline, that release being FreeBSD "
+"1.1.5.1."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:195
+#: documentation/content/en/books/handbook/introduction/_index.adoc:157
msgid ""
"FreeBSD then set about the arduous task of literally re-inventing itself "
-"from a completely new and rather incomplete set of 4.4BSD-Lite bits. The "
-"\"Lite\" releases were light in part because Berkeley's CSRG had removed "
-"large chunks of code required for actually constructing a bootable running "
-"system (due to various legal requirements) and the fact that the Intel port "
-"of 4.4 was highly incomplete. It took the project until November of 1994 to "
-"make this transition, and in December it released FreeBSD 2.0 to the world. "
-"Despite being still more than a little rough around the edges, the release "
-"was a significant success and was followed by the more robust and easier to "
-"install FreeBSD 2.0.5 release in June of 1995."
+"from a completely new and rather incomplete set of 4.4BSD-Lite bits. "
+"Although only three files having to do with System V shared memory and "
+"semaphores were removed, many other changes and bug fixes had been made to "
+"the BSD distribution, so it was a huge task to merge all the FreeBSD "
+"developments into 4.4BSD-Lite. It took the project until November of 1994 "
+"to make this transition, and in December it released FreeBSD 2.0 to the "
+"world. Despite being still more than a little rough around the edges, the "
+"release was a significant success and was followed by the more robust and "
+"easier to install FreeBSD 2.0.5 release in June of 1995."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:197
+#: documentation/content/en/books/handbook/introduction/_index.adoc:159
msgid ""
"Since that time, FreeBSD has made a series of releases each time improving "
"the stability, speed, and feature set of the previous version."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:199
+#: documentation/content/en/books/handbook/introduction/_index.adoc:161
msgid ""
"For now, long-term development projects continue to take place in the {rel-"
"head}-CURRENT (main) branch, and snapshot releases of {rel-head} are "
"continually made available from link:https://download.freebsd.org/snapshots/"
"[the snapshot server] as work progresses."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/introduction/_index.adoc:201
+#: documentation/content/en/books/handbook/introduction/_index.adoc:163
#, no-wrap
msgid "FreeBSD Project Goals"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:207
+#: documentation/content/en/books/handbook/introduction/_index.adoc:169
msgid ""
"The goals of the FreeBSD Project are to provide software that may be used "
"for any purpose and without strings attached. Many of us have a significant "
"investment in the code (and project) and would certainly not mind a little "
"financial compensation now and then, but we are definitely not prepared to "
"insist on it. We believe that our first and foremost \"mission\" is to "
"provide code to any and all comers, and for whatever purpose, so that the "
"code gets the widest possible use and provides the widest possible benefit. "
"This is, I believe, one of the most fundamental goals of Free Software and "
"one that we enthusiastically support."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:210
+#: documentation/content/en/books/handbook/introduction/_index.adoc:172
msgid ""
"That code in our source tree which falls under the GNU General Public "
"License (GPL) or Library General Public License (LGPL) comes with slightly "
"more strings attached, though at least on the side of enforced access rather "
"than the usual opposite. Due to the additional complexities that can evolve "
"in the commercial use of GPL software we do, however, prefer software "
"submitted under the more relaxed BSD license when it is a reasonable option "
"to do so."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/introduction/_index.adoc:212
+#: documentation/content/en/books/handbook/introduction/_index.adoc:174
#, no-wrap
msgid "The FreeBSD Development Model"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:217
+#: documentation/content/en/books/handbook/introduction/_index.adoc:179
msgid ""
"The development of FreeBSD is a extref:{dev-model}[very open and flexible "
"process], being literally built from the contributions of thousands of "
"people around the world, as can be seen from our extref:{contributors}[list "
"of contributors]. FreeBSD's development infrastructure allows these "
"thousands of contributors to collaborate over the Internet. We are "
"constantly on the lookout for new volunteers, and those interested in "
"becoming more closely involved should consult the article on extref:"
"{contributing}[Contributing to FreeBSD]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:219
+#: documentation/content/en/books/handbook/introduction/_index.adoc:181
msgid ""
"Useful things to know about the FreeBSD Project and its development process, "
"whether working independently or in close cooperation:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:220
+#: documentation/content/en/books/handbook/introduction/_index.adoc:182
#, no-wrap
msgid "The Git repositories[[development-cvs-repository]]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:227
+#: documentation/content/en/books/handbook/introduction/_index.adoc:189
msgid ""
"For several years, the central source tree for FreeBSD was maintained by "
"link:http://www.nongnu.org/cvs/[CVS] (Concurrent Versions System), a freely "
"available source code control tool. In June 2008, the Project switched to "
"using link:https://subversion.apache.org/[SVN] (Subversion). The switch was "
"deemed necessary, as the technical limitations imposed by CVS were becoming "
"obvious due to the rapid expansion of the source tree and the amount of "
"history already stored. The Documentation Project and Ports Collection "
"repositories also moved from CVS to SVN in May 2012 and July 2012, "
"respectively. In December 2020, the Project link:https://www.freebsd.org/"
"status/report-2020-10-2020-12.html#Git-Migration-Working-Group[migrated "
"Source and Documentation repositories] to link:https://git-scm.com/[Git], "
"with link:https://www.freebsd.org/status/report-2021-04-2021-06/"
"#_git_migration_working_group[Ports following suit] in April 2021. Please "
"refer to the crossref:cutting-edge[synching, Obtaining the Source] section "
"for more information on obtaining the FreeBSD `src/` repository and crossref:"
"ports[ports-using, Using the Ports Collection] for details on obtaining the "
"FreeBSD Ports Collection."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:228
+#: documentation/content/en/books/handbook/introduction/_index.adoc:190
#, no-wrap
msgid "The committers list[[development-committers]]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:232
+#: documentation/content/en/books/handbook/introduction/_index.adoc:194
msgid ""
"The _committers_ are the people who have _push_ access to the Git "
"repository, and are authorized to make modifications to the FreeBSD source "
"(the term \"committer\" comes from `commit`, the source control command "
"which is used to bring new changes into the repository). Anyone can submit "
"a bug to the link:https://bugs.FreeBSD.org/submit/[Bug Database]. Before "
"submitting a bug report, the FreeBSD mailing lists, IRC channels, or forums "
"can be used to help verify that an issue is actually a bug."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:233
+#: documentation/content/en/books/handbook/introduction/_index.adoc:195
#, no-wrap
msgid "The FreeBSD core team[[development-core]]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:239
+#: documentation/content/en/books/handbook/introduction/_index.adoc:201
msgid ""
"The _FreeBSD core team_ would be equivalent to the board of directors if the "
"FreeBSD Project were a company. The primary task of the core team is to "
"make sure the project, as a whole, is in good shape and is heading in the "
"right directions. Inviting dedicated and responsible developers to join our "
"group of committers is one of the functions of the core team, as is the "
"recruitment of new core team members as others move on. The current core "
"team was elected from a pool of committer candidates in May 2022. Elections "
"are held every 2 years."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/introduction/_index.adoc:244
+#: documentation/content/en/books/handbook/introduction/_index.adoc:206
msgid ""
"Like most developers, most members of the core team are also volunteers when "
"it comes to FreeBSD development and do not benefit from the project "
"financially, so \"commitment\" should also not be misconstrued as meaning "
"\"guaranteed support.\" The \"board of directors\" analogy above is not very "
"accurate, and it may be more suitable to say that these are the people who "
"gave up their lives in favor of FreeBSD against their better judgement!"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:246
+#: documentation/content/en/books/handbook/introduction/_index.adoc:208
#, no-wrap
msgid "The FreeBSD Foundation[[development-foundation]]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:253
+#: documentation/content/en/books/handbook/introduction/_index.adoc:215
msgid ""
"The link:https://freebsdfoundation.org[FreeBSD Foundation] is a 501(c)(3), "
"US-based, non-profit organization dedicated to supporting and promoting the "
"FreeBSD Project and community worldwide. The Foundation funds software "
"development via project grants and provides staff to immediately respond to "
"urgent problems and implement new features and functionality. The "
"Foundation purchases hardware to improve and maintain FreeBSD "
"infrastructure, and funds staffing to improve test coverage, continuous "
"integration and automation. The Foundation advocates for FreeBSD by "
"promoting FreeBSD at technical conferences and events around the world. The "
"Foundation also provides workshops, educational material, and presentations "
"to recruit more users and contributors to FreeBSD. The Foundation also "
"represents the FreeBSD Project in executing contracts, license agreements, "
"and other legal arrangements that require a recognized legal entity."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:254
+#: documentation/content/en/books/handbook/introduction/_index.adoc:216
#, no-wrap
msgid "Outside contributors"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:260
+#: documentation/content/en/books/handbook/introduction/_index.adoc:222
msgid ""
"Last, but definitely not least, the largest group of developers are the "
"users themselves who provide feedback and bug fixes to us on an almost "
"constant basis. The primary way of keeping in touch with the development of "
"the FreeBSD base system is to subscribe to the {freebsd-hackers} where such "
"things are discussed. For porting third party applications, it would be the "
"{freebsd-ports}. For documentation - {freebsd-doc}. See crossref:"
"eresources[eresources, Resources on the Internet] for more information about "
"the various FreeBSD mailing lists."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:263
+#: documentation/content/en/books/handbook/introduction/_index.adoc:225
msgid ""
"extref:{contributors}[The FreeBSD Contributors List] is a long and growing "
"one, so why not join it by extref:{contributing}[contributing something back "
"to FreeBSD] today? Providing code is not the only way!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:267
+#: documentation/content/en/books/handbook/introduction/_index.adoc:229
msgid ""
"In summary, our development model is organized as a loose set of concentric "
"circles. The centralized model is designed for the convenience of the "
"_users_ of FreeBSD, who are provided with an easy way of tracking one "
"central code base, not to keep potential contributors out! Our desire is to "
"present a stable operating system with a large set of coherent crossref:"
"ports[ports,application programs] that the users can easily install and use "
"- this model works very well in accomplishing that."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:269
+#: documentation/content/en/books/handbook/introduction/_index.adoc:231
msgid ""
"All we ask of those who would join us as FreeBSD developers is some of the "
"same dedication its current people have to its continued success!"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/introduction/_index.adoc:271
+#: documentation/content/en/books/handbook/introduction/_index.adoc:233
#, no-wrap
msgid "Third Party Programs"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:278
+#: documentation/content/en/books/handbook/introduction/_index.adoc:240
msgid ""
"In addition to the base distributions, FreeBSD offers a ported software "
"collection with thousands of commonly sought-after programs. The list of "
"ports ranges from HTTP servers to games, languages, editors, and almost "
"everything in between. There are about {numports} ports; the entire Ports "
"Collection requires approximately {ports-size}. To compile a port, you "
"simply change to the directory of the program you wish to install, type "
"`make install`, and let the system do the rest. The full original "
"distribution for each port you build is retrieved dynamically so you need "
"only enough disk space to build the ports you want."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:281
+#: documentation/content/en/books/handbook/introduction/_index.adoc:243
msgid ""
"Almost every port is also provided as a pre-compiled \"package\", which can "
"be installed with a simple command (`pkg install`) by those who do not wish "
"to compile their own ports from source. More information on packages and "
"ports can be found in crossref:ports[ports,Installing Applications: Packages "
"and Ports]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/introduction/_index.adoc:282
+#: documentation/content/en/books/handbook/introduction/_index.adoc:244
#, no-wrap
msgid "Additional Documentation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:286
+#: documentation/content/en/books/handbook/introduction/_index.adoc:248
msgid ""
"All supported FreeBSD versions provide an option in the installer to install "
"additional documentation under [.filename]#/usr/local/share/doc/freebsd# "
"during the initial system setup. Documentation may also be installed later "
"using packages:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/introduction/_index.adoc:289
+#: documentation/content/en/books/handbook/introduction/_index.adoc:252
#, no-wrap
msgid "# pkg install en-freebsd-doc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:294
+#: documentation/content/en/books/handbook/introduction/_index.adoc:257
msgid ""
-"For localized versions replace the \"en\" with language prefix of choice. "
-"Be aware that some of the localised versions might be out of date and might "
-"contain information that is no longer correct or relevant. You may view the "
-"locally installed manuals with a web browser using the following URLs:"
+"For localized versions replace the \"en\" with the language prefix of "
+"choice. Be aware that some of the localised versions might be out of date "
+"and might contain information that is no longer correct or relevant. You "
+"may view the locally installed manuals with a web browser using the "
+"following URLs:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:295
+#: documentation/content/en/books/handbook/introduction/_index.adoc:258
#, no-wrap
msgid "The FreeBSD Handbook"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:297
-msgid ""
-"[.filename]#link:file:///usr/local/share/doc/freebsd/en/books/handbook/book."
-"html[/usr/local/share/doc/freebsd/en/books/handbook/book.html]#"
+#: documentation/content/en/books/handbook/introduction/_index.adoc:260
+msgid "`/usr/local/share/doc/freebsd/en/books/handbook/handbook_en.pdf`"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/introduction/_index.adoc:298
+#: documentation/content/en/books/handbook/introduction/_index.adoc:261
#, no-wrap
msgid "The FreeBSD FAQ"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:300
-msgid ""
-"[.filename]#link:file://localhost/usr/local/share/doc/freebsd/en/books/faq/"
-"book.html[/usr/local/share/doc/freebsd/en/books/faq/book.html]#"
+#: documentation/content/en/books/handbook/introduction/_index.adoc:263
+msgid "`/usr/local/share/doc/freebsd/en/books/faq/faq_en.pdf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/introduction/_index.adoc:301
+#: documentation/content/en/books/handbook/introduction/_index.adoc:264
msgid ""
"You can always find up to date documentation at link:https://docs.FreeBSD."
-"org/[https://docs.FreeBSD.org/]."
+"org/[The Documentation Portal]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/jails/_index.po b/documentation/content/en/books/handbook/jails/_index.po
index e6a122cc30..19236e3600 100644
--- a/documentation/content/en/books/handbook/jails/_index.po
+++ b/documentation/content/en/books/handbook/jails/_index.po
@@ -1,2389 +1,2389 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/jails/_index.adoc:1
#, no-wrap
msgid "Jails improve on the concept of the traditional chroot environment in several ways"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/jails/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/jails/_index.adoc:1
#, no-wrap
-msgid "Chapter 15. Jails"
+msgid "Chapter 16. Jails"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/jails/_index.adoc:15
#, no-wrap
msgid "Jails"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:59
msgid ""
"Since system administration is a difficult task, many tools have been "
"developed to make life easier for the administrator. These tools often "
"enhance the way systems are installed, configured, and maintained. One of "
"the tools which can be used to enhance the security of a FreeBSD system is "
"_jails_. Jails have been available since FreeBSD 4.X and continue to be "
"enhanced in their usefulness, performance, reliability, and security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:67
msgid ""
"Jails build upon the man:chroot[2] concept, which is used to change the root "
"directory of a set of processes. This creates a safe environment, separate "
"from the rest of the system. Processes created in the chrooted environment "
"can not access files or resources outside of it. For that reason, "
"compromising a service running in a chrooted environment should not allow "
"the attacker to compromise the entire system. However, a chroot has several "
"limitations. It is suited to easy tasks which do not require much "
"flexibility or complex, advanced features. Over time, many ways have been "
"found to escape from a chrooted environment, making it a less than ideal "
"solution for securing services."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:74
msgid ""
"Jails improve on the concept of the traditional chroot environment in "
"several ways. In a traditional chroot environment, processes are only "
"limited in the part of the file system they can access. The rest of the "
"system resources, system users, running processes, and the networking "
"subsystem are shared by the chrooted processes and the processes of the host "
"system. Jails expand this model by virtualizing access to the file system, "
"the set of users, and the networking subsystem. More fine-grained controls "
"are available for tuning the access of a jailed environment. Jails can be "
"considered as a type of operating system-level virtualization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:76
msgid "A jail is characterized by four elements:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:78
msgid ""
"A directory subtree: the starting point from which a jail is entered. Once "
"inside the jail, a process is not permitted to escape outside of this "
"subtree."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:79
msgid "A hostname: which will be used by the jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:80
msgid ""
"An IP address: which is assigned to the jail. The IP address of a jail is "
"often an alias address for an existing network interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:81
msgid ""
"A command: the path name of an executable to run inside the jail. The path "
"is relative to the root directory of the jail environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:84
msgid ""
"Jails have their own set of users and their own `root` account which are "
"limited to the jail environment. The `root` account of a jail is not "
"allowed to perform operations to the system outside of the associated jail "
"environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:87
msgid ""
"This chapter provides an overview of the terminology and commands for "
"managing FreeBSD jails. Jails are a powerful tool for both system "
"administrators, and advanced users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:89
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:91
msgid "What a jail is and what purpose it may serve in FreeBSD installations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:92
msgid "How to build, start, and stop a jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:93
msgid ""
"The basics of jail administration, both from inside and outside the jail."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:98
msgid ""
"Jails are a powerful tool, but they are not a security panacea. While it is "
"not possible for a jailed process to break out on its own, there are several "
"ways in which an unprivileged user outside the jail can cooperate with a "
"privileged user inside the jail to obtain elevated privileges in the host "
"environment."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:101
msgid ""
"Most of these attacks can be mitigated by ensuring that the jail root is not "
"accessible to unprivileged users in the host environment. As a general "
"rule, untrusted users with privileged access to a jail should not be given "
"access to the host environment."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:104
#, no-wrap
msgid "Terms Related to Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:107
msgid ""
"To facilitate better understanding of parts of the FreeBSD system related to "
"jails, their internals and the way they interact with the rest of FreeBSD, "
"the following terms are used further in this chapter:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/jails/_index.adoc:108
#, no-wrap
msgid "man:chroot[8] (command)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:110
msgid ""
"Utility, which uses man:chroot[2] FreeBSD system call to change the root "
"directory of a process and all its descendants."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/jails/_index.adoc:111
#, no-wrap
msgid "man:chroot[2] (environment)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:114
msgid ""
"The environment of processes running in a \"chroot\". This includes "
"resources such as the part of the file system which is visible, user and "
"group IDs which are available, network interfaces and other IPC mechanisms, "
"etc."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/jails/_index.adoc:115
#, no-wrap
msgid "man:jail[8] (command)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:117
msgid ""
"The system administration utility which allows launching of processes within "
"a jail environment."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/jails/_index.adoc:118
#, no-wrap
msgid "host (system, process, user, etc.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:122
msgid ""
"The controlling system of a jail environment. The host system has access to "
"all the hardware resources available, and can control processes both outside "
"of and inside a jail environment. One of the important differences of the "
"host system from a jail is that the limitations which apply to superuser "
"processes inside a jail are not enforced for processes of the host system."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/jails/_index.adoc:123
#, no-wrap
msgid "hosted (system, process, user, etc.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:125
msgid ""
"A process, user or other entity, whose access to resources is restricted by "
"a FreeBSD jail."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:127
#, no-wrap
msgid "Creating and Controlling Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:132
msgid ""
"Some administrators divide jails into the following two types: \"complete\" "
"jails, which resemble a real FreeBSD system, and \"service\" jails, "
"dedicated to one application or service, possibly running with privileges. "
"This is only a conceptual division and the process of building a jail is not "
"affected by it. When creating a \"complete\" jail there are two options for "
"the source of the userland: use prebuilt binaries (such as those supplied on "
"an install media) or build from source."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:133
#, no-wrap
msgid "Installing a Jail"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:136
#, no-wrap
msgid "To install a Jail from the Internet"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:140
msgid ""
"The man:bsdinstall[8] tool can be used to fetch and install the binaries "
"needed for a jail. This will walk through the picking of a mirror, which "
"distributions will be installed into the destination directory, and some "
"basic configuration of the jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:144
#, no-wrap
msgid "# bsdinstall jail /here/is/the/jail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:147
msgid ""
"Once the command is complete, the next step is configuring the host to run "
"the jail."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:149
#, no-wrap
msgid "To install a Jail from an ISO"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:153
msgid ""
"To install the userland from installation media, first create the root "
"directory for the jail. This can be done by setting the `DESTDIR` variable "
"to the proper location."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:155
msgid "Start a shell and define `DESTDIR`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:160
#, no-wrap
msgid ""
"# sh\n"
"# export DESTDIR=/here/is/the/jail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:163
msgid ""
"Mount the install media as covered in man:mdconfig[8] when using the install "
"ISO:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:168
#, no-wrap
msgid ""
"# mount -t cd9660 /dev/`mdconfig -f cdimage.iso` /mnt\n"
"# cd /mnt/usr/freebsd-dist/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:172
msgid ""
"Extract the binaries from the tarballs on the install media into the "
"declared destination. Minimally, only the base set needs to be extracted, "
"but a complete install can be performed when preferred."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:174
msgid "To install just the base system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:178
#, no-wrap
msgid "# tar -xf base.txz -C $DESTDIR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:181
msgid "To install everything except the kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:185
#, no-wrap
msgid "# for set in base ports; do tar -xf $set.txz -C $DESTDIR ; done\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:188
#, no-wrap
msgid "To build and install a Jail from source"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:191
msgid "The man:jail[8] manual page explains the procedure for building a jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:201
#, no-wrap
msgid ""
"# setenv D /here/is/the/jail\n"
"# mkdir -p $D <.>\n"
"# cd /usr/src\n"
"# make buildworld <.>\n"
"# make installworld DESTDIR=$D <.>\n"
"# make distribution DESTDIR=$D <.>\n"
"# mount -t devfs devfs $D/dev <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:204
msgid ""
"Selecting a location for a jail is the best starting point. This is where "
"the jail will physically reside within the file system of the jail's host. A "
"good choice can be [.filename]#/usr/jail/jailname#, where _jailname_ is the "
"hostname identifying the jail. Usually, [.filename]#/usr/# has enough space "
"for the jail file system, which for \"complete\" jails is, essentially, a "
"replication of every file present in a default installation of the FreeBSD "
"base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:206
msgid ""
"If you have already rebuilt your userland using `make world` or `make "
"buildworld`, you can skip this step and install your existing userland into "
"the new jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:208
msgid ""
"This command will populate the directory subtree chosen as jail's physical "
"location on the file system with the necessary binaries, libraries, manual "
"pages and so on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:209
msgid ""
"The `distribution` target for make installs every needed configuration file. "
"In simple words, it installs every installable file of [.filename]#/usr/src/"
"etc/# to the [.filename]#/etc# directory of the jail environment: [."
"filename]#$D/etc/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:211
msgid ""
"Mounting the man:devfs[8] file system inside a jail is not required. On the "
"other hand, any, or almost any application requires access to at least one "
"device, depending on the purpose of the given application. It is very "
"important to control access to devices from inside a jail, as improper "
"settings could permit an attacker to do nasty things in the jail. Control "
"over man:devfs[8] is managed through rulesets which are described in the man:"
"devfs[8] and man:devfs.conf[5] manual pages."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:212
#, no-wrap
msgid "Configuring the Host"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:219
msgid ""
"Once a jail is installed, it can be started by using the man:jail[8] "
"utility. The man:jail[8] utility takes four mandatory arguments which are "
"described in the <<jails-synopsis>>. Other arguments may be specified too, "
"e.g., to run the jailed process with the credentials of a specific user. "
"The `_command_` argument depends on the type of the jail; for a _virtual "
"system_, [.filename]#/etc/rc# is a good choice, since it will replicate the "
"startup sequence of a real FreeBSD system. For a _service_ jail, it depends "
"on the service or application that will run within the jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:221
msgid ""
"Jails are often started at boot time and the FreeBSD [.filename]#rc# "
"mechanism provides an easy way to do this."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:224
msgid "Configure jail parameters in [.filename]#jail.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:235
#, no-wrap
msgid ""
"www {\n"
" host.hostname = www.example.org; # Hostname\n"
" ip4.addr = 192.168.0.10; # IP address of the jail\n"
" path = \"/usr/jail/www\"; # Path to the jail\n"
" mount.devfs; # Mount devfs inside the jail\n"
" exec.start = \"/bin/sh /etc/rc\"; # Start command\n"
" exec.stop = \"/bin/sh /etc/rc.shutdown\"; # Stop command\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:239
msgid "Configure jails to start at boot time in [.filename]#rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:243
#, no-wrap
msgid "jail_enable=\"YES\" # Set to NO to disable starting of any jails\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:247
msgid ""
"The default startup of jails configured in man:jail.conf[5], will run the [."
"filename]#/etc/rc# script of the jail, which assumes the jail is a complete "
"virtual system. For service jails, the default startup command of the jail "
"should be changed, by setting the `exec.start` option appropriately."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:251
msgid ""
"For a full list of available options, please see the man:jail.conf[5] manual "
"page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:254
msgid ""
"man:service[8] can be used to start or stop a jail by hand, if an entry for "
"it exists in [.filename]#jail.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:259
#, no-wrap
msgid ""
"# service jail start www\n"
"# service jail stop www\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:263
msgid ""
"Jails can be shut down with man:jexec[8]. Use man:jls[8] to identify the "
"jail's `JID`, then use man:jexec[8] to run the shutdown script in that jail."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:270
#, no-wrap
msgid ""
"# jls\n"
" JID IP Address Hostname Path\n"
" 3 192.168.0.10 www /usr/jail/www\n"
"# jexec 3 /etc/rc.shutdown\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:273
msgid ""
"More information about this can be found in the man:jail[8] manual page."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:275
#, no-wrap
msgid "Fine Tuning and Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:279
msgid ""
"There are several options which can be set for any jail, and various ways of "
"combining a host FreeBSD system with jails, to produce higher level "
"applications. This section presents:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:281
msgid ""
"Some of the options available for tuning the behavior and security "
"restrictions implemented by a jail installation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:282
msgid ""
"Some of the high-level applications for jail management, which are available "
"through the FreeBSD Ports Collection, and can be used to implement overall "
"jail-based solutions."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:284
#, no-wrap
msgid "System Tools for Jail Tuning in FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:290
msgid ""
"Fine tuning of a jail's configuration is mostly done by setting man:"
"sysctl[8] variables. A special subtree of sysctl exists as a basis for "
"organizing all the relevant options: the `security.jail.*` hierarchy of "
"FreeBSD kernel options. Here is a list of the main jail-related sysctls, "
"complete with their default value. Names should be self-explanatory, but "
"for more information about them, please refer to the man:jail[8] and man:"
"sysctl[8] manual pages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:292
msgid "`security.jail.set_hostname_allowed: 1`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:293
msgid "`security.jail.socket_unixiproute_only: 1`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:294
msgid "`security.jail.sysvipc_allowed: 0`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:295
msgid "`security.jail.enforce_statfs: 2`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:296
msgid "`security.jail.allow_raw_sockets: 0`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:297
msgid "`security.jail.chflags_allowed: 0`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:298
msgid "`security.jail.jailed: 0`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:303
msgid ""
"These variables can be used by the system administrator of the _host system_ "
"to add or remove some of the limitations imposed by default on the `root` "
"user. Note that there are some limitations which cannot be removed. The "
"`root` user is not allowed to mount or unmount file systems from within a "
"man:jail[8]. The `root` inside a jail may not load or unload man:devfs[8] "
"rulesets, set firewall rules, or do many other administrative tasks which "
"require modifications of in-kernel data, such as setting the `securelevel` "
"of the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:306
msgid ""
"The base system of FreeBSD contains a basic set of tools for viewing "
"information about the active jails, and attaching to a jail to run "
"administrative commands. The man:jls[8] and man:jexec[8] commands are part "
"of the base FreeBSD system, and can be used to perform the following simple "
"tasks:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:308
msgid ""
"Print a list of active jails and their corresponding jail identifier (JID), "
"IP address, hostname and path."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:309
msgid ""
"Attach to a running jail, from its host system, and run a command inside the "
"jail or perform administrative tasks inside the jail itself. This is "
"especially useful when the `root` user wants to cleanly shut down a jail. "
"The man:jexec[8] utility can also be used to start a shell in a jail to do "
"administration in it; for example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:313
#, no-wrap
msgid "# jexec 1 tcsh\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:316
#, no-wrap
msgid "High-Level Administrative Tools in the FreeBSD Ports Collection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:321
msgid ""
"Among the many third-party utilities for jail administration, one of the "
"most complete and useful is package:sysutils/ezjail[]. It is a set of "
"scripts that contribute to man:jail[8] management. Please refer to <<jails-"
"ezjail,the handbook section on ezjail>> for more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:323
#, no-wrap
msgid "Keeping Jails Patched and up to Date"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:328
msgid ""
"Jails should be kept up to date from the host operating system as attempting "
"to patch userland from within the jail may likely fail as the default "
"behavior in FreeBSD is to disallow the use of man:chflags[1] in a jail which "
"prevents the replacement of some files. It is possible to change this "
"behavior but it is recommended to use man:freebsd-update[8] to maintain "
"jails instead. Use `-b` to specify the path of the jail to be updated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:330
msgid ""
"To update the jail to the latest patch release of the version of FreeBSD it "
"is already running, then execute the following commands on the host:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:335
#, no-wrap
msgid ""
"# freebsd-update -b /here/is/the/jail fetch\n"
"# freebsd-update -b /here/is/the/jail install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:340
msgid ""
"To upgrade the jail to a new major or minor version, first upgrade the host "
"system as described in crossref:cutting-edge[freebsdupdate-"
"upgrade,“Performing Major and Minor Version Upgrades”]. Once the host has "
"been upgraded and rebooted, the jail can then be upgraded. For example to "
"upgrade from 12.0-RELEASE to 12.1-RELEASE, on the host run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:347
#, no-wrap
msgid ""
"# freebsd-update -b /here/is/the/jail --currently-running 12.0-RELEASE -r 12.1-RELEASE upgrade\n"
"# freebsd-update -b /here/is/the/jail install\n"
"# service jail restart myjail\n"
"# freebsd-update -b /here/is/the/jail install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:352
msgid ""
"Then, if it was a major version upgrade, reinstall all installed packages "
"and restart the jail again. This is required because the ABI version "
"changes when upgrading between major versions of FreeBSD. From the host:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:357
#, no-wrap
msgid ""
"# pkg -j myjail upgrade -f\n"
"# service jail restart myjail\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:360
#, no-wrap
msgid "Updating Multiple Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:364
msgid ""
"The management of multiple jails can become problematic because every jail "
"has to be rebuilt from scratch whenever it is upgraded. This can be time "
"consuming and tedious if a lot of jails are created and manually updated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:368
msgid ""
"This section demonstrates one method to resolve this issue by safely sharing "
"as much as is possible between jails using read-only man:mount_nullfs[8] "
"mounts, so that updating is simpler. This makes it more attractive to put "
"single services, such as HTTP, DNS, and SMTP, into individual jails. "
"Additionally, it provides a simple way to add, remove, and upgrade jails."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:373
msgid ""
"Simpler solutions exist, such as ezjail, which provides an easier method of "
"administering FreeBSD jails but is less versatile than this setup. ezjail "
"is covered in more detail in <<jails-ezjail>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:376
msgid "The goals of the setup described in this section are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:378
msgid ""
"Create a simple and easy to understand jail structure that does not require "
"running a full installworld on each and every jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:379
msgid "Make it easy to add new jails or remove existing ones."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:380
msgid "Make it easy to update or upgrade existing jails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:381
msgid "Make it possible to run a customized FreeBSD branch."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:382
msgid ""
"Be paranoid about security, reducing as much as possible the possibility of "
"compromise."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:383
msgid "Save space and inodes, as much as possible."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:387
msgid ""
"This design relies on a single, read-only master template which is mounted "
"into each jail and one read-write device per jail. A device can be a "
"separate physical disc, a partition, or a vnode backed memory device. This "
"example uses read-write nullfs mounts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:389
msgid "The file system layout is as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:391
msgid "The jails are based under the [.filename]#/home# partition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:392
msgid "Each jail will be mounted under the [.filename]#/home/j# directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:393
msgid ""
"The template for each jail and the read-only partition for all of the jails "
"is [.filename]#/home/j/mroot#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:394
msgid ""
"A blank directory will be created for each jail under the [.filename]#/home/"
"j# directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:395
msgid ""
"Each jail will have a [.filename]#/s# directory that will be linked to the "
"read-write portion of the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:396
msgid ""
"Each jail will have its own read-write system that is based upon [."
"filename]#/home/j/skel#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:397
msgid ""
"The read-write portion of each jail will be created in [.filename]#/home/js#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:399
#, no-wrap
msgid "Creating the Template"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:402
msgid "This section describes the steps needed to create the master template."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:405
msgid ""
"It is recommended to first update the host FreeBSD system to the latest -"
"RELEASE branch using the instructions in crossref:cutting-"
"edge[makeworld,“Updating FreeBSD from Source”]. Additionally, this template "
"uses the package:sysutils/cpdup[] package or port and link:{handbook}mirrors/"
"#git[Git] will be used to download the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:408
msgid ""
"First, create a directory structure for the read-only file system which will "
"contain the FreeBSD binaries for the jails. Then, change directory to the "
"FreeBSD source tree and install the read-only file system to the jail "
"template:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:414
#, no-wrap
msgid ""
"# mkdir /home/j /home/j/mroot\n"
"# cd /usr/src\n"
"# make installworld DESTDIR=/home/j/mroot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:417
msgid ""
"Next, prepare a FreeBSD Ports Collection for the jails as well as a FreeBSD "
"source tree, which is required for mergemaster:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:424
#, no-wrap
msgid ""
"# cd /home/j/mroot\n"
"# mkdir usr/ports\n"
"# git clone -o freebsd https://git.FreeBSD.org/ports.git /home/j/mroot/usr/ports\n"
"# cpdup /usr/src /home/j/mroot/usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:427
msgid "Create a skeleton for the read-write portion of the system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:436
#, no-wrap
msgid ""
"# mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles\n"
"# mv etc /home/j/skel\n"
"# mv usr/local /home/j/skel/usr-local\n"
"# mv tmp /home/j/skel\n"
"# mv var /home/j/skel\n"
"# mv root /home/j/skel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:439
msgid ""
"Use mergemaster to install missing configuration files. Then, remove the "
"extra directories that mergemaster creates:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:445
#, no-wrap
msgid ""
"# mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i\n"
"# cd /home/j/skel\n"
"# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:448
msgid ""
"Now, symlink the read-write file system to the read-only file system. Ensure "
"that the symlinks are created in the correct [.filename]#s/# locations as "
"the creation of directories in the wrong locations will cause the "
"installation to fail."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:461
#, no-wrap
msgid ""
"# cd /home/j/mroot\n"
"# mkdir s\n"
"# ln -s s/etc etc\n"
"# ln -s s/home home\n"
"# ln -s s/root root\n"
"# ln -s ../s/usr-local usr/local\n"
"# ln -s ../s/usr-X11R6 usr/X11R6\n"
"# ln -s ../../s/distfiles usr/ports/distfiles\n"
"# ln -s s/tmp tmp\n"
"# ln -s s/var var\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:464
msgid ""
"As a last step, create a generic [.filename]#/home/j/skel/etc/make.conf# "
"containing this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:468
#, no-wrap
msgid "WRKDIRPREFIX?= /s/portbuild\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:473
msgid ""
"This makes it possible to compile FreeBSD ports inside each jail. Remember "
"that the ports directory is part of the read-only system. The custom path "
"for `WRKDIRPREFIX` allows builds to be done in the read-write portion of "
"every jail."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:475
#, no-wrap
msgid "Creating Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:479
msgid ""
"The jail template can now be used to setup and configure the jails in [."
"filename]#/etc/rc.conf#. This example demonstrates the creation of 3 jails: "
"`NS`, `MAIL` and `WWW`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:482
msgid ""
"Add the following lines to [.filename]#/etc/fstab#, so that the read-only "
"template for the jails and the read-write space will be available in the "
"respective jails:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:491
#, no-wrap
msgid ""
"/home/j/mroot /home/j/ns nullfs ro 0 0\n"
"/home/j/mroot /home/j/mail nullfs ro 0 0\n"
"/home/j/mroot /home/j/www nullfs ro 0 0\n"
"/home/js/ns /home/j/ns/s nullfs rw 0 0\n"
"/home/js/mail /home/j/mail/s nullfs rw 0 0\n"
"/home/js/www /home/j/www/s nullfs rw 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:494
msgid ""
"To prevent fsck from checking nullfs mounts during boot and dump from "
"backing up the read-only nullfs mounts of the jails, the last two columns "
"are both set to `0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:495
msgid "Configure the jails in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:513
#, no-wrap
msgid ""
"jail_enable=\"YES\"\n"
"jail_set_hostname_allow=\"NO\"\n"
"jail_list=\"ns mail www\"\n"
"jail_ns_hostname=\"ns.example.org\"\n"
"jail_ns_ip=\"192.168.3.17\"\n"
"jail_ns_rootdir=\"/usr/home/j/ns\"\n"
"jail_ns_devfs_enable=\"YES\"\n"
"jail_mail_hostname=\"mail.example.org\"\n"
"jail_mail_ip=\"192.168.3.18\"\n"
"jail_mail_rootdir=\"/usr/home/j/mail\"\n"
"jail_mail_devfs_enable=\"YES\"\n"
"jail_www_hostname=\"www.example.org\"\n"
"jail_www_ip=\"62.123.43.14\"\n"
"jail_www_rootdir=\"/usr/home/j/www\"\n"
"jail_www_devfs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:517
msgid ""
"The `jail__name__rootdir` variable is set to [.filename]#/usr/home# instead "
"of [.filename]#/home# because the physical path of [.filename]#/home# on a "
"default FreeBSD installation is [.filename]#/usr/home#. The "
"`jail__name__rootdir` variable must _not_ be set to a path which includes a "
"symbolic link, otherwise the jails will refuse to start."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:518
msgid ""
"Create the required mount points for the read-only file system of each jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:522
#, no-wrap
msgid "# mkdir /home/j/ns /home/j/mail /home/j/www\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:525
msgid ""
"Install the read-write template into each jail using package:sysutils/"
"cpdup[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:532
#, no-wrap
msgid ""
"# mkdir /home/js\n"
"# cpdup /home/j/skel /home/js/ns\n"
"# cpdup /home/j/skel /home/js/mail\n"
"# cpdup /home/j/skel /home/js/www\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:535
msgid ""
"In this phase, the jails are built and prepared to run. First, mount the "
"required file systems for each jail, and then start them:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:540
#: documentation/content/en/books/handbook/jails/_index.adoc:639
#, no-wrap
msgid ""
"# mount -a\n"
"# service jail start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:545
msgid ""
"The jails should be running now. To check if they have started correctly, "
"use `jls`. Its output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:553
#, no-wrap
msgid ""
"# jls\n"
" JID IP Address Hostname Path\n"
" 3 192.168.3.17 ns.example.org /home/j/ns\n"
" 2 192.168.3.18 mail.example.org /home/j/mail\n"
" 1 62.123.43.14 www.example.org /home/j/www\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:558
msgid ""
"At this point, it should be possible to log onto each jail, add new users, "
"or configure daemons. The `JID` column indicates the jail identification "
"number of each running jail. Use the following command to perform "
"administrative tasks in the jail whose JID is `3`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:562
#, no-wrap
msgid "# jexec 3 tcsh\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:565
#, no-wrap
msgid "Upgrading"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:569
msgid ""
"The design of this setup provides an easy way to upgrade existing jails "
"while minimizing their downtime. Also, it provides a way to roll back to "
"the older version should a problem occur."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:572
msgid ""
"The first step is to upgrade the host system. Then, create a new temporary "
"read-only template in [.filename]#/home/j/mroot2#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:581
#, no-wrap
msgid ""
"# mkdir /home/j/mroot2\n"
"# cd /usr/src\n"
"# make installworld DESTDIR=/home/j/mroot2\n"
"# cd /home/j/mroot2\n"
"# cpdup /usr/src usr/src\n"
"# mkdir s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:584
msgid ""
"The `installworld` creates a few unnecessary directories, which should be "
"removed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:589
#, no-wrap
msgid ""
"# chflags -R 0 var\n"
"# rm -R etc var root usr/local tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:592
msgid "Recreate the read-write symlinks for the master file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:602
#, no-wrap
msgid ""
"# ln -s s/etc etc\n"
"# ln -s s/root root\n"
"# ln -s s/home home\n"
"# ln -s ../s/usr-local usr/local\n"
"# ln -s ../s/usr-X11R6 usr/X11R6\n"
"# ln -s s/tmp tmp\n"
"# ln -s s/var var\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:605
msgid "Next, stop the jails:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:609
#, no-wrap
msgid "# service jail stop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:612
msgid ""
"Unmount the original file systems as the read-write systems are attached to "
"the read-only system ([.filename]#/s#):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:621
#, no-wrap
msgid ""
"# umount /home/j/ns/s\n"
"# umount /home/j/ns\n"
"# umount /home/j/mail/s\n"
"# umount /home/j/mail\n"
"# umount /home/j/www/s\n"
"# umount /home/j/www\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:624
msgid ""
"Move the old read-only file system and replace it with the new one. This "
"will serve as a backup and archive of the old read-only file system should "
"something go wrong. The naming convention used here corresponds to when a "
"new read-only file system has been created. Move the original FreeBSD Ports "
"Collection over to the new file system to save some space and inodes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:631
#, no-wrap
msgid ""
"# cd /home/j\n"
"# mv mroot mroot.20060601\n"
"# mv mroot2 mroot\n"
"# mv mroot.20060601/usr/ports mroot/usr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:634
msgid ""
"At this point the new read-only template is ready, so the only remaining "
"task is to remount the file systems and start the jails:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:643
msgid ""
"Use `jls` to check if the jails started correctly. Run `mergemaster` in "
"each jail to update the configuration files."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/jails/_index.adoc:645
#, no-wrap
msgid "Managing Jails with ezjail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:653
msgid ""
"Creating and managing multiple jails can quickly become tedious and error-"
"prone. Dirk Engling's ezjail automates and greatly simplifies many jail "
"tasks. A _basejail_ is created as a template. Additional jails use man:"
"mount_nullfs[8] to share many of the basejail directories without using "
"additional disk space. Each additional jail takes only a few megabytes of "
"disk space before applications are installed. Upgrading the copy of the "
"userland in the basejail automatically upgrades all of the other jails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:655
msgid ""
"Additional benefits and features are described in detail on the ezjail web "
"site, https://erdgeist.org/arts/software/ezjail/[]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:657
#, no-wrap
msgid "Installing ezjail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:660
msgid ""
"Installing ezjail consists of adding a loopback interface for use in jails, "
"installing the port or package, and enabling the service."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:664
msgid ""
"To keep jail loopback traffic off the host's loopback network interface "
"`lo0`, a second loopback interface is created by adding an entry to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:668
#: documentation/content/en/books/handbook/jails/_index.adoc:1085
#, no-wrap
msgid "cloned_interfaces=\"lo1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:672
msgid ""
"The second loopback interface `lo1` will be created when the system starts. "
"It can also be created manually without a restart:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:677
#: documentation/content/en/books/handbook/jails/_index.adoc:1093
#, no-wrap
msgid ""
"# service netif cloneup\n"
"Created clone interfaces: lo1.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:680
msgid ""
"Jails can be allowed to use aliases of this secondary loopback interface "
"without interfering with the host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:683
msgid ""
"Inside a jail, access to the loopback address `127.0.0.1` is redirected to "
"the first IP address assigned to the jail. To make the jail loopback "
"correspond with the new `lo1` interface, that interface must be specified "
"first in the list of interfaces and IP addresses given when creating a new "
"jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:685
msgid "Give each jail a unique loopback address in the `127.0.0.0/8` netblock."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:686
msgid "Install package:sysutils/ezjail[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:691
#, no-wrap
msgid ""
"# cd /usr/ports/sysutils/ezjail\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:694
msgid "Enable ezjail by adding this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:698
#, no-wrap
msgid "ezjail_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:701
msgid ""
"The service will automatically start on system boot. It can be started "
"immediately for the current session:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:705
#, no-wrap
msgid "# service ezjail start\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:708
#, no-wrap
msgid "Initial Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:712
msgid ""
"With ezjail installed, the basejail directory structure can be created and "
"populated. This step is only needed once on the jail host computer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:717
msgid ""
"In both of these examples, `-p` causes the ports tree to be retrieved with "
"man:portsnap[8] into the basejail. That single copy of the ports directory "
"will be shared by all the jails. Using a separate copy of the ports "
"directory for jails isolates them from the host. The ezjailFAQ explains in "
"more detail: http://erdgeist.org/arts/software/ezjail/#FAQ[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:722
msgid "To Populate the Jail with FreeBSD-RELEASE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:725
msgid ""
"For a basejail based on the FreeBSD RELEASE matching that of the host "
"computer, use `install`. For example, on a host computer running FreeBSD 10-"
"STABLE, the latest RELEASE version of FreeBSD -10 will be installed in the "
"jail):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:729
#, no-wrap
msgid "# ezjail-admin install -p\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:732
msgid "To Populate the Jail with `installworld`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:734
msgid ""
"The basejail can be installed from binaries created by `buildworld` on the "
"host with `ezjail-admin update`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:738
msgid ""
"In this example, FreeBSD 10-STABLE has been built from source. The jail "
"directories are created. Then `installworld` is executed, installing the "
"host's [.filename]#/usr/obj# into the basejail."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:742
#, no-wrap
msgid "# ezjail-admin update -i -p\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:746
msgid ""
"The host's [.filename]#/usr/src# is used by default. A different source "
"directory on the host can be specified with `-s` and a path, or set with "
"`ezjail_sourcetree` in [.filename]#/usr/local/etc/ezjail.conf#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:753
msgid ""
"The basejail's ports tree is shared by other jails. However, downloaded "
"distfiles are stored in the jail that downloaded them. By default, these "
"files are stored in [.filename]#/var/ports/distfiles# within each jail. [."
"filename]#/var/ports# inside each jail is also used as a work directory when "
"building ports."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:761
msgid ""
"The FTP protocol is used by default to download packages for the "
"installation of the basejail. Firewall or proxy configurations can prevent "
"or interfere with FTP transfers. The HTTP protocol works differently and "
"avoids these problems. It can be chosen by specifying a full URL for a "
"particular download mirror in [.filename]#/usr/local/etc/ezjail.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:765
#, no-wrap
msgid "ezjail_ftphost=http://ftp.FreeBSD.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:768
msgid "See the crossref:mirrors[mirrors,mirrors] section for a list of sites."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:771
#, no-wrap
msgid "Creating and Starting a New Jail"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:775
msgid ""
"New jails are created with `ezjail-admin create`. In these examples, the "
"`lo1` loopback interface is used as described above."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/jails/_index.adoc:778
#, no-wrap
msgid "Procedure: Create and Start a New Jail"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:780
msgid ""
"Create the jail, specifying a name and the loopback and network interfaces "
"to use, along with their IP addresses. In this example, the jail is named "
"`dnsjail`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:784
#, no-wrap
msgid "# ezjail-admin create dnsjail 'lo1|127.0.1.1,em0|192.168.1.50'\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:792
msgid ""
"Most network services run in jails without problems. A few network "
"services, most notably man:ping[8], use _raw network sockets_. In jails, "
"raw network sockets are disabled by default for security. Services that "
"require them will not work."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:797
msgid ""
"Occasionally, a jail genuinely needs raw sockets. For example, network "
"monitoring applications often use man:ping[8] to check the availability of "
"other computers. When raw network sockets are actually needed in a jail, "
"they can be enabled by editing the ezjail configuration file for the "
"individual jail, [.filename]#/usr/local/etc/ezjail/jailname#. Modify the "
"`parameters` entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:801
#, no-wrap
msgid "export jail_jailname_parameters=\"allow.raw_sockets=1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:804
msgid ""
"Do not enable raw network sockets unless services in the jail actually "
"require them."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:807
msgid "Start the jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:811
#, no-wrap
msgid "# ezjail-admin start dnsjail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:814
msgid "Use a console on the jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:818
#, no-wrap
msgid "# ezjail-admin console dnsjail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:822
msgid ""
"The jail is operating and additional configuration can be completed. "
"Typical settings added at this point include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:825
msgid "Set the `root` Password"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:827
msgid "Connect to the jail and set the `root` user's password:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:835
#, no-wrap
msgid ""
"# ezjail-admin console dnsjail\n"
"# passwd\n"
"Changing local password for root\n"
"New Password:\n"
"Retype New Password:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:838
msgid "Time Zone Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:842
msgid ""
"The jail's time zone can be set with man:tzsetup[8]. To avoid spurious "
"error messages, the man:adjkerntz[8] entry in [.filename]#/etc/crontab# can "
"be commented or removed. This job attempts to update the computer's "
"hardware clock with time zone changes, but jails are not allowed to access "
"that hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:843
msgid "DNS Servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:845
msgid ""
"Enter domain name server lines in [.filename]#/etc/resolv.conf# so DNS works "
"in the jail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:846
msgid "Edit [.filename]#/etc/hosts#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:848
msgid ""
"Change the address and add the jail name to the `localhost` entries in [."
"filename]#/etc/hosts#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:849
msgid "Configure [.filename]#/etc/rc.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:854
msgid ""
"Enter configuration settings in [.filename]#/etc/rc.conf#. This is much "
"like configuring a full computer. The host name and IP address are not set "
"here. Those values are already provided by the jail configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:856
msgid ""
"With the jail configured, the applications for which the jail was created "
"can be installed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:861
msgid ""
"Some ports must be built with special options to be used in a jail. For "
"example, both of the network monitoring plugin packages package:net-mgmt/"
"nagios-plugins[] and package:net-mgmt/monitoring-plugins[] have a `JAIL` "
"option which must be enabled for them to work correctly inside a jail."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:864
#, no-wrap
msgid "Updating Jails"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:867
#, no-wrap
msgid "Updating the Operating System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:871
msgid ""
"Because the basejail's copy of the userland is shared by the other jails, "
"updating the basejail automatically updates all of the other jails. Either "
"source or binary updates can be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:873
msgid ""
"To build the world from source on the host, then install it in the basejail, "
"use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:877
#, no-wrap
msgid "# ezjail-admin update -b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:880
msgid ""
"If the world has already been compiled on the host, install it in the "
"basejail with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:884
#, no-wrap
msgid "# ezjail-admin update -i\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:889
msgid ""
"Binary updates use man:freebsd-update[8]. These updates have the same "
"limitations as if man:freebsd-update[8] were being run directly. The most "
"important one is that only -RELEASE versions of FreeBSD are available with "
"this method."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:892
msgid ""
"Update the basejail to the latest patched release of the version of FreeBSD "
"on the host. For example, updating from RELEASE-p1 to RELEASE-p2."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:896
#, no-wrap
msgid "# ezjail-admin update -u\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:902
msgid ""
"To upgrade the basejail to a new version, first upgrade the host system as "
"described in crossref:cutting-edge[freebsdupdate-upgrade,“Performing Major "
"and Minor Version Upgrades”]. Once the host has been upgraded and rebooted, "
"the basejail can then be upgraded. man:freebsd-update[8] has no way of "
"determining which version is currently installed in the basejail, so the "
"original version must be specified. Use man:file[1] to determine the "
"original version in the basejail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:907
#, no-wrap
msgid ""
"# file /usr/jails/basejail/bin/sh\n"
"/usr/jails/basejail/bin/sh: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.3, stripped\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:910
msgid ""
"Now use this information to perform the upgrade from `9.3-RELEASE` to the "
"current version of the host system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:914
#, no-wrap
msgid "# ezjail-admin update -U -s 9.3-RELEASE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:917
msgid ""
"After updating the basejail, man:mergemaster[8] must be run to update each "
"jail's configuration files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:920
msgid ""
"How to use man:mergemaster[8] depends on the purpose and trustworthiness of "
"a jail. If a jail's services or users are not trusted, then man:"
"mergemaster[8] should only be run from within that jail:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/jails/_index.adoc:922
#, no-wrap
msgid "man:mergemaster[8] on Untrusted Jail"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:927
msgid ""
"Delete the link from the jail's [.filename]#/usr/src# into the basejail and "
"create a new [.filename]#/usr/src# in the jail as a mountpoint. Mount the "
"host computer's [.filename]#/usr/src# read-only on the jail's new [."
"filename]#/usr/src# mountpoint:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:933
#, no-wrap
msgid ""
"# rm /usr/jails/jailname/usr/src\n"
"# mkdir /usr/jails/jailname/usr/src\n"
"# mount -t nullfs -o ro /usr/src /usr/jails/jailname/usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:936
msgid "Get a console in the jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:940
#, no-wrap
msgid "# ezjail-admin console jailname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:944
msgid "Inside the jail, run `mergemaster`. Then exit the jail console:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:950
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# mergemaster -U\n"
"# exit\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:953
msgid "Finally, unmount the jail's [.filename]#/usr/src#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:957
#, no-wrap
msgid "# umount /usr/jails/jailname/usr/src\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/jails/_index.adoc:962
#, no-wrap
msgid "man:mergemaster[8] on Trusted Jail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:967
msgid ""
"If the users and services in a jail are trusted, man:mergemaster[8] can be "
"run from the host:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:971
#, no-wrap
msgid "# mergemaster -U -D /usr/jails/jailname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:979
msgid ""
"After a major version update it is recommended by package:sysutils/ezjail[] "
"to make sure your `pkg` is of the correct version. Therefore enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:983
#, no-wrap
msgid "# pkg-static upgrade -f pkg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:986
msgid "to upgrade or downgrade to the appropriate version."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:989
#, no-wrap
msgid "Updating Ports"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:993
msgid ""
"The ports tree in the basejail is shared by the other jails. Updating that "
"copy of the ports tree gives the other jails the updated version also."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:995
msgid "The basejail ports tree is updated with man:portsnap[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:999
#, no-wrap
msgid "# ezjail-admin update -P\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:1002
#, no-wrap
msgid "Controlling Jails"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:1005
#, no-wrap
msgid "Stopping and Starting Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1009
msgid ""
"ezjail automatically starts jails when the computer is started. Jails can "
"be manually stopped and restarted with `stop` and `start`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1014
#, no-wrap
msgid ""
"# ezjail-admin stop sambajail\n"
"Stopping jails: sambajail.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1018
msgid ""
"By default, jails are started automatically when the host computer starts. "
"Autostarting can be disabled with `config`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1022
#, no-wrap
msgid "# ezjail-admin config -r norun seldomjail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1026
msgid ""
"This takes effect the next time the host computer is started. A jail that "
"is already running will not be stopped."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1028
msgid "Enabling autostart is very similar:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1032
#, no-wrap
msgid "# ezjail-admin config -r run oftenjail\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/jails/_index.adoc:1035
#, no-wrap
msgid "Archiving and Restoring Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1041
msgid ""
"Use `archive` to create a [.filename]#.tar.gz# archive of a jail. The file "
"name is composed from the name of the jail and the current date. Archive "
"files are written to the archive directory, [.filename]#/usr/jails/"
"ezjail_archives#. A different archive directory can be chosen by setting "
"`ezjail_archivedir` in the configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1044
msgid ""
"The archive file can be copied elsewhere as a backup, or an existing jail "
"can be restored from it with `restore`. A new jail can be created from the "
"archive, providing a convenient way to clone existing jails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1046
msgid "Stop and archive a jail named `wwwserver`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1054
#, no-wrap
msgid ""
"# ezjail-admin stop wwwserver\n"
"Stopping jails: wwwserver.\n"
"# ezjail-admin archive wwwserver\n"
"# ls /usr/jails/ezjail-archives/\n"
"wwwserver-201407271153.13.tar.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1058
msgid ""
"Create a new jail named `wwwserver-clone` from the archive created in the "
"previous step. Use the [.filename]#em1# interface and assign a new IP "
"address to avoid conflict with the original:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1062
#, no-wrap
msgid "# ezjail-admin create -a /usr/jails/ezjail_archives/wwwserver-201407271153.13.tar.gz wwwserver-clone 'lo1|127.0.3.1,em1|192.168.1.51'\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/jails/_index.adoc:1065
#, no-wrap
msgid "Full Example: BIND in a Jail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1069
msgid ""
"Putting the BINDDNS server in a jail improves security by isolating it. "
"This example creates a simple caching-only name server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1071
msgid "The jail will be called `dns1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1072
msgid ""
"The jail will use IP address `192.168.1.240` on the host's `re0` interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1073
msgid "The upstream ISP's DNS servers are at `10.0.0.62` and `10.0.0.61`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1074
msgid ""
"The basejail has already been created and a ports tree installed as shown in "
"<<jails-ezjail-initialsetup>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/jails/_index.adoc:1076
#, no-wrap
msgid "Running BIND in a Jail"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1081
msgid ""
"Create a cloned loopback interface by adding a line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1088
msgid "Immediately create the new loopback interface:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1096
msgid "Create the jail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1100
#, no-wrap
msgid "# ezjail-admin create dns1 'lo1|127.0.2.1,re0|192.168.1.240'\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1103
msgid ""
"Start the jail, connect to a console running on it, and perform some basic "
"configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1115
#, no-wrap
msgid ""
"# ezjail-admin start dns1\n"
"# ezjail-admin console dns1\n"
"# passwd\n"
"Changing local password for root\n"
"New Password:\n"
"Retype New Password:\n"
"# tzsetup\n"
"# sed -i .bak -e '/adjkerntz/ s/^/#/' /etc/crontab\n"
"# sed -i .bak -e 's/127.0.0.1/127.0.2.1/g; s/localhost.my.domain/dns1.my.domain dns1/' /etc/hosts\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1118
msgid ""
"Temporarily set the upstream DNS servers in [.filename]#/etc/resolv.conf# so "
"ports can be downloaded:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1123
#, no-wrap
msgid ""
"nameserver 10.0.0.62\n"
"nameserver 10.0.0.61\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1126
msgid "Still using the jail console, install package:dns/bind99[]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1130
#, no-wrap
msgid "# make -C /usr/ports/dns/bind99 install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1133
msgid ""
"Configure the name server by editing [.filename]#/usr/local/etc/namedb/named."
"conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1136
msgid ""
"Create an Access Control List (ACL) of addresses and networks that are "
"permitted to send DNS queries to this name server. This section is added "
"just before the `options` section already in the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1141
#, no-wrap
msgid ""
"...\n"
"// or cause huge amounts of useless Internet traffic.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1147
#, no-wrap
msgid ""
"acl \"trusted\" {\n"
"\t192.168.1.0/24;\n"
"\tlocalhost;\n"
"\tlocalnets;\n"
"};\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1150
#, no-wrap
msgid ""
"options {\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1153
msgid ""
"Use the jail IP address in the `listen-on` setting to accept DNS queries "
"from other computers on the network:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1157
#, no-wrap
msgid "\tlisten-on\t{ 192.168.1.240; };\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1161
msgid ""
"A simple caching-only DNS name server is created by changing the "
"`forwarders` section. The original file contains:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1169
#, no-wrap
msgid ""
"/*\n"
"\tforwarders {\n"
"\t\t127.0.0.1;\n"
"\t};\n"
"*/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1174
msgid ""
"Uncomment the section by removing the `/\\*` and `*/` lines. Enter the IP "
"addresses of the upstream DNS servers. Immediately after the `forwarders` "
"section, add references to the `trusted` ACL defined earlier:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1181
#, no-wrap
msgid ""
"\tforwarders {\n"
"\t\t10.0.0.62;\n"
"\t\t10.0.0.61;\n"
"\t};\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1185
#, no-wrap
msgid ""
"\tallow-query { any; };\n"
"\tallow-recursion { trusted; };\n"
"\tallow-query-cache { trusted; };\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1188
msgid "Enable the service in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1192
#, no-wrap
msgid "named_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1195
msgid "Start and test the name server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1202
#, no-wrap
msgid ""
"# service named start\n"
"wrote key file \"/usr/local/etc/namedb/rndc.key\"\n"
"Starting named.\n"
"# /usr/local/bin/dig @192.168.1.240 freebsd.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1205
msgid "A response that includes"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1209
#, no-wrap
msgid ";; Got answer;\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1213
msgid ""
"shows that the new DNS server is working. A long delay followed by a "
"response including"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1217
#, no-wrap
msgid ";; connection timed out; no servers could be reached\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1221
msgid ""
"shows a problem. Check the configuration settings and make sure any local "
"firewalls allow the new DNS access to the upstream DNS servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1224
msgid ""
"The new DNS server can use itself for local name resolution, just like other "
"local computers. Set the address of the DNS server in the client computer's "
"[.filename]#/etc/resolv.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/jails/_index.adoc:1228
#, no-wrap
msgid "nameserver 192.168.1.240\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/jails/_index.adoc:1231
msgid ""
"A local DHCP server can be configured to provide this address for a local "
"DNS server, providing automatic configuration on DHCP clients."
msgstr ""
diff --git a/documentation/content/en/books/handbook/kernelconfig/_index.po b/documentation/content/en/books/handbook/kernelconfig/_index.po
index f06cf151f8..89034e57bb 100644
--- a/documentation/content/en/books/handbook/kernelconfig/_index.po
+++ b/documentation/content/en/books/handbook/kernelconfig/_index.po
@@ -1,706 +1,705 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1
#, no-wrap
msgid "This chapter covers how to configure the FreeBSD Kernel. When to build a custom kernel, how to take a hardware inventory, how to customize a kernel configuration file, etc"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1
#, no-wrap
-msgid "Chapter 8. Configuring the FreeBSD Kernel"
+msgid "Chapter 9. Configuring the FreeBSD Kernel"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:15
#, no-wrap
msgid "Configuring the FreeBSD Kernel"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:58
msgid ""
"The kernel is the core of the FreeBSD operating system. It is responsible "
"for managing memory, enforcing security controls, networking, disk access, "
"and much more. While much of FreeBSD is dynamically configurable, it is "
"still occasionally necessary to configure and compile a custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:60
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:62
msgid "When to build a custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:63
msgid "How to take a hardware inventory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:64
msgid "How to customize a kernel configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:65
msgid ""
"How to use the kernel configuration file to create and build a new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:66
msgid "How to install the new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:67
msgid "How to troubleshoot if things go wrong."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:69
msgid ""
"All of the commands listed in the examples in this chapter should be "
"executed as `root`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:71
#, no-wrap
msgid "Why Build a Custom Kernel?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:75
msgid ""
"Traditionally, FreeBSD used a monolithic kernel. The kernel was one large "
"program, supported a fixed list of devices, and in order to change the "
"kernel's behavior, one had to compile and then reboot into a new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:79
msgid ""
"Today, most of the functionality in the FreeBSD kernel is contained in "
"modules which can be dynamically loaded and unloaded from the kernel as "
"necessary. This allows the running kernel to adapt immediately to new "
"hardware and for new functionality to be brought into the kernel. This is "
"known as a modular kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:83
msgid ""
"Occasionally, it is still necessary to perform static kernel configuration. "
"Sometimes the needed functionality is so tied to the kernel that it can not "
"be made dynamically loadable. Some security environments prevent the "
"loading and unloading of kernel modules and require that only needed "
"functionality is statically compiled into the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:88
msgid ""
"Building a custom kernel is often a rite of passage for advanced BSD users. "
"This process, while time consuming, can provide benefits to the FreeBSD "
"system. Unlike the [.filename]#GENERIC# kernel, which must support a wide "
"range of hardware, a custom kernel can be stripped down to only provide "
"support for that computer's hardware. This has a number of benefits, such "
"as:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:90
msgid ""
"Faster boot time. Since the kernel will only probe the hardware on the "
"system, the time it takes the system to boot can decrease."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:91
msgid ""
"Lower memory usage. A custom kernel often uses less memory than the [."
"filename]#GENERIC# kernel by omitting unused features and device drivers. "
"This is important because the kernel code remains resident in physical "
"memory at all times, preventing that memory from being used by applications. "
"For this reason, a custom kernel is useful on a system with a small amount "
"of RAM."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:92
msgid ""
"Additional hardware support. A custom kernel can add support for devices "
"which are not present in the [.filename]#GENERIC# kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:95
msgid ""
"Before building a custom kernel, consider the reason for doing so. If there "
"is a need for specific hardware support, it may already exist as a module."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:99
msgid ""
"Kernel modules exist in [.filename]#/boot/kernel# and may be dynamically "
"loaded into the running kernel using man:kldload[8]. Most kernel drivers "
"have a loadable module and manual page. For example, the man:ath[4] "
-"wireless Ethernet driver has the following information in its manual page:"
+"wireless network driver has the following information in its manual page:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:104
#, no-wrap
msgid ""
"Alternatively, to load the driver as a module at boot time, place the\n"
"following line in man:loader.conf[5]:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:106
#, no-wrap
msgid " if_ath_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:109
msgid ""
"Adding `if_ath_load=\"YES\"` to [.filename]#/boot/loader.conf# will load "
"this module dynamically at boot time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:112
msgid ""
"In some cases, there is no associated module in [.filename]#/boot/kernel#. "
"This is mostly true for certain subsystems."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:114
#, no-wrap
msgid "Finding the System Hardware"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:119
msgid ""
"Before editing the kernel configuration file, it is recommended to perform "
"an inventory of the machine's hardware. On a dual-boot system, the "
"inventory can be created from the other operating system. For example, "
"Microsoft(R)'s Device Manager contains information about installed devices."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:123
msgid ""
"Some versions of Microsoft(R) Windows(R) have a System icon which can be "
"used to access Device Manager."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:128
msgid ""
"If FreeBSD is the only installed operating system, use man:dmesg[8] to "
"determine the hardware that was found and listed during the boot probe. "
"Most device drivers on FreeBSD have a manual page which lists the hardware "
"supported by that driver. For example, the following lines indicate that "
"the man:psm[4] driver found a mouse:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:135
#, no-wrap
msgid ""
"psm0: <PS/2 Mouse> irq 12 on atkbdc0\n"
"psm0: [GIANT-LOCKED]\n"
"psm0: [ITHREAD]\n"
"psm0: model Generic PS/2 mouse, device ID 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:138
msgid ""
"Since this hardware exists, this driver should not be removed from a custom "
"kernel configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:140
msgid ""
"If the output of `dmesg` does not display the results of the boot probe "
"output, instead read the contents of [.filename]#/var/run/dmesg.boot#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:143
msgid ""
"Another tool for finding hardware is man:pciconf[8], which provides more "
"verbose output. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:152
#, no-wrap
msgid ""
"% pciconf -lv\n"
"ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00\n"
" vendor = 'Atheros Communications Inc.'\n"
" device = 'AR5212 Atheros AR5212 802.11abg wireless'\n"
" class = network\n"
" subclass = ethernet\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:155
msgid ""
"This output shows that the [.filename]#ath# driver located a wireless "
"Ethernet device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:158
msgid ""
"The `-k` flag of man:man[1] can be used to provide useful information. For "
"example, it can be used to display a list of manual pages which contain a "
"particular device brand or name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:164
#, no-wrap
msgid ""
"# man -k Atheros\n"
"ath(4) - Atheros IEEE 802.11 wireless network driver\n"
"ath_hal(4) - Atheros Hardware Access Layer (HAL)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:167
msgid ""
"Once the hardware inventory list is created, refer to it to ensure that "
"drivers for installed hardware are not removed as the custom kernel "
"configuration is edited."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:169
#, no-wrap
msgid "The Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:172
msgid ""
"In order to create a custom kernel configuration file and build a custom "
"kernel, the full FreeBSD source tree must first be installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:175
msgid ""
"If [.filename]#/usr/src/# does not exist or it is empty, source has not been "
-"installed. Source can be installed using Git and the instructions in "
+"installed. Source can be installed with Git using the instructions in "
"crossref:mirrors[git,“Using Git”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:180
msgid ""
"Once source is installed, review the contents of [.filename]#/usr/src/sys#. "
"This directory contains a number of subdirectories, including those which "
"represent the following supported architectures: [.filename]#amd64#, [."
"filename]#i386#, [.filename]#powerpc#, and [.filename]#sparc64#. Everything "
"inside a particular architecture's directory deals with that architecture "
"only and the rest of the code is machine independent code common to all "
"platforms. Each supported architecture has a [.filename]#conf# subdirectory "
"which contains the [.filename]#GENERIC# kernel configuration file for that "
"architecture."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:186
msgid ""
"Do not make edits to [.filename]#GENERIC#. Instead, copy the file to a "
"different name and make edits to the copy. The convention is to use a name "
"with all capital letters. When maintaining multiple FreeBSD machines with "
"different hardware, it is a good idea to name it after the machine's "
"hostname. This example creates a copy, named [.filename]#MYKERNEL#, of the "
"[.filename]#GENERIC# configuration file for the `amd64` architecture:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:191
#, no-wrap
msgid ""
"# cd /usr/src/sys/amd64/conf\n"
"# cp GENERIC MYKERNEL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:195
msgid ""
"[.filename]#MYKERNEL# can now be customized with any `ASCII` text editor. "
"The default editor is vi, though an easier editor for beginners, called ee, "
"is also installed with FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:201
msgid ""
"The format of the kernel configuration file is simple. Each line contains a "
"keyword that represents a device or subsystem, an argument, and a brief "
-"description. Any text after a `#` is considered a comment and ignored. To "
-"remove kernel support for a device or subsystem, put a `#` at the beginning "
-"of the line representing that device or subsystem. Do not add or remove a "
-"`#` for any line that you do not understand."
+"description. Any text after a `+#+` is considered a comment and ignored. "
+"To remove kernel support for a device or subsystem, put a `+#+` at the "
+"beginning of the line representing that device or subsystem. Do not add or "
+"remove a `+#+` for any line that you do not understand."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:207
msgid ""
"It is easy to remove support for a device or option and end up with a broken "
"kernel. For example, if the man:ata[4] driver is removed from the kernel "
"configuration file, a system using `ATA` disk drivers may not boot. When in "
"doubt, just leave support in the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:211
msgid ""
"In addition to the brief descriptions provided in this file, additional "
"descriptions are contained in [.filename]#NOTES#, which can be found in the "
"same directory as [.filename]#GENERIC# for that architecture. For "
"architecture independent options, refer to [.filename]#/usr/src/sys/conf/"
"NOTES#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:215
msgid ""
"When finished customizing the kernel configuration file, save a backup copy "
"to a location outside of [.filename]#/usr/src#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:217
msgid ""
"Alternately, keep the kernel configuration file elsewhere and create a "
"symbolic link to the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:224
#, no-wrap
msgid ""
"# cd /usr/src/sys/amd64/conf\n"
"# mkdir /root/kernels\n"
"# cp GENERIC /root/kernels/MYKERNEL\n"
"# ln -s /root/kernels/MYKERNEL\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:231
msgid ""
"An `include` directive is available for use in configuration files. This "
"allows another configuration file to be included in the current one, making "
"it easy to maintain small changes relative to an existing file. If only a "
"small number of additional options or drivers are required, this allows a "
"delta to be maintained with respect to [.filename]#GENERIC#, as seen in this "
"example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:236
#, no-wrap
msgid ""
"include GENERIC\n"
"ident MYKERNEL\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:241
#, no-wrap
msgid ""
"options IPFIREWALL\n"
"options DUMMYNET\n"
"options IPFIREWALL_DEFAULT_TO_ACCEPT\n"
"options IPDIVERT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:246
msgid ""
"Using this method, the local configuration file expresses local differences "
"from a [.filename]#GENERIC# kernel. As upgrades are performed, new features "
"added to [.filename]#GENERIC# will also be added to the local kernel unless "
"they are specifically prevented using `nooptions` or `nodevice`. A "
"comprehensive list of configuration directives and their descriptions may be "
"found in man:config[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:250
msgid ""
"To build a file which contains all available options, run the following "
"command as `root`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:254
#, no-wrap
msgid "# cd /usr/src/sys/arch/conf && make LINT\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:259
#, no-wrap
msgid "Building and Installing a Custom Kernel"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:262
msgid ""
"Once the edits to the custom configuration file have been saved, the source "
"code for the kernel can be compiled using the following steps:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:266
#, no-wrap
msgid "*Procedure: Building a Kernel*\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:268
msgid "Change to this directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:272
#, no-wrap
msgid "# cd /usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:275
msgid ""
"Compile the new kernel by specifying the name of the custom kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:279
#, no-wrap
msgid "# make buildkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:282
msgid ""
"Install the new kernel associated with the specified kernel configuration "
"file. This command will copy the new kernel to [.filename]#/boot/kernel/"
"kernel# and save the old kernel to [.filename]#/boot/kernel.old/kernel#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:286
#, no-wrap
msgid "# make installkernel KERNCONF=MYKERNEL\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:289
msgid ""
"Shutdown the system and reboot into the new kernel. If something goes wrong, "
"refer to <<kernelconfig-noboot, The kernel does not boot>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:293
msgid ""
"By default, when a custom kernel is compiled, all kernel modules are "
"rebuilt. To update a kernel faster or to build only custom modules, edit [."
"filename]#/etc/make.conf# before starting to build the kernel."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:295
msgid ""
"For example, this variable specifies the list of modules to build instead of "
"using the default of building all modules:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:299
#, no-wrap
msgid "MODULES_OVERRIDE = linux acpi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:302
msgid ""
"Alternately, this variable lists which modules to exclude from the build "
"process:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:306
#, no-wrap
msgid "WITHOUT_MODULES = linux acpi sound\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:310
msgid ""
"Additional variables are available. Refer to man:make.conf[5] for details."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:312
#, no-wrap
msgid "If Something Goes Wrong"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:315
msgid ""
"There are four categories of trouble that can occur when building a custom "
"kernel:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:316
#, no-wrap
msgid "`config` fails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:319
msgid ""
"If `config` fails, it will print the line number that is incorrect. As an "
"example, for the following message, make sure that line 17 is typed "
"correctly by comparing it to [.filename]#GENERIC# or [.filename]#NOTES#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:323
#, no-wrap
msgid "config: line 17: syntax error\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:325
#, no-wrap
msgid "`make` fails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:328
msgid ""
"If `make` fails, it is usually due to an error in the kernel configuration "
"file which is not severe enough for `config` to catch. Review the "
"configuration, and if the problem is not apparent, send an email to the "
"{freebsd-questions} which contains the kernel configuration file."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:330
#, no-wrap
msgid "The kernel does not boot"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:335
msgid ""
"If the new kernel does not boot or fails to recognize devices, do not panic! "
"Fortunately, FreeBSD has an excellent mechanism for recovering from "
"incompatible kernels. Simply choose the kernel to boot from at the FreeBSD "
"boot loader. This can be accessed when the system boot menu appears by "
"selecting the \"Escape to a loader prompt\" option. At the prompt, type "
"`boot _kernel.old_`, or the name of any other kernel that is known to boot "
"properly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:339
msgid ""
"After booting with a good kernel, check over the configuration file and try "
"to build it again. One helpful resource is [.filename]#/var/log/messages# "
"which records the kernel messages from every successful boot. Also, man:"
"dmesg[8] will print the kernel messages from the current boot."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:345
msgid ""
-"When troubleshooting a kernel, make sure to keep a copy of [."
-"filename]#GENERIC#, or some other kernel that is known to work, as a "
-"different name that will not get erased on the next build. This is "
-"important because every time a new kernel is installed, [.filename]#kernel."
-"old# is overwritten with the last installed kernel, which may or may not be "
-"bootable. As soon as possible, move the working kernel by renaming the "
-"directory containing the good kernel:"
+"When troubleshooting a kernel make sure to keep a copy of a kernel that is "
+"known to work, such as [.filename]#GENERIC#. This is important because "
+"every time a new kernel is installed, [.filename]#kernel.old# is overwritten "
+"with the last installed kernel, which may or may not be bootable. As soon "
+"as possible, move the working kernel by renaming the directory containing "
+"the good kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:350
#, no-wrap
msgid ""
"# mv /boot/kernel /boot/kernel.bad\n"
"# mv /boot/kernel.good /boot/kernel\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:354
#, no-wrap
msgid "The kernel works, but man:ps[1] does not"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/kernelconfig/_index.adoc:357
msgid ""
"If the kernel version differs from the one that the system utilities have "
"been built with, for example, a kernel built from -CURRENT sources is "
"installed on a -RELEASE system, many system status commands like man:ps[1] "
"and man:vmstat[8] will not work. To fix this, crossref:cutting-"
"edge[makeworld,recompile and install a world] built with the same version of "
"the source tree as the kernel. It is never a good idea to use a different "
"version of the kernel than the rest of the operating system."
msgstr ""
diff --git a/documentation/content/en/books/handbook/l10n/_index.po b/documentation/content/en/books/handbook/l10n/_index.po
index 37f1c2cc5a..00088946b3 100644
--- a/documentation/content/en/books/handbook/l10n/_index.po
+++ b/documentation/content/en/books/handbook/l10n/_index.po
@@ -1,1411 +1,1412 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/l10n/_index.adoc:1
#, no-wrap
msgid "FreeBSD supports localization into many languages, allowing users to view, input, or process data in non-English languages"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/l10n/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/l10n/_index.adoc:1
#, no-wrap
-msgid "Chapter 23. Localization - i18n/L10n Usage and Setup"
+msgid "Chapter 24. Localization - i18n/L10n Usage and Setup"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/l10n/_index.adoc:15
#, no-wrap
msgid "Localization - i18n/L10n Usage and Setup"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/l10n/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:58
msgid ""
"FreeBSD is a distributed project with users and contributors located all "
"over the world. As such, FreeBSD supports localization into many languages, "
"allowing users to view, input, or process data in non-English languages. "
"One can choose from most of the major languages, including, but not limited "
"to: Chinese, German, Japanese, Korean, French, Russian, and Vietnamese."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:62
msgid ""
"The term internationalization has been shortened to i18n, which represents "
"the number of letters between the first and the last letters of "
"`internationalization`. L10n uses the same naming scheme, but from "
"`localization`. The i18n/L10n methods, protocols, and applications allow "
"users to use languages of their choice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:65
msgid ""
"This chapter discusses the internationalization and localization features of "
"FreeBSD. After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:67
msgid "How locale names are constructed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:68
msgid "How to set the locale for a login shell."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:69
msgid "How to configure the console for non-English languages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:70
msgid "How to configure Xorg for different languages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:71
msgid "How to find i18n-compliant applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:72
msgid "Where to find more information for configuring specific languages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:74
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:76
msgid ""
"Know how to crossref:ports[ports,install additional third-party "
"applications]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/l10n/_index.adoc:78
#, no-wrap
msgid "Using Localization"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:82
msgid ""
"Localization settings are based on three components: the language code, "
"country code, and encoding. Locale names are constructed from these parts "
"as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:86
#, no-wrap
msgid "LanguageCode_CountryCode.Encoding\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:90
msgid ""
"The _LanguageCode_ and _CountryCode_ are used to determine the country and "
"the specific language variation. <<locale-lang-country>> provides some "
"examples of __LanguageCode_CountryCode__:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/l10n/_index.adoc:92
#, no-wrap
msgid "Common Language and Country Codes"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:96
#, no-wrap
msgid "LanguageCode_Country Code"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:98
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:99
#, no-wrap
msgid "en_US"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:101
#, no-wrap
msgid "English, United States"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:102
#, no-wrap
msgid "ru_RU"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:104
#, no-wrap
msgid "Russian, Russia"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:105
#, no-wrap
msgid "zh_TW"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:106
#, no-wrap
msgid "Traditional Chinese, Taiwan"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:109
msgid "A complete listing of available locales can be found by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:113
#, no-wrap
msgid "% locale -a | more\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:116
msgid "To determine the current locale setting:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:120
#, no-wrap
msgid "% locale\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:124
msgid ""
"Language specific character sets, such as ISO8859-1, ISO8859-15, KOI8-R, and "
"CP437, are described in man:multibyte[3]. The active list of character sets "
"can be found at the http://www.iana.org/assignments/character-sets[IANA "
"Registry]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:129
msgid ""
"Some languages, such as Chinese or Japanese, cannot be represented using "
"ASCII characters and require an extended language encoding using either wide "
"or multibyte characters. Examples of wide or multibyte encodings include "
"EUC and Big5. Older applications may mistake these encodings for control "
"characters while newer applications usually recognize these characters. "
"Depending on the implementation, users may be required to compile an "
"application with wide or multibyte character support, or to configure it "
"correctly."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:133
msgid "FreeBSD uses Xorg-compatible locale encodings."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:137
msgid ""
"The rest of this section describes the various methods for configuring the "
"locale on a FreeBSD system. The next section will discuss the "
"considerations for finding and compiling applications with i18n support."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/l10n/_index.adoc:139
#, no-wrap
msgid "Setting Locale for Login Shell"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:142
msgid ""
"Locale settings are configured either in a user's [.filename]#~/.login_conf# "
"or in the startup file of the user's shell: [.filename]#~/.profile#, [."
"filename]#~/.bashrc#, or [.filename]#~/.cshrc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:144
msgid "Two environment variables should be set:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:146
msgid "`LANG`, which sets the locale"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:147
msgid "`MM_CHARSET`, which sets the MIME character set used by applications"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:149
msgid ""
"In addition to the user's shell configuration, these variables should also "
"be set for specific application configuration and Xorg configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:152
msgid ""
"Two methods are available for making the needed variable assignments: the "
"<<login-class,login class>> method, which is the recommended method, and the "
"<<startup-file,startup file>> method. The next two sections demonstrate how "
"to use both methods."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/l10n/_index.adoc:154
#, no-wrap
msgid "Login Classes Method"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:158
msgid ""
"This first method is the recommended method as it assigns the required "
"environment variables for locale name and MIME character sets for every "
"possible shell. This setup can either be performed by each user or it can "
"be configured for all users by the superuser."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:160
msgid ""
"This minimal example sets both variables for Latin-1 encoding in the [."
"filename]#.login_conf# of an individual user's home directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:166
#, no-wrap
msgid ""
"me:\\\n"
"\t:charset=ISO-8859-1:\\\n"
"\t:lang=de_DE.ISO8859-1:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:170
msgid ""
"Here is an example of a user's [.filename]#~/.login_conf# that sets the "
"variables for Traditional Chinese in BIG-5 encoding. More variables are "
"needed because some applications do not correctly respect locale variables "
"for Chinese, Japanese, and Korean:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:180
#, no-wrap
msgid ""
"#Users who do not wish to use monetary units or time formats\n"
"#of Taiwan can manually change each variable\n"
"me:\\\n"
"\t:lang=zh_TW.Big5:\\\n"
"\t:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\\\n"
"\t:charset=big5:\\\n"
"\t:xmodifiers=\"@im=gcin\": #Set gcin as the XIM Input Server\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:184
msgid ""
"Alternately, the superuser can configure all users of the system for "
"localization. The following variables in [.filename]#/etc/login.conf# are "
"used to set the locale and MIME character set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:191
#, no-wrap
msgid ""
"language_name|Account Type Description:\\\n"
"\t:charset=MIME_charset:\\\n"
"\t:lang=locale_name:\\\n"
"\t:tc=default:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:194
msgid "So, the previous Latin-1 example would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:201
#, no-wrap
msgid ""
"german|German Users Accounts:\\\n"
"\t:charset=ISO-8859-1:\\\n"
"\t:lang=de_DE.ISO8859-1:\\\n"
"\t:tc=default:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:205
msgid ""
"See man:login.conf[5] for more details about these variables. Note that it "
"already contains pre-defined _russian_ class."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:207
msgid ""
"Whenever [.filename]#/etc/login.conf# is edited, remember to execute the "
"following command to update the capability database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:211
#, no-wrap
msgid "# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:216
msgid ""
"For an end user, the `cap_mkdb` command will need to be run on their [."
"filename]#~/.login_conf# for any changes to take effect."
msgstr ""
#. type: Title =====
#: documentation/content/en/books/handbook/l10n/_index.adoc:218
#, no-wrap
msgid "Utilities Which Change Login Classes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:221
msgid ""
"In addition to manually editing [.filename]#/etc/login.conf#, several "
"utilities are available for setting the locale for newly created users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:223
msgid ""
"When using `vipw` to add new users, specify the _language_ to set the locale:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:227
#, no-wrap
msgid "user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:230
msgid ""
"When using `adduser` to add new users, the default language can be pre-"
"configured for all new users or specified for an individual user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:232
msgid ""
"If all new users use the same language, set `defaultclass=_language_` in [."
"filename]#/etc/adduser.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:234
msgid ""
"To override this setting when creating a user, either input the required "
"locale at this prompt:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:238
#, no-wrap
msgid "Enter login class: default []:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:241
msgid "or specify the locale to set when invoking `adduser`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:245
#, no-wrap
msgid "# adduser -class language\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:248
msgid "If `pw` is used to add new users, specify the locale as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:252
#, no-wrap
msgid "# pw useradd user_name -L language\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:256
msgid ""
"To change the login class of an existing user, `chpass` can be used. Invoke "
"it as superuser and provide the username to edit as the argument."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:260
#, no-wrap
msgid "# chpass user_name\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/l10n/_index.adoc:264
#, no-wrap
msgid "Shell Startup File Method"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:269
msgid ""
"This second method is not recommended as each shell that is used requires "
"manual configuration, where each shell has a different configuration file "
"and differing syntax. As an example, to set the German language for the "
"`sh` shell, these lines could be added to [.filename]#~/.profile# to set the "
"shell for that user only. These lines could also be added to [.filename]#/"
"etc/profile# or [.filename]#/usr/share/skel/dot.profile# to set that shell "
"for all users:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:274
#, no-wrap
msgid ""
"LANG=de_DE.ISO8859-1; export LANG\n"
"MM_CHARSET=ISO-8859-1; export MM_CHARSET\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:278
msgid ""
"However, the name of the configuration file and the syntax used differs for "
"the `csh` shell. These are the equivalent settings for [.filename]#~/."
"login#, [.filename]#/etc/csh.login#, or [.filename]#/usr/share/skel/dot."
"login#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:283
#, no-wrap
msgid ""
"setenv LANG de_DE.ISO8859-1\n"
"setenv MM_CHARSET ISO-8859-1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:287
msgid ""
"To complicate matters, the syntax needed to configure Xorg in [.filename]#~/."
"xinitrc# also depends upon the shell. The first example is for the `sh` "
"shell and the second is for the `csh` shell:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:291
#, no-wrap
msgid "LANG=de_DE.ISO8859-1; export LANG\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:297
#, no-wrap
msgid "setenv LANG de_DE.ISO8859-1\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/l10n/_index.adoc:301
#, no-wrap
msgid "Console Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:306
msgid ""
"Several localized fonts are available for the console. To see a listing of "
"available fonts, type `ls /usr/share/syscons/fonts`. To configure the "
"console font, specify the _font_name_, without the [.filename]#.fnt# suffix, "
"in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:312
#, no-wrap
msgid ""
"font8x16=font_name\n"
"font8x14=font_name\n"
"font8x8=font_name\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:315
msgid ""
"The keymap and screenmap can be set by adding the following to [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:321
#, no-wrap
msgid ""
"scrnmap=screenmap_name\n"
"keymap=keymap_name\n"
"keychange=\"fkey_number sequence\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:326
msgid ""
"To see the list of available screenmaps, type `ls /usr/share/syscons/"
"scrnmaps`. Do not include the [.filename]#.scm# suffix when specifying "
"_screenmap_name_. A screenmap with a corresponding mapped font is usually "
"needed as a workaround for expanding bit 8 to bit 9 on a VGA adapter's font "
"character matrix so that letters are moved out of the pseudographics area if "
"the screen font uses a bit 8 column."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:330
msgid ""
"To see the list of available keymaps, type `ls /usr/share/syscons/keymaps`. "
"When specifying the _keymap_name_, do not include the [.filename]#.kbd# "
"suffix. To test keymaps without rebooting, use man:kbdmap[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:332
msgid ""
"The `keychange` entry is usually needed to program function keys to match "
"the selected terminal type because function key sequences cannot be defined "
"in the keymap."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:335
msgid ""
"Next, set the correct console terminal type in [.filename]#/etc/ttys# for "
"all virtual terminal entries. <<locale-charset>> summarizes the available "
"terminal types.:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/l10n/_index.adoc:337
#, no-wrap
msgid "Defined Terminal Types for Character Sets"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:341
#, no-wrap
msgid "Character Set"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:343
#, no-wrap
msgid "Terminal Type"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:344
#, no-wrap
msgid "ISO8859-1 or ISO8859-15"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:346
#, no-wrap
msgid "`cons25l1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:347
#, no-wrap
msgid "ISO8859-2"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:349
#, no-wrap
msgid "`cons25l2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:350
#, no-wrap
msgid "ISO8859-7"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:352
#, no-wrap
msgid "`cons25l7`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:353
#, no-wrap
msgid "KOI8-R"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:355
#, no-wrap
msgid "`cons25r`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:356
#, no-wrap
msgid "KOI8-U"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:358
#, no-wrap
msgid "`cons25u`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:359
#, no-wrap
msgid "CP437 (VGA default)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:361
#, no-wrap
msgid "`cons25`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:362
#, no-wrap
msgid "US-ASCII"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:363
#, no-wrap
msgid "`cons25w`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:368
msgid ""
"For languages with wide or multibyte characters, install a console for that "
"language from the FreeBSD Ports Collection. The available ports are "
"summarized in <<locale-console>>. Once installed, refer to the port's [."
"filename]#pkg-message# or man pages for configuration and usage instructions."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/l10n/_index.adoc:370
#, no-wrap
msgid "Available Console from Ports Collection"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:374
#: documentation/content/en/books/handbook/l10n/_index.adoc:419
#, no-wrap
msgid "Language"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:376
#, no-wrap
msgid "Port Location"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:377
#, no-wrap
msgid "Traditional Chinese (BIG-5)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:379
#, no-wrap
msgid "package:chinese/big5con[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:380
#: documentation/content/en/books/handbook/l10n/_index.adoc:383
#, no-wrap
msgid "Chinese/Japanese/Korean"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:382
#, no-wrap
msgid "package:chinese/cce[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:385
#, no-wrap
msgid "package:chinese/zhcon[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:386
#: documentation/content/en/books/handbook/l10n/_index.adoc:389
#: documentation/content/en/books/handbook/l10n/_index.adoc:392
#: documentation/content/en/books/handbook/l10n/_index.adoc:443
#: documentation/content/en/books/handbook/l10n/_index.adoc:446
#: documentation/content/en/books/handbook/l10n/_index.adoc:449
#: documentation/content/en/books/handbook/l10n/_index.adoc:452
#: documentation/content/en/books/handbook/l10n/_index.adoc:455
#: documentation/content/en/books/handbook/l10n/_index.adoc:458
#: documentation/content/en/books/handbook/l10n/_index.adoc:461
#: documentation/content/en/books/handbook/l10n/_index.adoc:464
#: documentation/content/en/books/handbook/l10n/_index.adoc:467
#: documentation/content/en/books/handbook/l10n/_index.adoc:470
#: documentation/content/en/books/handbook/l10n/_index.adoc:473
#: documentation/content/en/books/handbook/l10n/_index.adoc:476
#: documentation/content/en/books/handbook/l10n/_index.adoc:479
#: documentation/content/en/books/handbook/l10n/_index.adoc:482
#: documentation/content/en/books/handbook/l10n/_index.adoc:485
#: documentation/content/en/books/handbook/l10n/_index.adoc:488
#: documentation/content/en/books/handbook/l10n/_index.adoc:491
#: documentation/content/en/books/handbook/l10n/_index.adoc:494
#, no-wrap
msgid "Japanese"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:388
#, no-wrap
msgid "package:chinese/kon2[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:391
#, no-wrap
msgid "package:japanese/kon2-14dot[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:393
#, no-wrap
msgid "package:japanese/kon2-16dot[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:398
msgid ""
"If moused is enabled in [.filename]#/etc/rc.conf#, additional configuration "
"may be required. By default, the mouse cursor of the man:syscons[4] driver "
"occupies the `0xd0`-`0xd3` range in the character set. If the language uses "
"this range, move the cursor's range by adding the following line to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:402
#, no-wrap
msgid "mousechar_start=3\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/l10n/_index.adoc:404
#, no-wrap
msgid "Xorg Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:409
msgid ""
"crossref:x11[x11,The X Window System] describes how to install and configure "
"Xorg. When configuring Xorg for localization, additional fonts and input "
"methods are available from the FreeBSD Ports Collection. Application "
"specific i18n settings such as fonts and menus can be tuned in [."
"filename]#~/.Xresources# and should allow users to view their selected "
"language in graphical application menus."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:413
msgid ""
"The X Input Method (XIM) protocol is an Xorg standard for inputting non-"
"English characters. <<locale-xim>> summarizes the input method applications "
"which are available in the FreeBSD Ports Collection. Additional Fcitx and "
"Uim applications are also available."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/l10n/_index.adoc:415
#, no-wrap
msgid "Available Input Methods"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:421
#, no-wrap
msgid "Input Method"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:422
#: documentation/content/en/books/handbook/l10n/_index.adoc:425
#: documentation/content/en/books/handbook/l10n/_index.adoc:428
#: documentation/content/en/books/handbook/l10n/_index.adoc:431
#: documentation/content/en/books/handbook/l10n/_index.adoc:434
#: documentation/content/en/books/handbook/l10n/_index.adoc:437
#: documentation/content/en/books/handbook/l10n/_index.adoc:440
#, no-wrap
msgid "Chinese"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:424
#, no-wrap
msgid "package:chinese/gcin[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:427
#, no-wrap
msgid "package:chinese/ibus-chewing[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:430
#, no-wrap
msgid "package:chinese/ibus-pinyin[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:433
#, no-wrap
msgid "package:chinese/oxim[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:436
#, no-wrap
msgid "package:chinese/scim-fcitx[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:439
#, no-wrap
msgid "package:chinese/scim-pinyin[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:442
#, no-wrap
msgid "package:chinese/scim-tables[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:445
#, no-wrap
msgid "package:japanese/ibus-anthy[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:448
#, no-wrap
msgid "package:japanese/ibus-mozc[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:451
#, no-wrap
msgid "package:japanese/ibus-skk[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:454
#, no-wrap
msgid "package:japanese/im-ja[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:457
#, no-wrap
msgid "package:japanese/kinput2[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:460
#, no-wrap
msgid "package:japanese/scim-anthy[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:463
#, no-wrap
msgid "package:japanese/scim-canna[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:466
#, no-wrap
msgid "package:japanese/scim-honoka[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:469
#, no-wrap
msgid "package:japanese/scim-honoka-plugin-romkan[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:472
#, no-wrap
msgid "package:japanese/scim-honoka-plugin-wnn[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:475
#, no-wrap
msgid "package:japanese/scim-prime[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:478
#, no-wrap
msgid "package:japanese/scim-skk[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:481
#, no-wrap
msgid "package:japanese/scim-tables[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:484
#, no-wrap
msgid "package:japanese/scim-tomoe[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:487
#, no-wrap
msgid "package:japanese/scim-uim[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:490
#, no-wrap
msgid "package:japanese/skkinput[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:493
#, no-wrap
msgid "package:japanese/skkinput3[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:496
#, no-wrap
msgid "package:japanese/uim-anthy[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:497
#: documentation/content/en/books/handbook/l10n/_index.adoc:500
#: documentation/content/en/books/handbook/l10n/_index.adoc:503
#: documentation/content/en/books/handbook/l10n/_index.adoc:506
#: documentation/content/en/books/handbook/l10n/_index.adoc:509
#, no-wrap
msgid "Korean"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:499
#, no-wrap
msgid "package:korean/ibus-hangul[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:502
#, no-wrap
msgid "package:korean/imhangul[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:505
#, no-wrap
msgid "package:korean/nabi[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:508
#, no-wrap
msgid "package:korean/scim-hangul[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:511
#, no-wrap
msgid "package:korean/scim-tables[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:512
#: documentation/content/en/books/handbook/l10n/_index.adoc:515
#, no-wrap
msgid "Vietnamese"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:514
#, no-wrap
msgid "package:vietnamese/xvnkb[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/l10n/_index.adoc:516
#, no-wrap
msgid "package:vietnamese/x-unikey[]"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/l10n/_index.adoc:519
#, no-wrap
msgid "Finding i18n Applications"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:523
msgid ""
"i18n applications are programmed using i18n kits under libraries. These "
"allow developers to write a simple file and translate displayed menus and "
"texts to each language."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:527
msgid ""
"The link:https://www.FreeBSD.org/ports/[FreeBSD Ports Collection] contains "
"many applications with built-in support for wide or multibyte characters for "
"several languages. Such applications include `i18n` in their names for easy "
"identification. However, they do not always support the language needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:531
msgid ""
"Some applications can be compiled with the specific charset. This is "
"usually done in the port's [.filename]#Makefile# or by passing a value to "
"configure. Refer to the i18n documentation in the respective FreeBSD port's "
"source for more information on how to determine the needed configure value "
"or the port's [.filename]#Makefile# to determine which compile options to "
"use when building the port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/l10n/_index.adoc:533
#, no-wrap
msgid "Locale Configuration for Specific Languages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:537
msgid ""
"This section provides configuration examples for localizing a FreeBSD system "
"for the Russian language. It then provides some additional resources for "
"localizing other languages."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/l10n/_index.adoc:539
#, no-wrap
msgid "Russian Language (KOI8-R Encoding)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:543
msgid ""
"This section shows the specific settings needed to localize a FreeBSD system "
"for the Russian language. Refer to <<using-localization,Using "
"Localization>> for a more complete description of each type of setting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:545
msgid ""
"To set this locale for the login shell, add the following lines to each "
"user's [.filename]#~/.login_conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:551
#, no-wrap
msgid ""
"me:My Account:\\\n"
"\t:charset=KOI8-R:\\\n"
"\t:lang=ru_RU.KOI8-R:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:554
msgid ""
"To configure the console, add the following lines to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:563
#, no-wrap
msgid ""
"keymap=\"ru.utf-8\"\n"
"scrnmap=\"utf-82cp866\"\n"
"font8x16=\"cp866b-8x16\"\n"
"font8x14=\"cp866-8x14\"\n"
"font8x8=\"cp866-8x8\"\n"
"mousechar_start=3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:566
msgid ""
"For each `ttyv` entry in [.filename]#/etc/ttys#, use `cons25r` as the "
"terminal type."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:570
msgid ""
"To configure printing, a special output filter is needed to convert from "
"KOI8-R to CP866 since most printers with Russian characters come with "
"hardware code page CP866. FreeBSD includes a default filter for this "
"purpose, [.filename]#/usr/libexec/lpr/ru/koi2alt#. To use this filter, add "
"this entry to [.filename]#/etc/printcap#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:576
#, no-wrap
msgid ""
"lp|Russian local line printer:\\\n"
"\t:sh:of=/usr/libexec/lpr/ru/koi2alt:\\\n"
"\t:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:579
msgid "Refer to man:printcap[5] for a more detailed explanation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:581
msgid ""
"To configure support for Russian filenames in mounted MS-DOS(R) file "
"systems, include `-L` and the locale name when adding an entry to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:585
#, no-wrap
msgid "/dev/ad0s2 /dos/c msdos rw,-Lru_RU.KOI8-R 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:588
msgid "Refer to man:mount_msdosfs[8] for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:591
msgid ""
"To configure Russian fonts for Xorg, install the package:x11-fonts/xorg-"
"fonts-cyrillic[] package. Then, check the `\"Files\"` section in [."
"filename]#/etc/X11/xorg.conf#. The following line must be added _before_ any "
"other `FontPath` entries:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:595
#, no-wrap
msgid "FontPath \"/usr/local/lib/X11/fonts/cyrillic\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:598
msgid "Additional Cyrillic fonts are available in the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:600
msgid ""
"To activate a Russian keyboard, add the following to the `\"Keyboard\"` "
"section of [.filename]#/etc/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:605
#, no-wrap
msgid ""
"Option \"XkbLayout\" \"us,ru\"\n"
"Option \"XkbOptions\" \"grp:toggle\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:608
msgid "Make sure that `XkbDisable` is commented out in that file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:611
msgid ""
"For `grp:toggle` use kbd:[Right Alt], for `grp:ctrl_shift_toggle` use kbd:"
"[Ctrl+Shift]. For `grp:caps_toggle` use kbd:[CapsLock]. The old kbd:"
-"[CapsLock] function is still available in LAT mode only using kbd:[Shift"
-"+CapsLock]. `grp:caps_toggle` does not work in Xorg for some unknown reason."
+"[CapsLock] function is still available in LAT mode only using kbd:"
+"[Shift+CapsLock]. `grp:caps_toggle` does not work in Xorg for some unknown "
+"reason."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:613
msgid ""
"If the keyboard has \"Windows(R)\" keys, and some non-alphabetical keys are "
"mapped incorrectly, add the following line to [.filename]#/etc/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:617
#, no-wrap
msgid "Option \"XkbVariant\" \",winkeys\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/l10n/_index.adoc:623
msgid ""
"The Russian XKB keyboard may not work with non-localized applications. "
"Minimally localized applications should call a `XtSetLanguageProc (NULL, "
"NULL, NULL);` function early in the program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:627
msgid ""
"See http://koi8.pp.ru/xwin.html[http://koi8.pp.ru/xwin.html] for more "
"instructions on localizing Xorg applications. For more general information "
"about KOI8-R encoding, refer to http://koi8.pp.ru/[http://koi8.pp.ru/]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/l10n/_index.adoc:628
#, no-wrap
msgid "Additional Language-Specific Resources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:631
msgid ""
"This section lists some additional resources for configuring other locales."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/l10n/_index.adoc:632
#, no-wrap
msgid "Traditional Chinese for Taiwan"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:634
msgid ""
"The FreeBSD-Taiwan Project has a Chinese HOWTO for FreeBSD at http://netlab."
"cse.yzu.edu.tw/\\~statue/freebsd/zh-tut/[http://netlab.cse.yzu.edu.tw/"
"~statue/freebsd/zh-tut/]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/l10n/_index.adoc:635
#, no-wrap
msgid "Greek Language Localization"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:637
msgid ""
"A complete article on Greek support in FreeBSD is available https://www."
"FreeBSD.org/doc/gr/articles/greek-language-support/[here], in Greek only, as "
"part of the official FreeBSD Greek documentation."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/l10n/_index.adoc:638
#, no-wrap
msgid "Japanese and Korean Language Localization"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:640
msgid ""
"For Japanese, refer to http://www.jp.FreeBSD.org/[http://www.jp.FreeBSD."
"org/], and for Korean, refer to http://www.kr.FreeBSD.org/[http://www.kr."
"FreeBSD.org/]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/l10n/_index.adoc:641
#, no-wrap
msgid "Non-English FreeBSD Documentation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/l10n/_index.adoc:643
msgid ""
"Some FreeBSD contributors have translated parts of the FreeBSD documentation "
"to other languages. They are available through links on the link:https://"
"www.FreeBSD.org/[FreeBSD web site] or in [.filename]#/usr/share/doc#."
msgstr ""
diff --git a/documentation/content/en/books/handbook/linuxemu/_index.po b/documentation/content/en/books/handbook/linuxemu/_index.po
index c360e5e476..b7fe2aea09 100644
--- a/documentation/content/en/books/handbook/linuxemu/_index.po
+++ b/documentation/content/en/books/handbook/linuxemu/_index.po
@@ -1,681 +1,681 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:1
#, no-wrap
msgid "FreeBSD provides binary compatibility with Linux, allowing users to install and run most Linux binaries on a FreeBSD system without having to first modify the binary"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:1
#, no-wrap
-msgid "Chapter 10. Linux Binary Compatibility"
+msgid "Chapter 11. Linux Binary Compatibility"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:15
#, no-wrap
msgid "Linux Binary Compatibility"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:57
msgid ""
"FreeBSD provides optional binary compatibility with Linux(R), allowing users "
"to install and run unmodified Linux binaries. It is available for the i386, "
"amd64, and arm64 architectures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:59
msgid ""
"Some Linux-specific operating system features are not yet supported; this "
"mostly happens with functionality specific to hardware or related to system "
"management, such as cgroups or namespaces."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:61
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:63
msgid "How to enable Linux binary compatibility on a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:64
msgid "How to install additional Linux shared libraries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:65
msgid "How to install Linux applications on a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:66
msgid "The implementation details of Linux compatibility in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:68
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:70
msgid ""
"Know how to install crossref:ports[ports,additional third-party software]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:72
#, no-wrap
msgid "Configuring Linux Binary Compatibility"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:76
msgid ""
"By default, Linux binary compatibility is not enabled. To enable it at boot "
"time, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:80
#, no-wrap
msgid "linux_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:83
msgid "Once enabled, it can be started without rebooting by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:86
#, no-wrap
msgid "# service linux start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:91
msgid ""
"The [.filename]#/etc/rc.d/linux# script will load necessary kernel modules "
"and mount filesystems expected by Linux applications under [.filename]#/"
"compat/linux#. This is enough for statically linked Linux binaries to "
"work. They can be started in the same way native FreeBSD binaries can; they "
"behave almost exactly like native processes and can be traced and debugged "
"the usual way."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:94
msgid ""
"Linux binaries linked dynamically (which is the vast majority) also require "
"Linux shared libraries to be installed - they can run on top of the FreeBSD "
"kernel, but they cannot use FreeBSD libraries; this is similar to how 32-bit "
"binaries cannot use native 64-bit libraries. There are several ways of "
"providing those libraries: one can copy them over from an existing Linux "
"installation using the same architecture, install them from FreeBSD "
"packages, or install using man:debootstrap[8] (from package:sysutils/"
"debootstrap[]), and others."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:96
#, no-wrap
msgid "CentOS Base System from FreeBSD Packages"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:101
msgid "This method is not yet available for arm64."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:104
msgid ""
"The easiest way to install Linux libraries is to install package:emulators/"
"linux_base-c7[] package or port, which places the CentOS 7-derived base "
"system into [.filename]#/compat/linux#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:108
#, no-wrap
msgid "# pkg install linux_base-c7\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:112
msgid ""
"FreeBSD provides packages for some Linux binary applications. For example, "
"to install Sublime Text 4, along with all the Linux libraries it depends on, "
"run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:115
#, no-wrap
msgid "# pkg install linux-sublime-text4\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:118
#, no-wrap
msgid "Debian / Ubuntu Base System with man:debootstrap[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:123
msgid ""
"An alternative way of providing Linux shared libraries is by using package:"
"sysutils/debootstrap[]. This has the advantage of providing a full Debian "
"or Ubuntu distribution. To use it, follow the instructions at FreeBSD Wiki: "
"https://wiki.freebsd.org/LinuxJails[FreeBSD Wiki - Linux Jails]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:125
msgid ""
"After debootstrapping, man:chroot[8] into the newly created directory and "
"install software in a way typical for the Linux distribution inside, for "
"example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:130
#, no-wrap
msgid ""
"# chroot /compat/ubuntu /bin/bash\n"
"root@hostname:/# apt update\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:135
msgid ""
"It is possible to debootstrap into [.filename]#/compat/linux#, but it is "
"discouraged to avoid collisions with files installed from FreeBSD ports and "
"packages. Instead, derive the directory name from the distribution or "
"version name, e.g., [.filename]#/compat/ubuntu#. If the bootstrapped "
"instance is intended to provide Linux shared libraries without having to "
"explicitly use chroot or jails, one can point the kernel at it by updating "
"the `compat.linux.emul_path` sysctl and adding a line like this to [."
"filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:139
#, no-wrap
msgid "compat.linux.emul_path=\"/compat/ubuntu\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:143
msgid ""
"This sysctl controls the kernel's path translation mechanism; see man:"
"linux[4] for details. Please note that changing it might cause trouble for "
"Linux applications installed from FreeBSD packages; one reason is that many "
"of those applications are still 32-bit, while Ubuntu seems to be deprecating "
"32-bit library support."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:145
#, no-wrap
msgid "Advanced Topics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:149
msgid ""
"The Linux compatibility layer is a work in progress. Consult https://wiki."
"freebsd.org/Linuxulator[FreeBSD Wiki - Linuxulator] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:151
msgid ""
"A list of all Linux-related man:sysctl[8] knobs can be found in man:linux[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:154
msgid ""
"Some applications require specific filesystems to be mounted. This is "
"normally handled by the [.filename]#/etc/rc.d/linux# script, but can be "
"disabled by adding this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:158
#, no-wrap
msgid "linux_mounts_enable=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:161
msgid ""
"Filesystems mounted by the rc script will not work for Linux processes "
"inside chroots or jails; if needed, configure them in [.filename]#/etc/"
"fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:167
#, no-wrap
msgid ""
"devfs /compat/linux/dev devfs rw,late 0 0\n"
"tmpfs /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0\n"
"fdescfs /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0\n"
"linprocfs /compat/linux/proc linprocfs rw,late 0 0\n"
"linsysfs /compat/linux/sys linsysfs rw,late 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:170
msgid ""
"Since the Linux binary compatibility layer has gained support for running "
"both 32- and 64-bit Linux binaries (on 64-bit x86 hosts), it is no longer "
"possible to link the emulation functionality statically into a custom kernel."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:172
#, no-wrap
msgid "Installing Additional Libraries Manually"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:177
msgid ""
"For base system subdirectories created with man:debootstrap[8], use the "
"instructions above instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:180
msgid ""
"If a Linux application complains about missing shared libraries after "
"configuring Linux binary compatibility, determine which shared libraries the "
"Linux binary needs and install them manually."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:183
msgid ""
"From a Linux system using the same CPU architecture, `ldd` can be used to "
"determine which shared libraries the application needs. For example, to "
"check which shared libraries `linuxdoom` needs, run this command from a "
"Linux system that has Doom installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:190
#, no-wrap
msgid ""
"% ldd linuxdoom\n"
"libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0\n"
"libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0\n"
"libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:195
msgid ""
"Then, copy all the files in the last column of the output from the Linux "
"system into [.filename]#/compat/linux# on the FreeBSD system. Once copied, "
"create symbolic links to the names in the first column. This example will "
"result in the following files on the FreeBSD system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:204
#, no-wrap
msgid ""
"/compat/linux/usr/X11/lib/libXt.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libX11.so.3.1.0\n"
"/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0\n"
"/compat/linux/lib/libc.so.4.6.29\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:209
msgid ""
"If a Linux shared library already exists with a matching major revision "
"number to the first column of the `ldd` output, it does not need to be "
"copied to the file named in the last column, as the existing library should "
"work. It is advisable to copy the shared library if it is a newer version, "
"though. The old one can be removed, as long as the symbolic link points to "
"the new one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:211
msgid "For example, these libraries already exist on the FreeBSD system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:216
#, no-wrap
msgid ""
"/compat/linux/lib/libc.so.4.6.27\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.27\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:219
msgid "and `ldd` indicates that a binary requires a later version:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:223
#, no-wrap
msgid "libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:227
msgid ""
"Since the existing library is only one or two versions out of date in the "
"last digit, the program should still work with the slightly older version. "
"However, it is safe to replace the existing [.filename]#libc.so# with the "
"newer version:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:232
#, no-wrap
msgid ""
"/compat/linux/lib/libc.so.4.6.29\n"
"/compat/linux/lib/libc.so.4 -> libc.so.4.6.29\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:236
msgid ""
"Generally, one will need to look for the shared libraries that Linux "
"binaries depend on only the first few times that a Linux program is "
"installed on FreeBSD. After a while, there will be a sufficient set of "
"Linux shared libraries on the system to be able to run newly installed Linux "
"binaries without any extra work."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:237
#, no-wrap
msgid "Branding Linux ELF Binaries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:241
msgid ""
"The FreeBSD kernel uses several methods to determine if the binary to be "
"executed is a Linux one: it checks the brand in the ELF file header, looks "
"for known ELF interpreter paths and checks ELF notes; finally, by default, "
"unbranded ELF executables are assumed to be Linux anyway. Should all those "
"methods fail, an attempt to execute the binary might result in error message:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:247
#, no-wrap
msgid ""
"% ./my-linux-elf-binary\n"
"ELF binary type not known\n"
"Abort\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:250
msgid ""
"To help the FreeBSD kernel distinguish between a FreeBSD ELF binary and a "
"Linux binary, use man:brandelf[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:254
#, no-wrap
msgid "% brandelf -t Linux my-linux-elf-binary\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:256
#, no-wrap
msgid "Installing a Linux RPM Based Application"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:260
msgid ""
"To install a Linux RPM-based application, first install the package:"
"archivers/rpm4[] package or port. Once installed, `root` can use this "
"command to install a [.filename]#.rpm#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:265
#, no-wrap
msgid ""
"# cd /compat/linux\n"
"# rpm2cpio < /path/to/linux.archive.rpm | cpio -id\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:269
msgid ""
"If necessary, `brandelf` the installed ELF binaries. Note that this will "
"prevent a clean uninstall."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:270
#, no-wrap
msgid "Configuring the Hostname Resolver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:273
msgid "If DNS does not work or this error appears:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:278
#, no-wrap
msgid ""
"resolv+: \"bind\" is an invalid keyword resolv+:\n"
"\"hosts\" is an invalid keyword\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:281
msgid "configure [.filename]#/compat/linux/etc/host.conf# as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:286
#, no-wrap
msgid ""
"order hosts, bind\n"
"multi on\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:291
msgid ""
"This specifies that [.filename]#/etc/hosts# is searched first and DNS is "
"searched second. When [.filename]#/compat/linux/etc/host.conf# does not "
"exist, Linux applications use [.filename]#/etc/host.conf# and complain about "
"the incompatible FreeBSD syntax. Remove `bind` if a name server is not "
"configured using [.filename]#/etc/resolv.conf#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:293
#, no-wrap
msgid "Miscellaneous"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:296
msgid ""
"This section describes how Linux binary compatibility works and is based on "
"an email written to {freebsd-chat} by Terry Lambert mailto:tlambert@primenet."
"com[tlambert@primenet.com] (Message ID: `<199906020108.SAA07001@usr09."
"primenet.com>`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:299
msgid ""
"FreeBSD has an abstraction called an \"execution class loader\". This is a "
"wedge into the man:execve[2] system call."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:301
msgid ""
"Historically, the UNIX(R) loader examined the magic number (generally the "
"first 4 or 8 bytes of the file) to see if it was a binary known to the "
"system, and if so, invoked the binary loader."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:304
msgid ""
"If it was not the binary type for the system, the man:execve[2] call "
"returned a failure, and the shell attempted to start executing it as shell "
"commands. The assumption was a default of \"whatever the current shell is\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:306
msgid ""
"Later, a hack was made for man:sh[1] to examine the first two characters, "
"and if they were `:\\n`, it invoked the man:csh[1] shell instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:308
msgid ""
"FreeBSD has a list of loaders, instead of a single loader, with a fallback "
"to the `#!` loader for running shell interpreters or shell scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:311
msgid ""
"For the Linux ABI support, FreeBSD sees the magic number as an ELF binary. "
"The ELF loader looks for a specialized _brand_, which is a comment section "
"in the ELF image, and which is not present on SVR4/Solaris(TM) ELF binaries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:313
msgid ""
"For Linux binaries to function, they must be _branded_ as type `Linux` using "
"man:brandelf[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:317
#, no-wrap
msgid "# brandelf -t Linux file\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:322
msgid ""
"When the ELF loader sees the `Linux` brand, the loader replaces a pointer in "
"the `proc` structure. All system calls are indexed through this pointer. "
"In addition, the process is flagged for special handling of the trap vector "
"for the signal trampoline code, and several other (minor) fix-ups that are "
"handled by the Linux kernel module."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:324
msgid ""
"The Linux system call vector contains, among other things, a list of "
"`sysent[]` entries whose addresses reside in the kernel module."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:326
msgid ""
"When a system call is called by the Linux binary, the trap code dereferences "
"the system call function pointer off the `proc` structure, and gets the "
"Linux, not the FreeBSD, system call entry points."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:334
msgid ""
"Linux mode dynamically _reroots_ lookups. This is, in effect, equivalent to "
-"`union` to file system mounts. First, an attempt is made to look up the "
-"file in [.filename]#/compat/linux/original-path#. If that fails, the lookup "
-"is done in [.filename]#/original-path#. This makes sure that binaries that "
+"`union` file system mounts. First, an attempt is made to look up the file "
+"in [.filename]#/compat/linux/original-path#. If that fails, the lookup is "
+"done in [.filename]#/original-path#. This makes sure that binaries that "
"require other binaries can run. For example, the Linux toolchain can all "
"run under Linux ABI support. It also means that the Linux binaries can load "
"and execute FreeBSD binaries, if there are no corresponding Linux binaries "
"present, and that a man:uname[1] command can be placed in the [.filename]#/"
"compat/linux# directory tree to ensure that the Linux binaries cannot tell "
"they are not running on Linux."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:339
msgid ""
"In effect, there is a Linux kernel in the FreeBSD kernel. The various "
"underlying functions that implement all of the services provided by the "
"kernel are identical to both the FreeBSD system call table entries, and the "
"Linux system call table entries: file system operations, virtual memory "
"operations, signal delivery, and System V IPC. The only difference is that "
"FreeBSD binaries get the FreeBSD _glue_ functions, and Linux binaries get "
"the Linux _glue_ functions. The FreeBSD _glue_ functions are statically "
"linked into the kernel, and the Linux _glue_ functions can be statically "
"linked, or they can be accessed via a kernel module."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/linuxemu/_index.adoc:342
msgid ""
"Technically, this is not really emulation, it is an ABI implementation. It "
"is sometimes called \"Linux emulation\" because the implementation was done "
"at a time when there was no other word to describe what was going on. "
"Saying that FreeBSD ran Linux binaries was not true, since the code was not "
"compiled in."
msgstr ""
diff --git a/documentation/content/en/books/handbook/mac/_index.po b/documentation/content/en/books/handbook/mac/_index.po
index 03a001f380..fd0040b939 100644
--- a/documentation/content/en/books/handbook/mac/_index.po
+++ b/documentation/content/en/books/handbook/mac/_index.po
@@ -1,2324 +1,2324 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/mac/_index.adoc:1
#, no-wrap
msgid "This chapter focuses on the MAC framework and the set of pluggable security policy modules FreeBSD provides for enabling various security mechanisms"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/mac/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/mac/_index.adoc:1
#, no-wrap
-msgid "Chapter 16. Mandatory Access Control"
+msgid "Chapter 17. Mandatory Access Control"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/mac/_index.adoc:15
#, no-wrap
msgid "Mandatory Access Control"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:62
msgid ""
"FreeBSD supports security extensions based on the POSIX(R).1e draft. These "
"security mechanisms include file system Access Control Lists (crossref:"
"security[fs-acl,“Access Control Lists”]) and Mandatory Access Control "
"(MAC). MAC allows access control modules to be loaded in order to implement "
"security policies. Some modules provide protections for a narrow subset of "
"the system, hardening a particular service. Others provide comprehensive "
"labeled security across all subjects and objects. The mandatory part of the "
"definition indicates that enforcement of controls is performed by "
"administrators and the operating system. This is in contrast to the default "
"security mechanism of Discretionary Access Control (DAC) where enforcement "
"is left to the discretion of users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:64
msgid ""
"This chapter focuses on the MAC framework and the set of pluggable security "
"policy modules FreeBSD provides for enabling various security mechanisms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:66
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:68
msgid "The terminology associated with the MAC framework."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:69
msgid ""
"The capabilities of MAC security policy modules as well as the difference "
"between a labeled and non-labeled policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:70
msgid ""
"The considerations to take into account before configuring a system to use "
"the MAC framework."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:71
msgid ""
"Which MAC security policy modules are included in FreeBSD and how to "
"configure them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:72
msgid "How to implement a more secure environment using the MAC framework."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:73
msgid ""
"How to test the MAC configuration to ensure the framework has been properly "
"implemented."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:75
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:77
msgid ""
"Understand UNIX(R) and FreeBSD basics (crossref:basics[basics,FreeBSD "
"Basics])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:78
msgid ""
"Have some familiarity with security and how it pertains to FreeBSD (crossref:"
"security[security,Security])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:85
msgid ""
"Improper MAC configuration may cause loss of system access, aggravation of "
"users, or inability to access the features provided by Xorg. More "
"importantly, MAC should not be relied upon to completely secure a system. "
"The MAC framework only augments an existing security policy. Without sound "
"security practices and regular security checks, the system will never be "
"completely secure."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:88
msgid ""
"The examples contained within this chapter are for demonstration purposes "
"and the example settings should _not_ be implemented on a production "
"system. Implementing any security policy takes a good deal of "
"understanding, proper design, and thorough testing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:93
msgid ""
"While this chapter covers a broad range of security issues relating to the "
"MAC framework, the development of new MAC security policy modules will not "
"be covered. A number of security policy modules included with the MAC "
"framework have specific characteristics which are provided for both testing "
"and new module development. Refer to man:mac_test[4], man:mac_stub[4] and "
"man:mac_none[4] for more information on these security policy modules and "
"the various mechanisms they provide."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:95
#, no-wrap
msgid "Key Terms"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:98
msgid "The following key terms are used when referring to the MAC framework:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:100
msgid ""
"_compartment_: a set of programs and data to be partitioned or separated, "
"where users are given explicit access to specific component of a system. A "
"compartment represents a grouping, such as a work group, department, "
"project, or topic. Compartments make it possible to implement a need-to-know-"
"basis security policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:101
msgid ""
"_integrity_: the level of trust which can be placed on data. As the "
"integrity of the data is elevated, so does the ability to trust that data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:102
msgid ""
"_level_: the increased or decreased setting of a security attribute. As the "
"level increases, its security is considered to elevate as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:103
msgid ""
"_label_: a security attribute which can be applied to files, directories, or "
"other items in the system. It could be considered a confidentiality stamp. "
"When a label is placed on a file, it describes the security properties of "
"that file and will only permit access by files, users, and resources with a "
"similar security setting. The meaning and interpretation of label values "
"depends on the policy configuration. Some policies treat a label as "
"representing the integrity or secrecy of an object while other policies "
"might use labels to hold rules for access."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:104
msgid ""
"_multilabel_: this property is a file system option which can be set in "
"single-user mode using man:tunefs[8], during boot using man:fstab[5], or "
"during the creation of a new file system. This option permits an "
"administrator to apply different MAC labels on different objects. This "
"option only applies to security policy modules which support labeling."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:105
msgid ""
"_single label_: a policy where the entire file system uses one label to "
"enforce access control over the flow of data. Whenever `multilabel` is not "
"set, all files will conform to the same label setting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:106
msgid ""
"_object_: an entity through which information flows under the direction of a "
"_subject_. This includes directories, files, fields, screens, keyboards, "
"memory, magnetic storage, printers or any other data storage or moving "
"device. An object is a data container or a system resource. Access to an "
"object effectively means access to its data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:107
msgid ""
"_subject_: any active entity that causes information to flow between "
"_objects_ such as a user, user process, or system process. On FreeBSD, this "
"is almost always a thread acting in a process on behalf of a user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:108
msgid ""
"_policy_: a collection of rules which defines how objectives are to be "
"achieved. A policy usually documents how certain items are to be handled. "
"This chapter considers a policy to be a collection of rules which controls "
"the flow of data and information and defines who has access to that data and "
"information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:109
msgid ""
"_high-watermark_: this type of policy permits the raising of security levels "
"for the purpose of accessing higher level information. In most cases, the "
"original level is restored after the process is complete. Currently, the "
"FreeBSD MAC framework does not include this type of policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:110
msgid ""
"_low-watermark_: this type of policy permits lowering security levels for "
"the purpose of accessing information which is less secure. In most cases, "
"the original security level of the user is restored after the process is "
"complete. The only security policy module in FreeBSD to use this is man:"
"mac_lomac[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:111
msgid ""
"_sensitivity_: usually used when discussing Multilevel Security (MLS). A "
"sensitivity level describes how important or secret the data should be. As "
"the sensitivity level increases, so does the importance of the secrecy, or "
"confidentiality, of the data."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:113
#, no-wrap
msgid "Understanding MAC Labels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:118
msgid ""
"A MAC label is a security attribute which may be applied to subjects and "
"objects throughout the system. When setting a label, the administrator must "
"understand its implications in order to prevent unexpected or undesired "
"behavior of the system. The attributes available on an object depend on the "
"loaded policy module, as policy modules interpret their attributes in "
"different ways."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:122
msgid ""
"The security label on an object is used as a part of a security access "
"control decision by a policy. With some policies, the label contains all of "
"the information necessary to make a decision. In other policies, the labels "
"may be processed as part of a larger rule set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:126
msgid ""
"There are two types of label policies: single label and multi label. By "
"default, the system will use single label. The administrator should be "
"aware of the pros and cons of each in order to implement policies which meet "
"the requirements of the system's security model."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:130
msgid ""
"A single label security policy only permits one label to be used for every "
"subject or object. Since a single label policy enforces one set of access "
"permissions across the entire system, it provides lower administration "
"overhead, but decreases the flexibility of policies which support labeling. "
"However, in many environments, a single label policy may be all that is "
"required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:134
msgid ""
"A single label policy is somewhat similar to DAC as `root` configures the "
"policies so that users are placed in the appropriate categories and access "
"levels. A notable difference is that many policy modules can also restrict "
"`root`. Basic control over objects will then be released to the group, but "
"`root` may revoke or modify the settings at any time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:139
msgid ""
"When appropriate, a multi label policy can be set on a UFS file system by "
"passing `multilabel` to man:tunefs[8]. A multi label policy permits each "
"subject or object to have its own independent MAC label. The decision to "
"use a multi label or single label policy is only required for policies which "
"implement the labeling feature, such as `biba`, `lomac`, and `mls`. Some "
"policies, such as `seeotheruids`, `portacl` and `partition`, do not use "
"labels at all."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:142
msgid ""
"Using a multi label policy on a partition and establishing a multi label "
"security model can increase administrative overhead as everything in that "
"file system has a label. This includes directories, files, and even device "
"nodes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:145
msgid ""
"The following command will set `multilabel` on the specified UFS file "
"system. This may only be done in single-user mode and is not a requirement "
"for the swap file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:149
#, no-wrap
msgid "# tunefs -l enable /\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:155
msgid ""
"Some users have experienced problems with setting the `multilabel` flag on "
"the root partition. If this is the case, please review <<mac-troubleshoot>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:161
msgid ""
"Since the multi label policy is set on a per-file system basis, a multi "
"label policy may not be needed if the file system layout is well designed. "
"Consider an example security MAC model for a FreeBSD web server. This "
"machine uses the single label, `biba/high`, for everything in the default "
"file systems. If the web server needs to run at `biba/low` to prevent write "
"up capabilities, it could be installed to a separate UFS [.filename]#/usr/"
"local# file system set at `biba/low`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:162
#, no-wrap
msgid "Label Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:166
msgid ""
"Virtually all aspects of label policy module configuration will be performed "
"using the base system utilities. These commands provide a simple interface "
"for object or subject configuration or the manipulation and verification of "
"the configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:169
msgid ""
"All configuration may be done using `setfmac`, which is used to set MAC "
"labels on system objects, and `setpmac`, which is used to set the labels on "
"system subjects. For example, to set the `biba` MAC label to `high` on [."
"filename]#test#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:173
#, no-wrap
msgid "# setfmac biba/high test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:181
msgid ""
"If the configuration is successful, the prompt will be returned without "
"error. A common error is `Permission denied` which usually occurs when the "
"label is being set or modified on a restricted object. Other conditions may "
"produce different failures. For instance, the file may not be owned by the "
"user attempting to relabel the object, the object may not exist, or the "
"object may be read-only. A mandatory policy will not allow the process to "
"relabel the file, maybe because of a property of the file, a property of the "
"process, or a property of the proposed new label value. For example, if a "
"user running at low integrity tries to change the label of a high integrity "
"file, or a user running at low integrity tries to change the label of a low "
"integrity file to a high integrity label, these operations will fail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:183
msgid ""
"The system administrator may use `setpmac` to override the policy module's "
"settings by assigning a different label to the invoked process:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:191
#, no-wrap
msgid ""
"# setfmac biba/high test\n"
"Permission denied\n"
"# setpmac biba/low setfmac biba/high test\n"
"# getfmac test\n"
"test: biba/high\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:196
msgid ""
"For currently running processes, such as sendmail, `getpmac` is usually used "
"instead. This command takes a process ID (PID) in place of a command name. "
"If users attempt to manipulate a file not in their access, subject to the "
"rules of the loaded policy modules, the `Operation not permitted` error will "
"be displayed."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:197
#, no-wrap
msgid "Predefined Labels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:200
msgid ""
"A few FreeBSD policy modules which support the labeling feature offer three "
"predefined labels: `low`, `equal`, and `high`, where:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:202
msgid ""
"`low` is considered the lowest label setting an object or subject may have. "
"Setting this on objects or subjects blocks their access to objects or "
"subjects marked high."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:203
msgid ""
"`equal` sets the subject or object to be disabled or unaffected and should "
"only be placed on objects considered to be exempt from the policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:204
msgid ""
"`high` grants an object or subject the highest setting available in the Biba "
"and MLS policy modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:208
msgid ""
"Such policy modules include man:mac_biba[4], man:mac_mls[4] and man:"
"mac_lomac[4]. Each of the predefined labels establishes a different "
"information flow directive. Refer to the manual page of the module to "
"determine the traits of the generic label configurations."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:209
#, no-wrap
msgid "Numeric Labels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:214
msgid ""
"The Biba and MLS policy modules support a numeric label which may be set to "
"indicate the precise level of hierarchical control. This numeric level is "
"used to partition or sort information into different groups of "
"classification, only permitting access to that group or a higher group "
"level. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:218
#, no-wrap
msgid "biba/10:2+3+6(5:2+3-20:2+3+4+5+6)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:221
msgid ""
"may be interpreted as \"Biba Policy Label/Grade 10:Compartments 2, 3 and 6: "
"(grade 5 ...\")"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:224
msgid ""
"In this example, the first grade would be considered the effective grade "
"with effective compartments, the second grade is the low grade, and the last "
"one is the high grade. In most configurations, such fine-grained settings "
"are not needed as they are considered to be advanced configurations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:227
msgid ""
"System objects only have a current grade and compartment. System subjects "
"reflect the range of available rights in the system, and network interfaces, "
"where they are used for access control."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:232
msgid ""
"The grade and compartments in a subject and object pair are used to "
"construct a relationship known as _dominance_, in which a subject dominates "
"an object, the object dominates the subject, neither dominates the other, or "
"both dominate each other. The \"both dominate\" case occurs when the two "
"labels are equal. Due to the information flow nature of Biba, a user has "
"rights to a set of compartments that might correspond to projects, but "
"objects also have a set of compartments. Users may have to subset their "
"rights using `su` or `setpmac` in order to access objects in a compartment "
"from which they are not restricted."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:233
#, no-wrap
msgid "User Labels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:238
msgid ""
"Users are required to have labels so that their files and processes properly "
"interact with the security policy defined on the system. This is configured "
"in [.filename]#/etc/login.conf# using login classes. Every policy module "
"that uses labels will implement the user class setting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:243
msgid ""
"To set the user class default label which will be enforced by MAC, add a "
"`label` entry. An example `label` entry containing every policy module is "
"displayed below. Note that in a real configuration, the administrator would "
"never enable every policy module. It is recommended that the rest of this "
"chapter be reviewed before any configuration is implemented."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:269
#, no-wrap
msgid ""
"default:\\\n"
"\t:copyright=/etc/COPYRIGHT:\\\n"
"\t:welcome=/etc/motd:\\\n"
"\t:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\\\n"
"\t:path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\\\n"
"\t:manpath=/usr/share/man /usr/local/man:\\\n"
"\t:nologin=/usr/sbin/nologin:\\\n"
"\t:cputime=1h30m:\\\n"
"\t:datasize=8M:\\\n"
"\t:vmemoryuse=100M:\\\n"
"\t:stacksize=2M:\\\n"
"\t:memorylocked=4M:\\\n"
"\t:memoryuse=8M:\\\n"
"\t:filesize=8M:\\\n"
"\t:coredumpsize=8M:\\\n"
"\t:openfiles=24:\\\n"
"\t:maxproc=32:\\\n"
"\t:priority=0:\\\n"
"\t:requirehome:\\\n"
"\t:passwordtime=91d:\\\n"
"\t:umask=022:\\\n"
"\t:ignoretime@:\\\n"
"\t:label=partition/13,mls/5,biba/10(5-15),lomac/10[2]:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:274
msgid ""
"While users can not modify the default value, they may change their label "
"after they login, subject to the constraints of the policy. The example "
"above tells the Biba policy that a process's minimum integrity is `5`, its "
"maximum is `15`, and the default effective label is `10`. The process will "
"run at `10` until it chooses to change label, perhaps due to the user using "
"`setpmac`, which will be constrained by Biba to the configured range."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:276
msgid ""
"After any change to [.filename]#login.conf#, the login class capability "
"database must be rebuilt using `cap_mkdb`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:279
msgid ""
"Many sites have a large number of users requiring several different user "
"classes. In depth planning is required as this can become difficult to "
"manage."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:280
#, no-wrap
msgid "Network Interface Labels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:285
msgid ""
"Labels may be set on network interfaces to help control the flow of data "
"across the network. Policies using network interface labels function in the "
"same way that policies function with respect to objects. Users at high "
"settings in Biba, for example, will not be permitted to access network "
"interfaces with a label of `low`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:287
msgid ""
"When setting the MAC label on network interfaces, `maclabel` may be passed "
"to `ifconfig`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:291
#, no-wrap
msgid "# ifconfig bge0 maclabel biba/equal\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:295
msgid ""
"This example will set the MAC label of `biba/equal` on the `bge0` "
"interface. When using a setting similar to `biba/high(low-high)`, the "
"entire label should be quoted to prevent an error from being returned."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:299
msgid ""
"Each policy module which supports labeling has a tunable which may be used "
"to disable the MAC label on network interfaces. Setting the label to "
"`equal` will have a similar effect. Review the output of `sysctl`, the "
"policy manual pages, and the information in the rest of this chapter for "
"more information on those tunables."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:301
#, no-wrap
msgid "Planning the Security Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:305
msgid ""
"Before implementing any MAC policies, a planning phase is recommended. "
"During the planning stages, an administrator should consider the "
"implementation requirements and goals, such as:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:307
msgid ""
"How to classify information and resources available on the target systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:308
msgid ""
"Which information or resources to restrict access to along with the type of "
"restrictions that should be applied."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:309
msgid "Which MAC modules will be required to achieve this goal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:312
msgid ""
"A trial run of the trusted system and its configuration should occur "
"_before_ a MAC implementation is used on production systems. Since "
"different environments have different needs and requirements, establishing a "
"complete security profile will decrease the need of changes once the system "
"goes live."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:318
msgid ""
"Consider how the MAC framework augments the security of the system as a "
"whole. The various security policy modules provided by the MAC framework "
"could be used to protect the network and file systems or to block users from "
"accessing certain ports and sockets. Perhaps the best use of the policy "
"modules is to load several security policy modules at a time in order to "
"provide a MLS environment. This approach differs from a hardening policy, "
"which typically hardens elements of a system which are used only for "
"specific purposes. The downside to MLS is increased administrative overhead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:322
msgid ""
"The overhead is minimal when compared to the lasting effect of a framework "
"which provides the ability to pick and choose which policies are required "
"for a specific configuration and which keeps performance overhead down. The "
"reduction of support for unneeded policies can increase the overall "
"performance of the system as well as offer flexibility of choice. A good "
"implementation would consider the overall security requirements and "
"effectively implement the various security policy modules offered by the "
"framework."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:325
msgid ""
"A system utilizing MAC guarantees that a user will not be permitted to "
"change security attributes at will. All user utilities, programs, and "
"scripts must work within the constraints of the access rules provided by the "
"selected security policy modules and control of the MAC access rules is in "
"the hands of the system administrator."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:329
msgid ""
"It is the duty of the system administrator to carefully select the correct "
"security policy modules. For an environment that needs to limit access "
"control over the network, the man:mac_portacl[4], man:mac_ifoff[4], and man:"
"mac_biba[4] policy modules make good starting points. For an environment "
"where strict confidentiality of file system objects is required, consider "
"the man:mac_bsdextended[4] and man:mac_mls[4] policy modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:336
msgid ""
"Policy decisions could be made based on network configuration. If only "
"certain users should be permitted access to man:ssh[1], the man:"
"mac_portacl[4] policy module is a good choice. In the case of file systems, "
"access to objects might be considered confidential to some users, but not to "
"others. As an example, a large development team might be broken off into "
"smaller projects where developers in project A might not be permitted to "
"access objects written by developers in project B. Yet both projects might "
"need to access objects created by developers in project C. Using the "
"different security policy modules provided by the MAC framework, users could "
"be divided into these groups and then given access to the appropriate "
"objects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:340
msgid ""
"Each security policy module has a unique way of dealing with the overall "
"security of a system. Module selection should be based on a well thought "
"out security policy which may require revision and reimplementation. "
"Understanding the different security policy modules offered by the MAC "
"framework will help administrators choose the best policies for their "
"situations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:342
msgid ""
"The rest of this chapter covers the available modules, describes their use "
"and configuration, and in some cases, provides insight on applicable "
"situations."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:347
msgid ""
"Implementing MAC is much like implementing a firewall since care must be "
"taken to prevent being completely locked out of the system. The ability to "
"revert back to a previous configuration should be considered and the "
"implementation of MAC over a remote connection should be done with extreme "
"caution."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:350
#, no-wrap
msgid "Available MAC Policies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:356
msgid ""
"The default FreeBSD kernel includes `options MAC`. This means that every "
"module included with the MAC framework can be loaded with `kldload` as a run-"
"time kernel module. After testing the module, add the module name to [."
"filename]#/boot/loader.conf# so that it will load during boot. Each module "
"also provides a kernel option for those administrators who choose to compile "
"their own custom kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:359
msgid ""
"FreeBSD includes a group of policies that will cover most security "
"requirements. Each policy is summarized below. The last three policies "
"support integer settings in place of the three default labels."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:361
#, no-wrap
msgid "The MAC See Other UIDs Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:364
msgid "Module name: [.filename]#mac_seeotheruids.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:366
msgid "Kernel configuration line: `options MAC_SEEOTHERUIDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:368
msgid "Boot option: `mac_seeotheruids_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:371
msgid ""
"The man:mac_seeotheruids[4] module extends the `security.bsd.see_other_uids` "
"and `security.bsd.see_other_gids sysctl` tunables. This option does not "
"require any labels to be set before configuration and can operate "
"transparently with other modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:373
msgid ""
"After loading the module, the following `sysctl` tunables may be used to "
"control its features:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:375
msgid ""
"`security.mac.seeotheruids.enabled` enables the module and implements the "
"default settings which deny users the ability to view processes and sockets "
"owned by other users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:376
msgid ""
"`security.mac.seeotheruids.specificgid_enabled` allows specified groups to "
"be exempt from this policy. To exempt specific groups, use the `security.mac."
"seeotheruids.specificgid=_XXX_ sysctl` tunable, replacing _XXX_ with the "
"numeric group ID to be exempted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:377
msgid ""
"`security.mac.seeotheruids.primarygroup_enabled` is used to exempt specific "
"primary groups from this policy. When using this tunable, `security.mac."
"seeotheruids.specificgid_enabled` may not be set."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:379
#, no-wrap
msgid "The MAC BSD Extended Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:382
msgid "Module name: [.filename]#mac_bsdextended.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:384
msgid "Kernel configuration line: `options MAC_BSDEXTENDED`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:386
msgid "Boot option: `mac_bsdextended_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:392
msgid ""
"The man:mac_bsdextended[4] module enforces a file system firewall. It "
"provides an extension to the standard file system permissions model, "
"permitting an administrator to create a firewall-like ruleset to protect "
"files, utilities, and directories in the file system hierarchy. When access "
"to a file system object is attempted, the list of rules is iterated until "
"either a matching rule is located or the end is reached. This behavior may "
"be changed using `security.mac.bsdextended.firstmatch_enabled`. Similar to "
"other firewall modules in FreeBSD, a file containing the access control "
"rules can be created and read by the system at boot time using an man:rc."
"conf[5] variable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:395
msgid ""
"The rule list may be entered using man:ugidfw[8] which has a syntax similar "
"to man:ipfw[8]. More tools can be written by using the functions in the man:"
"libugidfw[3] library."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:397
msgid ""
"After the man:mac_bsdextended[4] module has been loaded, the following "
"command may be used to list the current rule configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:402
#, no-wrap
msgid ""
"# ugidfw list\n"
"0 slots, 0 rules\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:406
msgid ""
"By default, no rules are defined and everything is completely accessible. "
"To create a rule which blocks all access by users but leaves `root` "
"unaffected:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:410
#, no-wrap
msgid "# ugidfw add subject not uid root new object not uid root mode n\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:414
msgid ""
"While this rule is simple to implement, it is a very bad idea as it blocks "
"all users from issuing any commands. A more realistic example blocks "
"`user1` all access, including directory listings, to ``_user2_``'s home "
"directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:419
#, no-wrap
msgid ""
"# ugidfw set 2 subject uid user1 object uid user2 mode n\n"
"# ugidfw set 3 subject uid user1 object gid user2 mode n\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:423
msgid ""
"Instead of `user1`, `not uid _user2_` could be used in order to enforce the "
"same access restrictions for all users. However, the `root` user is "
"unaffected by these rules."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:427
msgid ""
"Extreme caution should be taken when working with this module as incorrect "
"use could block access to certain parts of the file system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:430
#, no-wrap
msgid "The MAC Interface Silencing Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:433
msgid "Module name: [.filename]#mac_ifoff.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:435
msgid "Kernel configuration line: `options MAC_IFOFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:437
msgid "Boot option: `mac_ifoff_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:440
msgid ""
"The man:mac_ifoff[4] module is used to disable network interfaces on the fly "
"and to keep network interfaces from being brought up during system boot. It "
"does not use labels and does not depend on any other MAC modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:442
msgid ""
"Most of this module's control is performed through these `sysctl` tunables:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:444
msgid ""
"`security.mac.ifoff.lo_enabled` enables or disables all traffic on the "
"loopback, man:lo[4], interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:445
msgid ""
"`security.mac.ifoff.bpfrecv_enabled` enables or disables all traffic on the "
"Berkeley Packet Filter interface, man:bpf[4]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:446
msgid ""
"`security.mac.ifoff.other_enabled` enables or disables traffic on all other "
"interfaces."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:449
msgid ""
"One of the most common uses of man:mac_ifoff[4] is network monitoring in an "
"environment where network traffic should not be permitted during the boot "
"sequence. Another use would be to write a script which uses an application "
"such as package:security/aide[] to automatically block network traffic if it "
"finds new or altered files in protected directories."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:451
#, no-wrap
msgid "The MAC Port Access Control List Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:454
msgid "Module name: [.filename]#mac_portacl.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:456
msgid "Kernel configuration line: `MAC_PORTACL`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:458
msgid "Boot option: `mac_portacl_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:460
msgid ""
"The man:mac_portacl[4] module is used to limit binding to local TCP and UDP "
"ports, making it possible to allow non-`root` users to bind to specified "
"privileged ports below 1024."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:463
msgid ""
"Once loaded, this module enables the MAC policy on all sockets. The "
"following tunables are available:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:465
msgid ""
"`security.mac.portacl.enabled` enables or disables the policy completely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:466
msgid ""
"`security.mac.portacl.port_high` sets the highest port number that man:"
"mac_portacl[4] protects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:467
msgid ""
"`security.mac.portacl.suser_exempt`, when set to a non-zero value, exempts "
"the `root` user from this policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:468
msgid ""
"`security.mac.portacl.rules` specifies the policy as a text string of the "
"form `rule[,rule,...]`, with as many rules as needed, and where each rule is "
"of the form `idtype:id:protocol:port`. The `idtype` is either `uid` or "
"`gid`. The `protocol` parameter can be `tcp` or `udp`. The `port` parameter "
"is the port number to allow the specified user or group to bind to. Only "
"numeric values can be used for the user ID, group ID, and port parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:471
msgid ""
"By default, ports below 1024 can only be used by privileged processes which "
"run as `root`. For man:mac_portacl[4] to allow non-privileged processes to "
"bind to ports below 1024, set the following tunables as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:477
#, no-wrap
msgid ""
"# sysctl security.mac.portacl.port_high=1023\n"
"# sysctl net.inet.ip.portrange.reservedlow=0\n"
"# sysctl net.inet.ip.portrange.reservedhigh=0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:480
msgid ""
"To prevent the `root` user from being affected by this policy, set `security."
"mac.portacl.suser_exempt` to a non-zero value."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:484
#, no-wrap
msgid "# sysctl security.mac.portacl.suser_exempt=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:487
msgid ""
"To allow the `www` user with UID 80 to bind to port 80 without ever needing "
"`root` privilege:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:491
#, no-wrap
msgid "# sysctl security.mac.portacl.rules=uid:80:tcp:80\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:494
msgid ""
"This next example permits the user with the UID of 1001 to bind to TCP ports "
"110 (POP3) and 995 (POP3s):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:498
#, no-wrap
msgid "# sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:501
#, no-wrap
msgid "The MAC Partition Policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:504
msgid "Module name: [.filename]#mac_partition.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:506
msgid "Kernel configuration line: `options MAC_PARTITION`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:508
msgid "Boot option: `mac_partition_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:512
msgid ""
"The man:mac_partition[4] policy drops processes into specific \"partitions\" "
"based on their MAC label. Most configuration for this policy is done using "
"man:setpmac[8]. One `sysctl` tunable is available for this policy:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:514
msgid ""
"`security.mac.partition.enabled` enables the enforcement of MAC process "
"partitions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:517
msgid ""
"When this policy is enabled, users will only be permitted to see their "
"processes, and any others within their partition, but will not be permitted "
"to work with utilities outside the scope of this partition. For instance, a "
"user in the `insecure` class will not be permitted to access `top` as well "
"as many other commands that must spawn a process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:520
msgid ""
"This example adds `top` to the label set on users in the `insecure` class. "
"All processes spawned by users in the `insecure` class will stay in the "
"`partition/13` label."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:524
#, no-wrap
msgid "# setpmac partition/13 top\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:527
msgid "This command displays the partition label and the process list:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:531
#, no-wrap
msgid "# ps Zax\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:534
msgid ""
"This command displays another user's process partition label and that user's "
"currently running processes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:538
#, no-wrap
msgid "# ps -ZU trhodes\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:543
msgid ""
"Users can see processes in ``root``'s label unless the man:"
"mac_seeotheruids[4] policy is loaded."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:546
#, no-wrap
msgid "The MAC Multi-Level Security Module"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:549
msgid "Module name: [.filename]#mac_mls.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:551
msgid "Kernel configuration line: `options MAC_MLS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:553
msgid "Boot option: `mac_mls_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:555
msgid ""
"The man:mac_mls[4] policy controls access between subjects and objects in "
"the system by enforcing a strict information flow policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:559
msgid ""
"In MLS environments, a \"clearance\" level is set in the label of each "
"subject or object, along with compartments. Since these clearance levels "
"can reach numbers greater than several thousand, it would be a daunting task "
"to thoroughly configure every subject or object. To ease this "
"administrative overhead, three labels are included in this policy: `mls/"
"low`, `mls/equal`, and `mls/high`, where:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:561
msgid ""
"Anything labeled with `mls/low` will have a low clearance level and not be "
"permitted to access information of a higher level. This label also prevents "
"objects of a higher clearance level from writing or passing information to a "
"lower level."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:562
msgid ""
"`mls/equal` should be placed on objects which should be exempt from the "
"policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:563
msgid ""
"`mls/high` is the highest level of clearance possible. Objects assigned this "
"label will hold dominance over all other objects in the system; however, "
"they will not permit the leaking of information to objects of a lower class."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:565
msgid "MLS provides:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:567
msgid ""
"A hierarchical security level with a set of non-hierarchical categories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:568
msgid ""
"Fixed rules of `no read up, no write down`. This means that a subject can "
"have read access to objects on its own level or below, but not above. "
"Similarly, a subject can have write access to objects on its own level or "
"above, but not beneath."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:569
msgid "Secrecy, or the prevention of inappropriate disclosure of data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:570
msgid ""
"A basis for the design of systems that concurrently handle data at multiple "
"sensitivity levels without leaking information between secret and "
"confidential."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:572
msgid "The following `sysctl` tunables are available:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:574
msgid "`security.mac.mls.enabled` is used to enable or disable the MLS policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:575
msgid ""
"`security.mac.mls.ptys_equal` labels all man:pty[4] devices as `mls/equal` "
"during creation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:576
msgid ""
"`security.mac.mls.revocation_enabled` revokes access to objects after their "
"label changes to a label of a lower grade."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:577
msgid ""
"`security.mac.mls.max_compartments` sets the maximum number of compartment "
"levels allowed on a system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:579
msgid ""
"To manipulate MLS labels, use man:setfmac[8]. To assign a label to an object:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:583
#, no-wrap
msgid "# setfmac mls/5 test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:586
msgid "To get the MLS label for the file [.filename]#test#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:590
#, no-wrap
msgid "# getfmac test\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:593
msgid ""
"Another approach is to create a master policy file in [.filename]#/etc/# "
"which specifies the MLS policy information and to feed that file to "
"`setfmac`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:597
msgid ""
"When using the MLS policy module, an administrator plans to control the flow "
"of sensitive information. The default `block read up block write down` sets "
"everything to a low state. Everything is accessible and an administrator "
"slowly augments the confidentiality of the information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:602
msgid ""
"Beyond the three basic label options, an administrator may group users and "
"groups as required to block the information flow between them. It might be "
"easier to look at the information in clearance levels using descriptive "
"words, such as classifications of `Confidential`, `Secret`, and `Top "
"Secret`. Some administrators instead create different groups based on "
"project levels. Regardless of the classification method, a well thought out "
"plan must exist before implementing a restrictive policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:604
msgid ""
"Some example situations for the MLS policy module include an e-commerce web "
"server, a file server holding critical company information, and financial "
"institution environments."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:606
#, no-wrap
msgid "The MAC Biba Module"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:609
msgid "Module name: [.filename]#mac_biba.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:611
msgid "Kernel configuration line: `options MAC_BIBA`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:613
msgid "Boot option: `mac_biba_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:617
msgid ""
"The man:mac_biba[4] module loads the MAC Biba policy. This policy is "
"similar to the MLS policy with the exception that the rules for information "
"flow are slightly reversed. This is to prevent the downward flow of "
"sensitive information whereas the MLS policy prevents the upward flow of "
"sensitive information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:621
msgid ""
"In Biba environments, an \"integrity\" label is set on each subject or "
"object. These labels are made up of hierarchical grades and non-"
"hierarchical components. As a grade ascends, so does its integrity."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:623
msgid "Supported labels are `biba/low`, `biba/equal`, and `biba/high`, where:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:625
msgid ""
"`biba/low` is considered the lowest integrity an object or subject may have. "
"Setting this on objects or subjects blocks their write access to objects or "
"subjects marked as `biba/high`, but will not prevent read access."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:626
msgid ""
"`biba/equal` should only be placed on objects considered to be exempt from "
"the policy."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:627
msgid ""
"`biba/high` permits writing to objects set at a lower label, but does not "
"permit reading that object. It is recommended that this label be placed on "
"objects that affect the integrity of the entire system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:629
msgid "Biba provides:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:631
msgid ""
"Hierarchical integrity levels with a set of non-hierarchical integrity "
"categories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:632
msgid ""
"Fixed rules are `no write up, no read down`, the opposite of MLS. A subject "
"can have write access to objects on its own level or below, but not above. "
"Similarly, a subject can have read access to objects on its own level or "
"above, but not below."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:633
msgid "Integrity by preventing inappropriate modification of data."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:634
msgid "Integrity levels instead of MLS sensitivity levels."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:636
msgid "The following tunables can be used to manipulate the Biba policy:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:638
msgid ""
"`security.mac.biba.enabled` is used to enable or disable enforcement of the "
"Biba policy on the target machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:639
msgid ""
"`security.mac.biba.ptys_equal` is used to disable the Biba policy on man:"
"pty[4] devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:640
msgid ""
"`security.mac.biba.revocation_enabled` forces the revocation of access to "
"objects if the label is changed to dominate the subject."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:642
msgid ""
"To access the Biba policy setting on system objects, use `setfmac` and "
"`getfmac`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:648
#, no-wrap
msgid ""
"# setfmac biba/low test\n"
"# getfmac test\n"
"test: biba/low\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:654
msgid ""
"Integrity, which is different from sensitivity, is used to guarantee that "
"information is not manipulated by untrusted parties. This includes "
"information passed between subjects and objects. It ensures that users will "
"only be able to modify or access information they have been given explicit "
"access to. The man:mac_biba[4] security policy module permits an "
"administrator to configure which files and programs a user may see and "
"invoke while assuring that the programs and files are trusted by the system "
"for that user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:660
msgid ""
"During the initial planning phase, an administrator must be prepared to "
"partition users into grades, levels, and areas. The system will default to "
"a high label once this policy module is enabled, and it is up to the "
"administrator to configure the different grades and levels for users. "
"Instead of using clearance levels, a good planning method could include "
"topics. For instance, only allow developers modification access to the "
"source code repository, source code compiler, and other development "
"utilities. Other users would be grouped into other categories such as "
"testers, designers, or end users and would only be permitted read access."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:665
msgid ""
"A lower integrity subject is unable to write to a higher integrity subject "
"and a higher integrity subject cannot list or read a lower integrity "
"object. Setting a label at the lowest possible grade could make it "
"inaccessible to subjects. Some prospective environments for this security "
"policy module would include a constrained web server, a development and test "
"machine, and a source code repository. A less useful implementation would "
"be a personal workstation, a machine used as a router, or a network firewall."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:667
#, no-wrap
msgid "The MAC Low-watermark Module"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:670
msgid "Module name: [.filename]#mac_lomac.ko#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:672
msgid "Kernel configuration line: `options MAC_LOMAC`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:674
msgid "Boot option: `mac_lomac_load=\"YES\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:676
msgid ""
"Unlike the MAC Biba policy, the man:mac_lomac[4] policy permits access to "
"lower integrity objects only after decreasing the integrity level to not "
"disrupt any integrity rules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:680
msgid ""
"The Low-watermark integrity policy works almost identically to Biba, with "
"the exception of using floating labels to support subject demotion via an "
"auxiliary grade compartment. This secondary compartment takes the form "
"`[auxgrade]`. When assigning a policy with an auxiliary grade, use the "
"syntax `lomac/10[2]`, where `2` is the auxiliary grade."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:683
msgid ""
"This policy relies on the ubiquitous labeling of all system objects with "
"integrity labels, permitting subjects to read from low integrity objects and "
"then downgrading the label on the subject to prevent future writes to high "
"integrity objects using `[auxgrade]`. The policy may provide greater "
"compatibility and require less initial configuration than Biba."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:685
msgid ""
"Like the Biba and MLS policies, `setfmac` and `setpmac` are used to place "
"labels on system objects:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:690
#, no-wrap
msgid ""
"# setfmac /usr/home/trhodes lomac/high[low]\n"
"# getfmac /usr/home/trhodes lomac/high[low]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:693
msgid ""
"The auxiliary grade `low` is a feature provided only by the MACLOMAC policy."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:695
#, no-wrap
msgid "User Lock Down"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:699
msgid ""
"This example considers a relatively small storage system with fewer than "
"fifty users. Users will have login capabilities and are permitted to store "
"data and access resources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:701
msgid ""
"For this scenario, the man:mac_bsdextended[4] and man:mac_seeotheruids[4] "
"policy modules could co-exist and block access to system objects while "
"hiding user processes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:703
msgid "Begin by adding the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:707
#, no-wrap
msgid "mac_seeotheruids_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:710
msgid ""
"The man:mac_bsdextended[4] security policy module may be activated by adding "
"this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:714
#, no-wrap
msgid "ugidfw_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:719
msgid ""
"Default rules stored in [.filename]#/etc/rc.bsdextended# will be loaded at "
"system initialization. However, the default entries may need modification. "
"Since this machine is expected only to service users, everything may be left "
"commented out except the last two lines in order to force the loading of "
"user owned system objects by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:724
msgid ""
"Add the required users to this machine and reboot. For testing purposes, "
"try logging in as a different user across two consoles. Run `ps aux` to see "
"if processes of other users are visible. Verify that running man:ls[1] on "
"another user's home directory fails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:726
msgid ""
"Do not try to test with the `root` user unless the specific ``sysctl``s have "
"been modified to block super user access."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:731
msgid ""
"When a new user is added, their man:mac_bsdextended[4] rule will not be in "
"the ruleset list. To update the ruleset quickly, unload the security policy "
"module and reload it again using man:kldunload[8] and man:kldload[8]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:734
#, no-wrap
msgid "Nagios in a MAC Jail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:738
msgid ""
"This section demonstrates the steps that are needed to implement the Nagios "
"network monitoring system in a MAC environment. This is meant as an example "
"which still requires the administrator to test that the implemented policy "
"meets the security requirements of the network before using in a production "
"environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:741
msgid ""
"This example requires `multilabel` to be set on each file system. It also "
"assumes that package:net-mgmt/nagios-plugins[], package:net-mgmt/nagios[], "
"and package:www/apache22[] are all installed, configured, and working "
"correctly before attempting the integration into the MAC framework."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:742
#, no-wrap
msgid "Create an Insecure User Class"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:745
msgid ""
"Begin the procedure by adding the following user class to [.filename]#/etc/"
"login.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:771
#, no-wrap
msgid ""
"insecure:\\\n"
":copyright=/etc/COPYRIGHT:\\\n"
":welcome=/etc/motd:\\\n"
":setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\\\n"
":path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin\n"
":manpath=/usr/share/man /usr/local/man:\\\n"
":nologin=/usr/sbin/nologin:\\\n"
":cputime=1h30m:\\\n"
":datasize=8M:\\\n"
":vmemoryuse=100M:\\\n"
":stacksize=2M:\\\n"
":memorylocked=4M:\\\n"
":memoryuse=8M:\\\n"
":filesize=8M:\\\n"
":coredumpsize=8M:\\\n"
":openfiles=24:\\\n"
":maxproc=32:\\\n"
":priority=0:\\\n"
":requirehome:\\\n"
":passwordtime=91d:\\\n"
":umask=022:\\\n"
":ignoretime@:\\\n"
":label=biba/10(10-10):\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:774
msgid "Then, add the following line to the default user class section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:778
#, no-wrap
msgid ":label=biba/high:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:781
msgid "Save the edits and issue the following command to rebuild the database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:785
#, no-wrap
msgid "# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:787
#, no-wrap
msgid "Configure Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:790
msgid "Set the `root` user to the default class using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:794
#, no-wrap
msgid "# pw usermod root -L default\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:799
msgid ""
"All user accounts that are not `root` will now require a login class. The "
"login class is required, otherwise users will be refused access to common "
"commands. The following `sh` script should do the trick:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:804
#, no-wrap
msgid ""
"# for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \\\n"
"\t/etc/passwd`; do pw usermod $x -L default; done;\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:807
msgid "Next, drop the `nagios` and `www` accounts into the insecure class:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:812
#, no-wrap
msgid ""
"# pw usermod nagios -L insecure\n"
"# pw usermod www -L insecure\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:814
#, no-wrap
msgid "Create the Contexts File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:817
msgid ""
"A contexts file should now be created as [.filename]#/etc/policy.contexts#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:821
#, no-wrap
msgid "# This is the default BIBA policy for this system.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:824
#, no-wrap
msgid ""
"# System:\n"
"/var/run(/.*)?\t\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:826
#, no-wrap
msgid "/dev/(/.*)?\t\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:829
#, no-wrap
msgid ""
"/var\t\t\t\tbiba/equal\n"
"/var/spool(/.*)?\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:831
#, no-wrap
msgid "/var/log(/.*)?\t\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:834
#, no-wrap
msgid ""
"/tmp(/.*)?\t\t\tbiba/equal\n"
"/var/tmp(/.*)?\t\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:837
#, no-wrap
msgid ""
"/var/spool/mqueue\t\tbiba/equal\n"
"/var/spool/clientmqueue\t\tbiba/equal\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:840
#, no-wrap
msgid ""
"# For Nagios:\n"
"/usr/local/etc/nagios(/.*)?\tbiba/10\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:842
#, no-wrap
msgid "/var/spool/nagios(/.*)?\t\tbiba/10\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:845
#, no-wrap
msgid ""
"# For apache\n"
"/usr/local/etc/apache(/.*)?\tbiba/10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:850
msgid ""
"This policy enforces security by setting restrictions on the flow of "
"information. In this specific configuration, users, including `root`, "
"should never be allowed to access Nagios. Configuration files and processes "
"that are a part of Nagios will be completely self contained or jailed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:853
msgid ""
"This file will be read after running `setfsmac` on every file system. This "
"example sets the policy on the root file system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:857
#, no-wrap
msgid "# setfsmac -ef /etc/policy.contexts /\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:860
msgid ""
"Next, add these edits to the main section of [.filename]#/etc/mac.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:867
#, no-wrap
msgid ""
"default_labels file ?biba\n"
"default_labels ifnet ?biba\n"
"default_labels process ?biba\n"
"default_labels socket ?biba\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:869
#, no-wrap
msgid "Loader Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:872
msgid ""
"To finish the configuration, add the following lines to [.filename]#/boot/"
"loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:878
#, no-wrap
msgid ""
"mac_biba_load=\"YES\"\n"
"mac_seeotheruids_load=\"YES\"\n"
"security.mac.biba.trust_all_interfaces=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:882
msgid ""
"And the following line to the network card configuration stored in [."
"filename]#/etc/rc.conf#. If the primary network configuration is done via "
"DHCP, this may need to be configured manually after every system boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:886
#, no-wrap
msgid "maclabel biba/equal\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mac/_index.adoc:888
#, no-wrap
msgid "Testing the Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:894
msgid ""
"First, ensure that the web server and Nagios will not be started on system "
"initialization and reboot. Ensure that `root` cannot access any of the "
"files in the Nagios configuration directory. If `root` can list the "
"contents of [.filename]#/var/spool/nagios#, something is wrong. Instead, a "
"\"permission denied\" error should be returned."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:896
msgid "If all seems well, Nagios, Apache, and Sendmail can now be started:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:902
#, no-wrap
msgid ""
"# cd /etc/mail && make stop && \\\n"
"setpmac biba/equal make start && setpmac biba/10\\(10-10\\) apachectl start && \\\n"
"setpmac biba/10\\(10-10\\) /usr/local/etc/rc.d/nagios.sh forcestart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:907
msgid ""
"Double check to ensure that everything is working properly. If not, check "
"the log files for error messages. If needed, use man:sysctl[8] to disable "
"the man:mac_biba[4] security policy module and try starting everything again "
"as usual."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:912
msgid ""
"The `root` user can still change the security enforcement and edit its "
"configuration files. The following command will permit the degradation of "
"the security policy to a lower grade for a newly spawned shell:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mac/_index.adoc:916
#, no-wrap
msgid "# setpmac biba/10 csh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:921
msgid ""
"To block this from happening, force the user into a range using man:login."
"conf[5]. If man:setpmac[8] attempts to run a command outside of the "
"compartment's range, an error will be returned and the command will not be "
"executed. In this case, set root to `biba/high(high-high)`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mac/_index.adoc:924
#, no-wrap
msgid "Troubleshooting the MAC Framework"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:927
msgid ""
"This section discusses common configuration errors and how to resolve them."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mac/_index.adoc:928
#, no-wrap
msgid "The `multilabel` flag does not stay enabled on the root ([.filename]#/#) partition"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:930
msgid "The following steps may resolve this transient error:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:934
msgid ""
"Edit [.filename]#/etc/fstab# and set the root partition to `ro` for read-"
"only."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:935
msgid "Reboot into single user mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:936
msgid "Run `tunefs -l enable` on [.filename]#/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:937
msgid "Reboot the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:938
msgid ""
"Run `mount -urw`[.filename]#/# and change the `ro` back to `rw` in [."
"filename]#/etc/fstab# and reboot the system again."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:939
msgid ""
"Double-check the output from `mount` to ensure that `multilabel` has been "
"properly set on the root file system."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mac/_index.adoc:941
#, no-wrap
msgid "After establishing a secure environment with MAC, Xorg no longer starts"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:944
msgid ""
"This could be caused by the MAC `partition` policy or by a mislabeling in "
"one of the MAC labeling policies. To debug, try the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:948
msgid ""
"Check the error message. If the user is in the `insecure` class, the "
"`partition` policy may be the culprit. Try setting the user's class back to "
"the `default` class and rebuild the database with `cap_mkdb`. If this does "
"not alleviate the problem, go to step two."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:949
msgid ""
"Double-check that the label policies are set correctly for the user, Xorg, "
"and the [.filename]#/dev# entries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mac/_index.adoc:950
msgid ""
"If neither of these resolve the problem, send the error message and a "
"description of the environment to the {freebsd-questions}."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mac/_index.adoc:952
#, no-wrap
msgid "The `_secure_path: unable to stat .login_conf` error appears"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:957
msgid ""
"This error can appear when a user attempts to switch from the `root` user to "
"another user in the system. This message usually occurs when the user has a "
"higher label setting than that of the user they are attempting to become. "
"For instance, if `joe` has a default label of `biba/low` and `root` has a "
"label of `biba/high`, `root` cannot view ``joe``'s home directory. This "
"will happen whether or not `root` has used `su` to become `joe` as the Biba "
"integrity model will not permit `root` to view objects set at a lower "
"integrity level."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mac/_index.adoc:958
#, no-wrap
msgid "The system no longer recognizes `root`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:960
msgid "When this occurs, `whoami` returns `0` and `su` returns `who are you?`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:964
msgid ""
"This can happen if a labeling policy has been disabled by man:sysctl[8] or "
"the policy module was unloaded. If the policy is disabled, the login "
"capabilities database needs to be reconfigured. Double check [.filename]#/"
"etc/login.conf# to ensure that all `label` options have been removed and "
"rebuild the database with `cap_mkdb`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mac/_index.adoc:968
msgid ""
"This may also happen if a policy restricts access to [.filename]#master."
"passwd#. This is usually caused by an administrator altering the file under "
"a label which conflicts with the general policy being used by the system. "
"In these cases, the user information would be read by the system and access "
"would be blocked as the file has inherited the new label. Disable the "
"policy using man:sysctl[8] and everything should return to normal."
msgstr ""
diff --git a/documentation/content/en/books/handbook/mail/_index.po b/documentation/content/en/books/handbook/mail/_index.po
index 4cef04131f..06091bd605 100644
--- a/documentation/content/en/books/handbook/mail/_index.po
+++ b/documentation/content/en/books/handbook/mail/_index.po
@@ -1,2322 +1,2322 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/mail/_index.adoc:1
#, no-wrap
msgid "This chapter provides a basic introduction to running a mail server on FreeBSD, as well as an introduction to sending and receiving email using FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/mail/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/mail/_index.adoc:1
#, no-wrap
-msgid "Chapter 29. Electronic Mail"
+msgid "Chapter 30. Electronic Mail"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/mail/_index.adoc:15
#, no-wrap
msgid "Electronic Mail"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:58
msgid ""
"\"Electronic Mail\", better known as email, is one of the most widely used "
"forms of communication today. This chapter provides a basic introduction to "
"running a mail server on FreeBSD, as well as an introduction to sending and "
"receiving email using FreeBSD For more complete coverage of this subject, "
"refer to the books listed in crossref:bibliography[bibliography,"
"Bibliography]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:60
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:62
msgid ""
"Which software components are involved in sending and receiving electronic "
"mail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:63
msgid "Where basic Sendmail configuration files are located in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:64
msgid "The difference between remote and local mailboxes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:65
msgid "How to block spammers from illegally using a mail server as a relay."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:66
msgid ""
"How to install and configure an alternate Mail Transfer Agent, replacing "
"Sendmail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:67
msgid "How to troubleshoot common mail server problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:68
msgid "How to set up the system to send mail only."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:69
msgid "How to use mail with a dialup connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:70
msgid "How to configure SMTP authentication for added security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:71
msgid ""
"How to install and use a Mail User Agent, such as mutt, to send and receive "
"email."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:72
msgid "How to download mail from a remote POP or IMAP server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:73
msgid "How to automatically apply filters and rules to incoming email."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:75
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:77
msgid ""
"Properly set up a network connection (crossref:advanced-networking[advanced-"
"networking,Advanced Networking])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:78
msgid ""
"Properly set up the DNS information for a mail host (crossref:network-"
"servers[network-servers,Network Servers])."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:79
msgid ""
"Know how to install additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:81
#, no-wrap
msgid "Mail Components"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:84
msgid ""
"There are five major parts involved in an email exchange: the Mail User "
"Agent (MUA), the Mail Transfer Agent (MTA), a mail host, a remote or local "
"mailbox, and DNS. This section provides an overview of these components."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:85
#, no-wrap
msgid "Mail User Agent (MUA)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:91
msgid ""
"The Mail User Agent (MUA) is an application which is used to compose, send, "
"and receive emails. This application can be a command line program, such as "
"the built-in `mail` utility or a third-party application from the Ports "
"Collection, such as mutt, alpine, or elm. Dozens of graphical programs are "
"also available in the Ports Collection, including Claws Mail, Evolution, and "
"Thunderbird. Some organizations provide a web mail program which can be "
"accessed through a web browser. More information about installing and using "
"a MUA on FreeBSD can be found in <<mail-agents>>."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:92
#, no-wrap
msgid "Mail Transfer Agent (MTA)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:97
msgid ""
"The Mail Transfer Agent (MTA) is responsible for receiving incoming mail and "
"delivering outgoing mail. FreeBSD ships with Sendmail as the default MTA, "
"but it also supports numerous other mail server daemons, including Exim, "
"Postfix, and qmail. Sendmail configuration is described in <<sendmail>>. "
"If another MTA is installed using the Ports Collection, refer to its post-"
"installation message for FreeBSD-specific configuration details and the "
"application's website for more general configuration instructions."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:98
#, no-wrap
msgid "Mail Host and Mailboxes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:103
msgid ""
"The mail host is a server that is responsible for delivering and receiving "
"mail for a host or a network. The mail host collects all mail sent to the "
"domain and stores it either in the default [.filename]#mbox# or the "
"alternative Maildir format, depending on the configuration. Once mail has "
"been stored, it may either be read locally using a MUA or remotely accessed "
"and collected using protocols such as POP or IMAP. If mail is read locally, "
"a POP or IMAP server does not need to be installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:109
msgid ""
"To access mailboxes remotely, a POP or IMAP server is required as these "
"protocols allow users to connect to their mailboxes from remote locations. "
"IMAP offers several advantages over POP. These include the ability to store "
"a copy of messages on a remote server after they are downloaded and "
"concurrent updates. IMAP can be useful over low-speed links as it allows "
"users to fetch the structure of messages without downloading them. It can "
"also perform tasks such as searching on the server in order to minimize data "
"transfer between clients and servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:112
msgid ""
"Several POP and IMAP servers are available in the Ports Collection. These "
"include package:mail/qpopper[], package:mail/imap-uw[], package:mail/courier-"
"imap[], and package:mail/dovecot2[]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mail/_index.adoc:117
msgid ""
"It should be noted that both POP and IMAP transmit information, including "
"username and password credentials, in clear-text. To secure the "
"transmission of information across these protocols, consider tunneling "
"sessions over man:ssh[1] (crossref:security[security-ssh-tunneling,\"SSH "
"Tunneling\"]) or using SSL (crossref:security[openssl,\"OpenSSL\"])."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:119
#, no-wrap
msgid "Domain Name System (DNS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:123
msgid ""
"The Domain Name System (DNS) and its daemon `named` play a large role in the "
"delivery of email. In order to deliver mail from one site to another, the "
"MTA will look up the remote site in DNS to determine which host will receive "
"mail for the destination. This process also occurs when mail is sent from a "
"remote host to the MTA."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:126
msgid ""
"In addition to mapping hostnames to IP addresses, DNS is responsible for "
"storing information specific to mail delivery, known as Mail eXchanger MX "
"records. The MX record specifies which hosts will receive mail for a "
"particular domain."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:129
msgid ""
"To view the MX records for a domain, specify the type of record. Refer to "
"man:host[1], for more details about this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:134
#, no-wrap
msgid ""
"% host -t mx FreeBSD.org\n"
"FreeBSD.org mail is handled by 10 mx1.FreeBSD.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:137
msgid ""
"Refer to crossref:network-servers[network-dns,\"Domain Name System (DNS)\"] "
"for more information about DNS and its configuration."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:139
#, no-wrap
msgid "Sendmail Configuration Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:143
msgid ""
"Sendmail is the default MTA installed with FreeBSD. It accepts mail from "
"MUAs and delivers it to the appropriate mail host, as defined by its "
"configuration. Sendmail can also accept network connections and deliver "
"mail to local mailboxes or to another program."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:146
msgid ""
"The configuration files for Sendmail are located in [.filename]#/etc/mail#. "
"This section describes these files in more detail."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:147
#, no-wrap
msgid "[.filename]#/etc/mail/access#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:155
msgid ""
"This access database file defines which hosts or IP addresses have access to "
"the local mail server and what kind of access they have. Hosts listed as "
"`OK`, which is the default option, are allowed to send mail to this host as "
"long as the mail's final destination is the local machine. Hosts listed as "
"`REJECT` are rejected for all mail connections. Hosts listed as `RELAY` are "
"allowed to send mail for any destination using this mail server. Hosts "
"listed as `ERROR` will have their mail returned with the specified mail "
"error. If a host is listed as `SKIP`, Sendmail will abort the current "
"search for this entry without accepting or rejecting the mail. Hosts listed "
"as `QUARANTINE` will have their messages held and will receive the specified "
"text as the reason for the hold."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:157
msgid ""
"Examples of using these options for both IPv4 and IPv6 addresses can be "
"found in the FreeBSD sample configuration, [.filename]#/etc/mail/access."
"sample#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:176
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"# Mail relay access control list. Default is to reject mail unless the\n"
"# destination is local, or listed in /etc/mail/local-host-names\n"
"#\n"
"## Examples (commented out for safety)\n"
"#From:cyberspammer.com ERROR:\"550 We don't accept mail from spammers\"\n"
"#From:okay.cyberspammer.com OK\n"
"#Connect:sendmail.org RELAY\n"
"#To:sendmail.org RELAY\n"
"#Connect:128.32 RELAY\n"
"#Connect:128.32.2 SKIP\n"
"#Connect:IPv6:1:2:3:4:5:6:7 RELAY\n"
"#Connect:suspicious.example.com QUARANTINE:Mail from suspicious host\n"
"#Connect:[127.0.0.3] OK\n"
"#Connect:[IPv6:1:2:3:4:5:6:7:8] OK\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:181
msgid ""
"To configure the access database, use the format shown in the sample to make "
"entries in [.filename]#/etc/mail/access#, but do not put a comment symbol "
-"(`#`) in front of the entries. Create an entry for each host or network "
+"(`+#+`) in front of the entries. Create an entry for each host or network "
"whose access should be configured. Mail senders that match the left side of "
"the table are affected by the action on the right side of the table."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:183
msgid ""
"Whenever this file is updated, update its database and restart Sendmail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:188
#, no-wrap
msgid ""
"# makemap hash /etc/mail/access < /etc/mail/access\n"
"# service sendmail restart\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:190
#, no-wrap
msgid "[.filename]#/etc/mail/aliases#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:193
msgid ""
"This database file contains a list of virtual mailboxes that are expanded to "
"users, files, programs, or other aliases. Here are a few entries to "
"illustrate the file format:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:200
#, no-wrap
msgid ""
"root: localuser\n"
"ftp-bugs: joe,eric,paul\n"
"bit.bucket: /dev/null\n"
"procmail: \"|/usr/local/bin/procmail\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:211
msgid ""
"The mailbox name on the left side of the colon is expanded to the target(s) "
"on the right. The first entry expands the `root` mailbox to the `localuser` "
"mailbox, which is then looked up in the [.filename]#/etc/mail/aliases# "
"database. If no match is found, the message is delivered to `localuser`. "
"The second entry shows a mail list. Mail to `ftp-bugs` is expanded to the "
"three local mailboxes `joe`, `eric`, and `paul`. A remote mailbox could be "
"specified as _user@example.com_. The third entry shows how to write mail to "
"a file, in this case [.filename]#/dev/null#. The last entry demonstrates "
"how to send mail to a program, [.filename]#/usr/local/bin/procmail#, through "
"a UNIX(R) pipe. Refer to man:aliases[5] for more information about the "
"format of this file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:213
msgid ""
"Whenever this file is updated, run `newaliases` to update and initialize the "
"aliases database."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:214
#, no-wrap
msgid "[.filename]#/etc/mail/sendmail.cf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:219
msgid ""
"This is the master configuration file for Sendmail. It controls the overall "
"behavior of Sendmail, including everything from rewriting email addresses to "
"printing rejection messages to remote mail servers. Accordingly, this "
"configuration file is quite complex. Fortunately, this file rarely needs to "
"be changed for standard mail servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:222
msgid ""
"The master Sendmail configuration file can be built from man:m4[1] macros "
"that define the features and behavior of Sendmail. Refer to [.filename]#/"
"usr/src/contrib/sendmail/cf/README# for some of the details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:224
msgid ""
"Whenever changes to this file are made, Sendmail needs to be restarted for "
"the changes to take effect."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:225
#, no-wrap
msgid "[.filename]#/etc/mail/virtusertable#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:229
msgid ""
"This database file maps mail addresses for virtual domains and users to real "
"mailboxes. These mailboxes can be local, remote, aliases defined in [."
"filename]#/etc/mail/aliases#, or files. This allows multiple virtual "
"domains to be hosted on one machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:232
msgid ""
"FreeBSD provides a sample configuration file in [.filename]#/etc/mail/"
"virtusertable.sample# to further demonstrate its format. The following "
"example demonstrates how to create custom entries using that format:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:238
#, no-wrap
msgid ""
"root@example.com root\n"
"postmaster@example.com postmaster@noc.example.net\n"
"@example.com joe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:246
msgid ""
"This file is processed in a first match order. When an email address "
"matches the address on the left, it is mapped to the local mailbox listed on "
"the right. The format of the first entry in this example maps a specific "
"email address to a local mailbox, whereas the format of the second entry "
"maps a specific email address to a remote mailbox. Finally, any email "
"address from `example.com` which has not matched any of the previous entries "
"will match the last mapping and be sent to the local mailbox `joe`. When "
"creating custom entries, use this format and add them to [.filename]#/etc/"
"mail/virtusertable#. Whenever this file is edited, update its database and "
"restart Sendmail:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:251
#, no-wrap
msgid ""
"# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable\n"
"# service sendmail restart\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mail/_index.adoc:253
#, no-wrap
msgid "[.filename]#/etc/mail/relay-domains#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:257
msgid ""
"In a default FreeBSD installation, Sendmail is configured to only send mail "
"from the host it is running on. For example, if a POP server is available, "
"users will be able to check mail from remote locations but they will not be "
"able to send outgoing emails from outside locations. Typically, a few "
"moments after the attempt, an email will be sent from `MAILER-DAEMON` with a "
"`5.7 Relaying Denied` message."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:260
msgid ""
"The most straightforward solution is to add the ISP's FQDN to [.filename]#/"
"etc/mail/relay-domains#. If multiple addresses are needed, add them one per "
"line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:267
#, no-wrap
msgid ""
"your.isp.example.com\n"
"other.isp.example.net\n"
"users-isp.example.org\n"
"www.example.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:270
msgid ""
"After creating or editing this file, restart Sendmail with `service sendmail "
"restart`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:273
msgid ""
"Now any mail sent through the system by any host in this list, provided the "
"user has an account on the system, will succeed. This allows users to send "
"mail from the system remotely without opening the system up to relaying SPAM "
"from the Internet."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:275
#, no-wrap
msgid "Changing the Mail Transfer Agent"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:280
msgid ""
"FreeBSD comes with Sendmail already installed as the MTA which is in charge "
"of outgoing and incoming mail. However, the system administrator can change "
"the system's MTA. A wide choice of alternative MTAs is available from the "
"`mail` category of the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:283
msgid ""
"Once a new MTA is installed, configure and test the new software before "
"replacing Sendmail. Refer to the documentation of the new MTA for "
"information on how to configure the software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:285
msgid ""
"Once the new MTA is working, use the instructions in this section to disable "
"Sendmail and configure FreeBSD to use the replacement MTA."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:287
#, no-wrap
msgid "Disable Sendmail"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mail/_index.adoc:296
msgid ""
"If Sendmail's outgoing mail service is disabled, it is important that it is "
"replaced with an alternative mail delivery system. Otherwise, system "
"functions such as man:periodic[8] will be unable to deliver their results by "
"email. Many parts of the system expect a functional MTA. If applications "
"continue to use Sendmail's binaries to try to send email after they are "
"disabled, mail could go into an inactive Sendmail queue and never be "
"delivered."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:299
msgid ""
"In order to completely disable Sendmail, add or edit the following lines in "
"[.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:306
#, no-wrap
msgid ""
"sendmail_enable=\"NO\"\n"
"sendmail_submit_enable=\"NO\"\n"
"sendmail_outbound_enable=\"NO\"\n"
"sendmail_msp_queue_enable=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:309
msgid ""
"To only disable Sendmail's incoming mail service, use only this entry in [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:313
#, no-wrap
msgid "sendmail_enable=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:316
msgid ""
"More information on Sendmail's startup options is available in man:rc."
"sendmail[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:317
#, no-wrap
msgid "Replace the Default MTA"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:322
msgid ""
"When a new MTA is installed using the Ports Collection, its startup script "
"is also installed and startup instructions are mentioned in its package "
"message. Before starting the new MTA, stop the running Sendmail processes. "
"This example stops all of these services, then starts the Postfix service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:327
#, no-wrap
msgid ""
"# service sendmail stop\n"
"# service postfix start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:331
msgid ""
"To start the replacement MTA at system boot, add its configuration line to [."
"filename]#/etc/rc.conf#. This entry enables the Postfix MTA:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:335
#, no-wrap
msgid "postfix_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:340
msgid ""
"Some extra configuration is needed as Sendmail is so ubiquitous that some "
"software assumes it is already installed and configured. Check [.filename]#/"
"etc/periodic.conf# and make sure that these values are set to `NO`. If this "
"file does not exist, create it with these entries:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:347
#, no-wrap
msgid ""
"daily_clean_hoststat_enable=\"NO\"\n"
"daily_status_mail_rejects_enable=\"NO\"\n"
"daily_status_include_submit_mailq=\"NO\"\n"
"daily_submit_queuerun=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:353
msgid ""
"Some alternative MTAs provide their own compatible implementations of the "
"Sendmail command-line interface in order to facilitate using them as drop-in "
"replacements for Sendmail. However, some MUAs may try to execute standard "
"Sendmail binaries instead of the new MTA's binaries. FreeBSD uses [."
"filename]#/etc/mail/mailer.conf# to map the expected Sendmail binaries to "
"the location of the new binaries. More information about this mapping can "
"be found in man:mailwrapper[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:355
msgid "The default [.filename]#/etc/mail/mailer.conf# looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:368
#, no-wrap
msgid ""
"# $FreeBSD$\n"
"#\n"
"# Execute the \"real\" sendmail program, named /usr/libexec/sendmail/sendmail\n"
"#\n"
"sendmail /usr/libexec/sendmail/sendmail\n"
"send-mail /usr/libexec/sendmail/sendmail\n"
"mailq /usr/libexec/sendmail/sendmail\n"
"newaliases /usr/libexec/sendmail/sendmail\n"
"hoststat /usr/libexec/sendmail/sendmail\n"
"purgestat /usr/libexec/sendmail/sendmail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:372
msgid ""
"When any of the commands listed on the left are run, the system actually "
"executes the associated command shown on the right. This system makes it "
"easy to change what binaries are executed when these default binaries are "
"invoked."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:375
msgid ""
"Some MTAs, when installed using the Ports Collection, will prompt to update "
"this file for the new binaries. For example, Postfix will update the file "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:385
#, no-wrap
msgid ""
"#\n"
"# Execute the Postfix sendmail program, named /usr/local/sbin/sendmail\n"
"#\n"
"sendmail /usr/local/sbin/sendmail\n"
"send-mail /usr/local/sbin/sendmail\n"
"mailq /usr/local/sbin/sendmail\n"
"newaliases /usr/local/sbin/sendmail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:389
msgid ""
"If the installation of the MTA does not automatically update [.filename]#/"
"etc/mail/mailer.conf#, edit this file in a text editor so that it points to "
"the new binaries. This example points to the binaries installed by package:"
"mail/ssmtp[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:398
#, no-wrap
msgid ""
"sendmail /usr/local/sbin/ssmtp\n"
"send-mail /usr/local/sbin/ssmtp\n"
"mailq /usr/local/sbin/ssmtp\n"
"newaliases /usr/local/sbin/ssmtp\n"
"hoststat /usr/bin/true\n"
"purgestat /usr/bin/true\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:402
msgid ""
"Once everything is configured, it is recommended to reboot the system. "
"Rebooting provides the opportunity to ensure that the system is correctly "
"configured to start the new MTA automatically on boot."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:404
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:406
#, no-wrap
msgid "Why do I have to use the FQDN for hosts on my site?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:410
msgid ""
"The host may actually be in a different domain. For example, in order for a "
"host in `foo.bar.edu` to reach a host called `mumble` in the `bar.edu` "
"domain, refer to it by the Fully-Qualified Domain Name FQDN, `mumble.bar."
"edu`, instead of just `mumble`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:413
msgid ""
"This is because the version of BIND which ships with FreeBSD no longer "
"provides default abbreviations for non-FQDNs other than the local domain. "
"An unqualified host such as `mumble` must either be found as `mumble.foo.bar."
"edu`, or it will be searched for in the root domain."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:416
msgid ""
"In older versions of BIND, the search continued across `mumble.bar.edu`, and "
"`mumble.edu`. RFC 1535 details why this is considered bad practice or even "
"a security hole."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:418
msgid "As a good workaround, place the line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:422
#, no-wrap
msgid "search foo.bar.edu bar.edu\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:425
msgid "instead of the previous:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:429
#, no-wrap
msgid "domain foo.bar.edu\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:433
msgid ""
"into [.filename]#/etc/resolv.conf#. However, make sure that the search "
"order does not go beyond the \"boundary between local and public "
"administration\", as RFC 1535 calls it."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:434
#, no-wrap
msgid "How can I run a mail server on a dial-up PPP host?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:437
msgid ""
"Connect to a FreeBSD mail gateway on the LAN. The PPP connection is non-"
"dedicated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:440
msgid ""
"One way to do this is to get a full-time Internet server to provide "
"secondary MX services for the domain. In this example, the domain is "
"`example.com` and the ISP has configured `example.net` to provide secondary "
"MX services to the domain:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:445
#, no-wrap
msgid ""
"example.com. MX 10 example.com.\n"
" MX 20 example.net.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:449
msgid ""
"Only one host should be specified as the final recipient. For Sendmail, add "
"`Cw example.com` in [.filename]#/etc/mail/sendmail.cf# on `example.com`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:454
msgid ""
"When the sending MTA attempts to deliver mail, it will try to connect to the "
"system, `example.com`, over the PPP link. This will time out if the "
"destination is offline. The MTA will automatically deliver it to the "
"secondary MX site at the Internet Service Provider (ISP), `example.net`. "
"The secondary MX site will periodically try to connect to the primary MX "
"host, `example.com`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:456
msgid "Use something like this as a login script:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:463
#, no-wrap
msgid ""
"#!/bin/sh\n"
"# Put me in /usr/local/bin/pppmyisp\n"
"( sleep 60 ; /usr/sbin/sendmail -q ) &\n"
"/usr/sbin/ppp -direct pppmyisp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:467
msgid ""
"When creating a separate login script for users, instead use `sendmail -"
"qRexample.com` in the script above. This will force all mail in the queue "
"for `example.com` to be processed immediately."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:469
msgid ""
"A further refinement of the situation can be seen from this example from the "
"{freebsd-isp}:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:481
#, no-wrap
msgid ""
"> we provide the secondary MX for a customer. The customer connects to\n"
"> our services several times a day automatically to get the mails to\n"
"> his primary MX (We do not call his site when a mail for his domains\n"
"> arrived). Our sendmail sends the mailqueue every 30 minutes. At the\n"
"> moment he has to stay 30 minutes online to be sure that all mail is\n"
"> gone to the primary MX.\n"
">\n"
"> Is there a command that would initiate sendmail to send all the mails\n"
"> now? The user has not root-privileges on our machine of course.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:484
#, no-wrap
msgid ""
"In the privacy flags section of sendmail.cf, there is a\n"
"definition Opgoaway,restrictqrun\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:488
#, no-wrap
msgid ""
"Remove restrictqrun to allow non-root users to start the queue processing.\n"
"You might also like to rearrange the MXs. We are the 1st MX for our\n"
"customers like this, and we have defined:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:492
#, no-wrap
msgid ""
"# If we are the best MX for a host, try directly instead of generating\n"
"# local config error.\n"
"OwTrue\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:499
#, no-wrap
msgid ""
"That way a remote site will deliver straight to you, without trying\n"
"the customer connection. You then send to your customer. Only works for\n"
"hosts, so you need to get your customer to name their mail\n"
"machine customer.com as well as\n"
"hostname.customer.com in the DNS. Just put an A record in\n"
"the DNS for customer.com.\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:502
#, no-wrap
msgid "Advanced Topics"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:505
msgid ""
"This section covers more involved topics such as mail configuration and "
"setting up mail for an entire domain."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:507
#, no-wrap
msgid "Basic Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:511
msgid ""
"Out of the box, one can send email to external hosts as long as [.filename]#/"
"etc/resolv.conf# is configured or the network has access to a configured DNS "
"server. To have email delivered to the MTA on the FreeBSD host, do one of "
"the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:513
msgid "Run a DNS server for the domain."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:514
msgid "Get mail delivered directly to the FQDN for the machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:518
msgid ""
"In order to have mail delivered directly to a host, it must have a permanent "
"static IP address, not a dynamic IP address. If the system is behind a "
"firewall, it must be configured to allow SMTP traffic. To receive mail "
"directly at a host, one of these two must be configured:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:520
msgid ""
"Make sure that the lowest-numbered MX record in DNS points to the host's "
"static IP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:521
msgid "Make sure there is no MX entry in the DNS for the host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:523
msgid ""
"Either of the above will allow mail to be received directly at the host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:525
msgid "Try this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:532
#, no-wrap
msgid ""
"# hostname\n"
"example.FreeBSD.org\n"
"# host example.FreeBSD.org\n"
"example.FreeBSD.org has address 204.216.27.XX\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:535
msgid ""
"In this example, mail sent directly to mailto:yourlogin@example.FreeBSD."
"org[yourlogin@example.FreeBSD.org] should work without problems, assuming "
"Sendmail is running correctly on `example.FreeBSD.org`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:537
msgid "For this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:543
#, no-wrap
msgid ""
"# host example.FreeBSD.org\n"
"example.FreeBSD.org has address 204.216.27.XX\n"
"example.FreeBSD.org mail is handled (pri=10) by nevdull.FreeBSD.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:546
msgid ""
"All mail sent to `example.FreeBSD.org` will be collected on `hub` under the "
"same username instead of being sent directly to your host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:550
msgid ""
"The above information is handled by the DNS server. The DNS record that "
"carries mail routing information is the MX entry. If no MX record exists, "
"mail will be delivered directly to the host by way of its IP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:552
msgid "The MX entry for `freefall.FreeBSD.org` at one time looked like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:559
#, no-wrap
msgid ""
"freefall\t\tMX\t30\tmail.crl.net\n"
"freefall\t\tMX\t40\tagora.rdrop.com\n"
"freefall\t\tMX\t10\tfreefall.FreeBSD.org\n"
"freefall\t\tMX\t20\twho.cdrom.com\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:564
msgid ""
"`freefall` had many MX entries. The lowest MX number is the host that "
"receives mail directly, if available. If it is not accessible for some "
"reason, the next lower-numbered host will accept messages temporarily, and "
"pass it along when a lower-numbered host becomes available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:567
msgid ""
"Alternate MX sites should have separate Internet connections in order to be "
"most useful. Your ISP can provide this service."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:569
#, no-wrap
msgid "Mail for a Domain"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:572
msgid ""
"When configuring an MTA for a network, any mail sent to hosts in its domain "
"should be diverted to the MTA so that users can receive their mail on the "
"master mail server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:575
msgid ""
"To make life easiest, a user account with the same _username_ should exist "
"on both the MTA and the system with the MUA. Use man:adduser[8] to create "
"the user accounts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:578
msgid ""
"The MTA must be the designated mail exchanger for each workstation on the "
"network. This is done in the DNS configuration with an MX record:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:583
#, no-wrap
msgid ""
"example.FreeBSD.org\tA\t204.216.27.XX\t\t; Workstation\n"
"\t\t\tMX\t10 nevdull.FreeBSD.org\t; Mailhost\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:587
msgid ""
"This will redirect mail for the workstation to the MTA no matter where the A "
"record points. The mail is sent to the MX host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:590
msgid ""
"This must be configured on a DNS server. If the network does not run its "
"own DNS server, talk to the ISP or DNS provider."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:594
msgid ""
"The following is an example of virtual email hosting. Consider a customer "
"with the domain `customer1.org`, where all the mail for `customer1.org` "
"should be sent to `mail.myhost.com`. The DNS entry should look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:598
#, no-wrap
msgid "customer1.org\t\tMX\t10\tmail.myhost.com\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:602
msgid ""
"An `A` record is _not_ needed for `customer1.org` in order to only handle "
"email for that domain. However, running `ping` against `customer1.org` will "
"not work unless an `A` record exists for it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:605
msgid ""
"Tell the MTA which domains and/or hostnames it should accept mail for. "
"Either of the following will work for Sendmail:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:607
msgid ""
"Add the hosts to [.filename]#/etc/mail/local-host-names# when using the "
"`FEATURE(use_cw_file)`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:608
msgid "Add a `Cwyour.host.com` line to [.filename]#/etc/sendmail.cf#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:610
#, no-wrap
msgid "Setting Up to Send Only"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:614
msgid ""
"There are many instances where one may only want to send mail through a "
"relay. Some examples are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:616
msgid ""
"The computer is a desktop machine that needs to use programs such as man:"
"mail[1], using the ISP's mail relay."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:617
msgid ""
"The computer is a server that does not handle mail locally, but needs to "
"pass off all mail to a relay for processing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:620
msgid ""
"While any MTA is capable of filling this particular niche, it can be "
"difficult to properly configure a full-featured MTA just to handle "
"offloading mail. Programs such as Sendmail and Postfix are overkill for "
"this use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:622
msgid ""
"Additionally, a typical Internet access service agreement may forbid one "
"from running a \"mail server\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:624
msgid ""
"The easiest way to fulfill those needs is to install the package:mail/"
"ssmtp[] port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:629
#, no-wrap
msgid ""
"# cd /usr/ports/mail/ssmtp\n"
"# make install replace clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:632
msgid ""
"Once installed, package:mail/ssmtp[] can be configured with [.filename]#/usr/"
"local/etc/ssmtp/ssmtp.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:639
#, no-wrap
msgid ""
"root=yourrealemail@example.com\n"
"mailhub=mail.example.com\n"
"rewriteDomain=example.com\n"
"hostname=_HOSTNAME_\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:644
msgid ""
"Use the real email address for `root`. Enter the ISP's outgoing mail relay "
"in place of `mail.example.com`. Some ISPs call this the \"outgoing mail "
"server\" or \"SMTP server\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:647
msgid ""
"Make sure to disable Sendmail, including the outgoing mail service. See "
"<<mail-disable-sendmail>> for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:649
msgid ""
"package:mail/ssmtp[] has some other options available. Refer to the examples "
"in [.filename]#/usr/local/etc/ssmtp# or the manual page of ssmtp for more "
"information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:651
msgid ""
"Setting up ssmtp in this manner allows any software on the computer that "
"needs to send mail to function properly, while not violating the ISP's usage "
"policy or allowing the computer to be hijacked for spamming."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:653
#, no-wrap
msgid "Using Mail with a Dialup Connection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:657
msgid ""
"When using a static IP address, one should not need to adjust the default "
"configuration. Set the hostname to the assigned Internet name and Sendmail "
"will do the rest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:660
msgid ""
"When using a dynamically assigned IP address and a dialup PPP connection to "
"the Internet, one usually has a mailbox on the ISP's mail server. In this "
"example, the ISP's domain is `example.net`, the user name is `user`, the "
"hostname is `bsd.home`, and the ISP has allowed `relay.example.net` as a "
"mail relay."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:664
msgid ""
"In order to retrieve mail from the ISP's mailbox, install a retrieval agent "
"from the Ports Collection. package:mail/fetchmail[] is a good choice as it "
"supports many different protocols. Usually, the ISP will provide POP. When "
"using user PPP, email can be automatically fetched when an Internet "
"connection is established with the following entry in [.filename]#/etc/ppp/"
"ppp.linkup#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:669
#, no-wrap
msgid ""
"MYADDR:\n"
"!bg su user -c fetchmail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:673
msgid ""
"When using Sendmail to deliver mail to non-local accounts, configure "
"Sendmail to process the mail queue as soon as the Internet connection is "
"established. To do this, add this line after the above `fetchmail` entry in "
"[.filename]#/etc/ppp/ppp.linkup#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:677
#, no-wrap
msgid " !bg su user -c \"sendmail -q\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:681
msgid ""
"In this example, there is an account for `user` on `bsd.home`. In the home "
"directory of `user` on `bsd.home`, create a [.filename]#.fetchmailrc# which "
"contains this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:685
#, no-wrap
msgid "poll example.net protocol pop3 fetchall pass MySecret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:688
msgid ""
"This file should not be readable by anyone except `user` as it contains the "
"password `MySecret`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:690
msgid ""
"In order to send mail with the correct `from:` header, configure Sendmail to "
"use mailto:user@example.net[user@example.net] rather than mailto:user@bsd."
"home[user@bsd.home] and to send all mail via `relay.example.net`, allowing "
"quicker mail transmission."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:692
msgid "The following [.filename]#.mc# should suffice:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:711
#, no-wrap
msgid ""
"VERSIONID(`bsd.home.mc version 1.0')\n"
"OSTYPE(bsd4.4)dnl\n"
"FEATURE(nouucp)dnl\n"
"MAILER(local)dnl\n"
"MAILER(smtp)dnl\n"
"Cwlocalhost\n"
"Cwbsd.home\n"
"MASQUERADE_AS(`example.net')dnl\n"
"FEATURE(allmasquerade)dnl\n"
"FEATURE(masquerade_envelope)dnl\n"
"FEATURE(nocanonify)dnl\n"
"FEATURE(nodns)dnl\n"
"define(`SMART_HOST', `relay.example.net')\n"
"Dmbsd.home\n"
"define(`confDOMAIN_NAME',`bsd.home')dnl\n"
"define(`confDELIVERY_MODE',`deferred')dnl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:715
msgid ""
"Refer to the previous section for details of how to convert this file into "
"the [.filename]#sendmail.cf# format. Do not forget to restart Sendmail "
"after updating [.filename]#sendmail.cf#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:717
#, no-wrap
msgid "SMTP Authentication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:721
msgid ""
"Configuring SMTP authentication on the MTA provides a number of benefits. "
"SMTP authentication adds a layer of security to Sendmail, and provides "
"mobile users who switch hosts the ability to use the same MTA without the "
"need to reconfigure their mail client's settings each time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:724
msgid ""
"Install package:security/cyrus-sasl2[] from the Ports Collection. This port "
"supports a number of compile-time options. For the SMTP authentication "
"method demonstrated in this example, make sure that `LOGIN` is not disabled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:725
msgid ""
"After installing package:security/cyrus-sasl2[], edit [.filename]#/usr/local/"
"lib/sasl2/Sendmail.conf#, or create it if it does not exist, and add the "
"following line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:729
#, no-wrap
msgid "pwcheck_method: saslauthd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:732
msgid ""
"Next, install package:security/cyrus-sasl2-saslauthd[] and add the following "
"line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:736
#, no-wrap
msgid "saslauthd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:739
msgid "Finally, start the saslauthd daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:743
#, no-wrap
msgid "# service saslauthd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:747
msgid ""
"This daemon serves as a broker for Sendmail to authenticate against the "
"FreeBSD man:passwd[5] database. This saves the trouble of creating a new "
"set of usernames and passwords for each user that needs to use SMTP "
"authentication, and keeps the login and mail password the same."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:748
msgid "Next, edit [.filename]#/etc/make.conf# and add the following lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:753
#, no-wrap
msgid ""
"SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL\n"
"SENDMAIL_LDADD=/usr/local/lib/libsasl2.so\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:757
msgid ""
"These lines provide Sendmail the proper configuration options for linking to "
"package:cyrus-sasl2[] at compile time. Make sure that package:cyrus-sasl2[] "
"has been installed before recompiling Sendmail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:758
msgid "Recompile Sendmail by executing the following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:767
#, no-wrap
msgid ""
"# cd /usr/src/lib/libsmutil\n"
"# make cleandir && make obj && make\n"
"# cd /usr/src/lib/libsm\n"
"# make cleandir && make obj && make\n"
"# cd /usr/src/usr.sbin/sendmail\n"
"# make cleandir && make obj && make && make install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:770
msgid ""
"This compile should not have any problems if [.filename]#/usr/src# has not "
"changed extensively and the shared libraries it needs are available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:771
msgid ""
"After Sendmail has been compiled and reinstalled, edit [.filename]#/etc/mail/"
"freebsd.mc# or the local [.filename]#.mc#. Many administrators choose to use "
"the output from man:hostname[1] as the name of [.filename]#.mc# for "
"uniqueness. Add these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:777
#, no-wrap
msgid ""
"dnl set SASL options\n"
"TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl\n"
"define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:781
msgid ""
"These options configure the different methods available to Sendmail for "
"authenticating users. To use a method other than pwcheck, refer to the "
"Sendmail documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:782
msgid ""
"Finally, run man:make[1] while in [.filename]#/etc/mail#. That will run the "
"new [.filename]#.mc# and create a [.filename]#.cf# named either [."
"filename]#freebsd.cf# or the name used for the local [.filename]#.mc#. Then, "
"run `make install restart`, which will copy the file to [.filename]#sendmail."
"cf#, and properly restart Sendmail. For more information about this process, "
"refer to [.filename]#/etc/mail/Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:785
msgid ""
"To test the configuration, use a MUA to send a test message. For further "
"investigation, set the `LogLevel` of Sendmail to `13` and watch [.filename]#/"
"var/log/maillog# for any errors."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:787
msgid ""
"For more information, refer to http://www.sendmail.org/~ca/email/auth."
"html[SMTP authentication]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:789
#, no-wrap
msgid "Mail User Agents"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:795
msgid ""
"A MUA is an application that is used to send and receive email. As email "
"\"evolves\" and becomes more complex, MUAs are becoming increasingly "
"powerful and provide users increased functionality and flexibility. The "
"`mail` category of the FreeBSD Ports Collection contains numerous MUAs. "
"These include graphical email clients such as Evolution or Balsa and console "
"based clients such as mutt or alpine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:797
#, no-wrap
msgid "`mail`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:801
msgid ""
"man:mail[1] is the default MUA installed with FreeBSD. It is a console based "
"MUA that offers the basic functionality required to send and receive text-"
"based email. It provides limited attachment support and can only access "
"local mailboxes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:803
msgid ""
"Although `mail` does not natively support interaction with POP or IMAP "
"servers, these mailboxes may be downloaded to a local [.filename]#mbox# "
"using an application such as fetchmail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:805
msgid "In order to send and receive email, run `mail`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:809
#, no-wrap
msgid "% mail\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:815
msgid ""
"The contents of the user's mailbox in [.filename]#/var/mail# are "
"automatically read by `mail`. Should the mailbox be empty, the utility "
"exits with a message indicating that no mail could be found. If mail "
"exists, the application interface starts, and a list of messages will be "
"displayed. Messages are automatically numbered, as can be seen in the "
"following example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:823
#, no-wrap
msgid ""
"Mail version 8.1 6/6/93. Type ? for help.\n"
"\"/var/mail/marcs\": 3 messages 3 new\n"
">N 1 root@localhost Mon Mar 8 14:05 14/510 \"test\"\n"
" N 2 root@localhost Mon Mar 8 14:05 14/509 \"user account\"\n"
" N 3 root@localhost Mon Mar 8 14:05 14/509 \"sample\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:827
msgid ""
"Messages can now be read by typing kbd:[t] followed by the message number. "
"This example reads the first email:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:839
#, no-wrap
msgid ""
"& t 1\n"
"Message 1:\n"
"From root@localhost Mon Mar 8 14:05:52 2004\n"
"X-Original-To: marcs@localhost\n"
"Delivered-To: marcs@localhost\n"
"To: marcs@localhost\n"
"Subject: test\n"
"Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)\n"
"From: root@localhost (Charlie Root)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:841
#, no-wrap
msgid "This is a test message, please reply if you receive it.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:845
msgid ""
"As seen in this example, the message will be displayed with full headers. "
"To display the list of messages again, press kbd:[h]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:851
msgid ""
"If the email requires a reply, press either kbd:[R] or kbd:[r] `mail` keys. "
"kbd:[R] instructs `mail` to reply only to the sender of the email, while kbd:"
"[r] replies to all other recipients of the message. These commands can be "
"suffixed with the mail number of the message to reply to. After typing the "
"response, the end of the message should be marked by a single kbd:[.] on its "
"own line. An example can be seen below:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:857
#, no-wrap
msgid ""
"& R 1\n"
"To: root@localhost\n"
"Subject: Re: test\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:861
#, no-wrap
msgid ""
"Thank you, I did get your email.\n"
".\n"
"EOT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:867
msgid ""
"In order to send a new email, press kbd:[m], followed by the recipient email "
"address. Multiple recipients may be specified by separating each address "
"with the kbd:[,] delimiter. The subject of the message may then be entered, "
"followed by the message contents. The end of the message should be "
"specified by putting a single kbd:[.] on its own line."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:872
#, no-wrap
msgid ""
"& mail root@localhost\n"
"Subject: I mastered mail\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:876
#, no-wrap
msgid ""
"Now I can send and receive email using mail ... :)\n"
".\n"
"EOT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:880
msgid ""
"While using `mail`, press kbd:[?] to display help at any time. Refer to man:"
"mail[1] for more help on how to use `mail`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mail/_index.adoc:886
msgid ""
"man:mail[1] was not designed to handle attachments and thus deals with them "
"poorly. Newer MUAs handle attachments in a more intelligent way. Users who "
"prefer to use `mail` may find the package:converters/mpack[] port to be of "
"considerable use."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:889
#, no-wrap
msgid "mutt"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:892
msgid "mutt is a powerful MUA, with many features, including:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:894
msgid "The ability to thread messages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:895
msgid "PGP support for digital signing and encryption of email."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:896
msgid "MIME support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:897
msgid "Maildir support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:898
msgid "Highly customizable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:900
msgid ""
"Refer to http://www.mutt.org[http://www.mutt.org] for more information on "
"mutt."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:903
msgid ""
"mutt may be installed using the package:mail/mutt[] port. After the port "
"has been installed, mutt can be started by issuing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:907
#, no-wrap
msgid "% mutt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:912
msgid ""
"mutt will automatically read and display the contents of the user mailbox in "
"[.filename]#/var/mail#. If no mails are found, mutt will wait for commands "
"from the user. The example below shows mutt displaying a list of messages:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:913
#, no-wrap
msgid "mutt1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:917
msgid ""
"To read an email, select it using the cursor keys and press kbd:[Enter]. An "
"example of mutt displaying email can be seen below:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:918
#, no-wrap
msgid "mutt2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:923
msgid ""
"Similar to man:mail[1], mutt can be used to reply only to the sender of the "
"message as well as to all recipients. To reply only to the sender of the "
"email, press kbd:[r]. To send a group reply to the original sender as well "
"as all the message recipients, press kbd:[g]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mail/_index.adoc:929
msgid ""
"By default, mutt uses the man:vi[1] editor for creating and replying to "
"emails. Each user can customize this by creating or editing the [."
"filename]#.muttrc# in their home directory and setting the `editor` variable "
"or by setting the `EDITOR` environment variable. Refer to http://www.mutt."
"org/[http://www.mutt.org/] for more information about configuring mutt."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:937
msgid ""
"To compose a new mail message, press kbd:[m]. After a valid subject has "
"been given, mutt will start man:vi[1] so the email can be written. Once the "
"contents of the email are complete, save and quit from `vi`. mutt will "
"resume, displaying a summary screen of the mail that is to be delivered. In "
"order to send the mail, press kbd:[y]. An example of the summary screen can "
"be seen below:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:938
#, no-wrap
msgid "mutt3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:942
msgid ""
"mutt contains extensive help which can be accessed from most of the menus by "
"pressing kbd:[?]. The top line also displays the keyboard shortcuts where "
"appropriate."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mail/_index.adoc:944
#, no-wrap
msgid "alpine"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:947
msgid ""
"alpine is aimed at a beginner user, but also includes some advanced features."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mail/_index.adoc:953
msgid ""
"alpine has had several remote vulnerabilities discovered in the past, which "
"allowed remote attackers to execute arbitrary code as users on the local "
"system, by the action of sending a specially-prepared email. While _known_ "
"problems have been fixed, alpine code is written in an insecure style and "
"the FreeBSD Security Officer believes there are likely to be other "
"undiscovered vulnerabilities. Users install alpine at their own risk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:957
msgid ""
"The current version of alpine may be installed using the package:mail/"
"alpine[] port. Once the port has installed, alpine can be started by "
"issuing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:961
#, no-wrap
msgid "% alpine\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:967
msgid ""
"The first time alpine runs, it displays a greeting page with a brief "
"introduction, as well as a request from the alpine development team to send "
"an anonymous email message allowing them to judge how many users are using "
"their client. To send this anonymous message, press kbd:[Enter]. "
"Alternatively, press kbd:[E] to exit the greeting without sending an "
"anonymous message. An example of the greeting page is shown below:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:968
#, no-wrap
msgid "pine1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:973
msgid ""
"The main menu is then presented, which can be navigated using the cursor "
"keys. This main menu provides shortcuts for the composing new mails, "
"browsing mail directories, and administering address book entries. Below "
"the main menu, relevant keyboard shortcuts to perform functions specific to "
"the task at hand are shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:976
msgid ""
"The default directory opened by alpine is [.filename]#inbox#. To view the "
"message index, press kbd:[I], or select the [.guimenuitem]#MESSAGE INDEX# "
"option shown below:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:977
#, no-wrap
msgid "pine2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:981
msgid ""
"The message index shows messages in the current directory and can be "
"navigated by using the cursor keys. Highlighted messages can be read by "
"pressing kbd:[Enter]."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:982
#, no-wrap
msgid "pine3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:987
msgid ""
"In the screenshot below, a sample message is displayed by alpine. "
"Contextual keyboard shortcuts are displayed at the bottom of the screen. An "
"example of one of a shortcut is kbd:[r], which tells the MUA to reply to the "
"current message being displayed."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:988
#, no-wrap
msgid "pine4.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:994
msgid ""
"Replying to an email in alpine is done using the pico editor, which is "
"installed by default with alpine. pico makes it easy to navigate the "
"message and is easier for novice users to use than man:vi[1] or man:"
"mail[1]. Once the reply is complete, the message can be sent by pressing "
"kbd:[Ctrl+X]. alpine will ask for confirmation before sending the message."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/mail/_index.adoc:995
#, no-wrap
msgid "pine5.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:999
msgid ""
"alpine can be customized using the [.guimenuitem]#SETUP# option from the "
"main menu. Consult http://www.washington.edu/alpine/[http://www.washington."
"edu/alpine/] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:1001
#, no-wrap
msgid "Using fetchmail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1006
msgid ""
"fetchmail is a full-featured IMAP and POP client. It allows users to "
"automatically download mail from remote IMAP and POP servers and save it "
"into local mailboxes where it can be accessed more easily. fetchmail can be "
"installed using the package:mail/fetchmail[] port, and offers various "
"features, including:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1008
msgid "Support for the POP3, APOP, KPOP, IMAP, ETRN and ODMR protocols."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1009
msgid ""
"Ability to forward mail using SMTP, which allows filtering, forwarding, and "
"aliasing to function normally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1010
msgid "May be run in daemon mode to check periodically for new messages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1011
msgid ""
"Can retrieve multiple mailboxes and forward them, based on configuration, to "
"different local users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1016
msgid ""
"This section explains some of the basic features of fetchmail. This utility "
"requires a [.filename]#.fetchmailrc# configuration in the user's home "
"directory in order to run correctly. This file includes server information "
"as well as login credentials. Due to the sensitive nature of the contents "
"of this file, it is advisable to make it readable only by the user, with the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1020
#, no-wrap
msgid "% chmod 600 .fetchmailrc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1025
msgid ""
"The following [.filename]#.fetchmailrc# serves as an example for downloading "
"a single user mailbox using POP. It tells fetchmail to connect to `example."
"com` using a username of `joesoap` and a password of `XXX`. This example "
"assumes that the user `joesoap` exists on the local system."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1029
#, no-wrap
msgid "poll example.com protocol pop3 username \"joesoap\" password \"XXX\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1032
msgid ""
"The next example connects to multiple POP and IMAP servers and redirects to "
"different local usernames where applicable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1040
#, no-wrap
msgid ""
"poll example.com proto pop3:\n"
"user \"joesoap\", with password \"XXX\", is \"jsoap\" here;\n"
"user \"andrea\", with password \"XXXX\";\n"
"poll example2.net proto imap:\n"
"user \"john\", with password \"XXXXX\", is \"myth\" here;\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1044
msgid ""
"fetchmail can be run in daemon mode by running it with `-d`, followed by the "
"interval (in seconds) that fetchmail should poll servers listed in [."
"filename]#.fetchmailrc#. The following example configures fetchmail to poll "
"every 600 seconds:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1048
#, no-wrap
msgid "% fetchmail -d 600\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1051
msgid ""
"More information on fetchmail can be found at http://www.fetchmail.info/"
"[http://www.fetchmail.info/]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mail/_index.adoc:1053
#, no-wrap
msgid "Using procmail"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1061
msgid ""
"procmail is a powerful application used to filter incoming mail. It allows "
"users to define \"rules\" which can be matched to incoming mails to perform "
"specific functions or to reroute mail to alternative mailboxes or email "
"addresses. procmail can be installed using the package:mail/procmail[] "
"port. Once installed, it can be directly integrated into most MTAs. "
"Consult the MTA documentation for more information. Alternatively, procmail "
"can be integrated by adding the following line to a [.filename]#.forward# in "
"the home directory of the user:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1065
#, no-wrap
msgid "\"|exec /usr/local/bin/procmail || exit 75\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1069
msgid ""
"The following section displays some basic procmail rules, as well as brief "
"descriptions of what they do. Rules must be inserted into a [.filename]#."
"procmailrc#, which must reside in the user's home directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1071
msgid "The majority of these rules can be found in man:procmailex[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1073
msgid ""
"To forward all mail from mailto:user@example.com[user@example.com] to an "
"external address of mailto:goodmail@example2.com[goodmail@example2.com]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1079
#, no-wrap
msgid ""
":0\n"
"* ^From.*user@example.com\n"
"! goodmail@example2.com\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1082
msgid ""
"To forward all mails shorter than 1000 bytes to an external address of "
"mailto:goodmail@example2.com[goodmail@example2.com]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1088
#, no-wrap
msgid ""
":0\n"
"* < 1000\n"
"! goodmail@example2.com\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1091
msgid ""
"To send all mail sent to mailto:alternate@example.com[alternate@example.com] "
"to a mailbox called [.filename]#alternate#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1097
#, no-wrap
msgid ""
":0\n"
"* ^TOalternate@example.com\n"
"alternate\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1100
msgid "To send all mail with a subject of \"Spam\" to [.filename]#/dev/null#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1106
#, no-wrap
msgid ""
":0\n"
"^Subject:.*Spam\n"
"/dev/null\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mail/_index.adoc:1109
msgid ""
"A useful recipe that parses incoming `FreeBSD.org` mailing lists and places "
"each list in its own mailbox:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mail/_index.adoc:1120
#, no-wrap
msgid ""
":0\n"
"* ^Sender:.owner-freebsd-\\/[^@]+@FreeBSD.ORG\n"
"{\n"
"\tLISTNAME=${MATCH}\n"
"\t:0\n"
"\t* LISTNAME??^\\/[^@]+\n"
"\tFreeBSD-${MATCH}\n"
"}\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/mirrors/_index.po b/documentation/content/en/books/handbook/mirrors/_index.po
index ccc71c4eab..a9b17b1bee 100644
--- a/documentation/content/en/books/handbook/mirrors/_index.po
+++ b/documentation/content/en/books/handbook/mirrors/_index.po
@@ -1,1656 +1,1655 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/mirrors/_index.adoc:1
#, no-wrap
msgid "How to get FreeBSD: CD and DVD sets, FTP sites and how to install and use Git"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/mirrors/_index.adoc:1
#, no-wrap
msgid "Part V. Appendices"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/mirrors/_index.adoc:1
#, no-wrap
msgid "Appendix A. Obtaining FreeBSD"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/mirrors/_index.adoc:15
#, no-wrap
msgid "Obtaining FreeBSD"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mirrors/_index.adoc:53
#, no-wrap
msgid "Mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:57
msgid ""
"The official mirrors of the FreeBSD project are made up of many machines "
"operated by the project cluster administrators and behind GeoDNS to direct "
"users to the closest available mirror. Current locations are Australia, "
-"Brazil, Japan (two sites), Malaysia, Netherlands, South Africa, Taiwan, "
-"United Kingdom, United States of America (California, New Jersey, and "
-"Washington)."
+"Brazil, Germany, Japan (two sites), Malaysia, South Africa, Taiwan, United "
+"Kingdom, United States of America (California, New Jersey, and Washington)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:59
msgid "Official mirrors service:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:62
#, no-wrap
msgid "Service Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:62
#: documentation/content/en/books/handbook/mirrors/_index.adoc:95
#, no-wrap
msgid "Protocols"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:64
#, no-wrap
msgid "More information"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:65
#, no-wrap
msgid "**download.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:66
#, no-wrap
msgid "link:https://download.FreeBSD.org/[https] link:ftp://download.FreeBSD.org/pub/FreeBSD/[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:68
#, no-wrap
msgid "Same content as `ftp.FreeBSD.org`, `ftp` is a legacy name; `download.FreeBSD.org` is recommended."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:69
#, no-wrap
msgid "**git.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:70
#, no-wrap
msgid "git over `https` and `ssh`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:72
#, no-wrap
msgid "More details on link:https://docs.freebsd.org/en/books/handbook/mirrors/#git[using git] section."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:73
#, no-wrap
msgid "**pkg.FreeBSD.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:74
#, no-wrap
msgid "man:pkg[8] over `http` and `https`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:76
#, no-wrap
msgid "Official FreeBSD package repositories used by the man:pkg[8] program."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:77
#, no-wrap
msgid "**vuxml.FreeBSD.org** / **www.VuXML.org**"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:78
#, no-wrap
msgid "link:https://www.vuxml.org/[https]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:79
#, no-wrap
msgid "FreeBSD Project VuXML web page. `pkg audit` fetches the list of vulnerabilities from this service."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:82
msgid "All official mirrors support IPv4 and IPv6."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:84
msgid ""
"The FreeBSD website (https://www.FreeBSD.org and https://docs.FreeBSD.org) "
"are not hosted in the GeoDNS Infrastructure; there are ongoing studies of "
"its implementation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:86
msgid ""
"http://ftp-archive.FreeBSD.org is not in the GeoDNS Infrastructure, hosted "
"in only one location (US)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:88
msgid ""
"The project is looking for new locations; those willing to sponsor, please "
"reach out to the Cluster Administrators team for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:90
msgid "Mirror list maintained by the community and other companies:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:93
#, no-wrap
msgid "Country"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:93
#, no-wrap
msgid "Hostname"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:96
#, no-wrap
msgid "Australia icon:envelope[link=mailto:{mirrors-australia-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:97
#, no-wrap
msgid "ftp.au.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:99
#, no-wrap
msgid "link:http://ftp.au.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.au.FreeBSD.org/pub/FreeBSD[http_v6] link:rsync://ftp.au.FreeBSD.org[rsync] link:rsync://ftp.au.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:101
#, no-wrap
msgid "ftp3.au.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:103
#, no-wrap
msgid "link:http://ftp3.au.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp3.au.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp3.au.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:104
#, no-wrap
msgid "Austria icon:envelope[link=mailto:{mirrors-austria-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:105
#, no-wrap
msgid "ftp.at.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:107
#, no-wrap
msgid "link:http://ftp.at.FreeBSD.org/pub/FreeBSD/[http] link:http://ftp.at.FreeBSD.org/pub/FreeBSD/[http_v6] link:ftp://ftp.at.FreeBSD.org/pub/FreeBSD/[ftp] link:ftp://ftp.at.FreeBSD.org/pub/FreeBSD/[ftp_v6] link:rsync://ftp.at.FreeBSD.org/pub/FreeBSD/[rsync] link:rsync://ftp.at.FreeBSD.org/pub/FreeBSD/[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:108
#, no-wrap
msgid "Brazil icon:envelope[link=mailto:{mirrors-brazil-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:109
#, no-wrap
msgid "ftp2.br.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:111
#, no-wrap
msgid "link:http://ftp2.br.FreeBSD.org/FreeBSD[http] link:rsync://ftp2.br.FreeBSD.org[rsync] link:rsync://ftp2.br.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:113
#, no-wrap
msgid "ftp3.br.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:115
#, no-wrap
msgid "link:http://ftp3.br.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp3.br.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp3.br.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:116
#, no-wrap
msgid "Bulgaria icon:envelope[link=mailto:{mirrors-bulgaria-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:117
#, no-wrap
msgid "ftp.bg.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:119
#, no-wrap
msgid "link:ftp://ftp.bg.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.bg.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.bg.FreeBSD.org[rsync] link:rsync://ftp.bg.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:120
#, no-wrap
msgid "Czech Republic icon:envelope[link=mailto:{mirrors-czech-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:121
#, no-wrap
msgid "ftp.cz.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:123
#, no-wrap
msgid "link:http://ftp.cz.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.cz.FreeBSD.org/pub/FreeBSD[http_v6] link:rsync://ftp.cz.FreeBSD.org[rsync] link:rsync://ftp.cz.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:124
#, no-wrap
msgid "Denmark icon:envelope[link=mailto:{mirrors-denmark-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:125
#, no-wrap
msgid "ftp.dk.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:127
#, no-wrap
msgid "link:http://ftp.dk.FreeBSD.org/FreeBSD/[http] link:http://ftp.dk.FreeBSD.org/FreeBSD/[http_v6] link:ftp://ftp.dk.FreeBSD.org/FreeBSD/[ftp] link:ftp://ftp.dk.FreeBSD.org/FreeBSD/[ftp_v6] link:rsync://ftp.dk.FreeBSD.org/FreeBSD/[rsync] link:rsync://ftp.dk.FreeBSD.org/FreeBSD/[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:128
#, no-wrap
msgid "Finland icon:envelope[link=mailto:{mirrors-finland-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:129
#, no-wrap
msgid "ftp.fi.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:131
#, no-wrap
msgid "link:ftp://ftp.fi.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:132
#, no-wrap
msgid "France icon:envelope[link=mailto:{mirrors-france-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:133
#, no-wrap
msgid "ftp.fr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:135
#, no-wrap
msgid "link:http://ftp.fr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.fr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.fr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.fr.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.fr.FreeBSD.org[rsync] link:rsync://ftp.fr.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:137
#, no-wrap
msgid "ftp3.fr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:139
#, no-wrap
msgid "link:ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:141
#, no-wrap
msgid "ftp6.fr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:143
#, no-wrap
msgid "link:http://ftp6.fr.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp6.fr.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:144
#, no-wrap
msgid "Germany icon:envelope[link=mailto:{mirrors-germany-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:145
#, no-wrap
msgid "ftp.de.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:147
#, no-wrap
msgid "link:ftp://ftp.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.de.FreeBSD.org[rsync] link:rsync://ftp.de.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:149
#, no-wrap
msgid "ftp1.de.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:151
#, no-wrap
msgid "link:http://ftp1.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp1.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp1.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp1.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp1.de.FreeBSD.org[rsync] link:rsync://ftp1.de.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:153
#, no-wrap
msgid "ftp2.de.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:155
#, no-wrap
msgid "link:http://ftp2.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.de.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp2.de.FreeBSD.org[rsync] link:rsync://ftp2.de.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:157
#, no-wrap
msgid "ftp5.de.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:159
#, no-wrap
msgid "link:ftp://ftp5.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp5.de.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:161
#, no-wrap
msgid "ftp7.de.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:163
#, no-wrap
msgid "link:http://ftp7.de.FreeBSD.org/pub/FreeBSD[http] link:http://ftp7.de.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp7.de.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp7.de.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:164
#, no-wrap
msgid "Greece icon:envelope[link=mailto:{mirrors-greece-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:165
#, no-wrap
msgid "ftp.gr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:167
#, no-wrap
msgid "link:http://ftp.gr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.gr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.gr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.gr.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:169
#, no-wrap
msgid "ftp2.gr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:171
#, no-wrap
msgid "link:http://ftp2.gr.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.gr.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp2.gr.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:172
#, no-wrap
msgid "Japan icon:envelope[link=mailto:{mirrors-japan-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:173
#, no-wrap
msgid "ftp.jp.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:175
#, no-wrap
msgid "link:http://ftp.jp.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.jp.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.jp.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.jp.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.jp.FreeBSD.org[rsync] link:rsync://ftp.jp.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:177
#, no-wrap
msgid "ftp2.jp.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:179
#, no-wrap
msgid "link:ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.jp.FreeBSD.org[rsync] link:rsync://ftp2.jp.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:181
#, no-wrap
msgid "ftp3.jp.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:183
#, no-wrap
msgid "link:http://ftp3.jp.FreeBSD.org/pub/FreeBSD[http] link:rsync://ftp3.jp.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:185
#, no-wrap
msgid "ftp4.jp.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:187
#, no-wrap
msgid "link:ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:189
#, no-wrap
msgid "ftp6.jp.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:191
#, no-wrap
msgid "link:http://ftp6.jp.FreeBSD.org/pub/FreeBSD[http] link:http://ftp6.jp.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp6.jp.FreeBSD.org[rsync] link:rsync://ftp6.jp.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:192
#, no-wrap
msgid "Korea icon:envelope[link=mailto:{mirrors-korea-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:193
#, no-wrap
msgid "ftp.kr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:195
#, no-wrap
msgid "link:http://ftp.kr.FreeBSD.org/pub/FreeBSD[http] link:https://ftp.kr.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp.kr.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp.kr.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:197
#, no-wrap
msgid "ftp2.kr.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:199
#, no-wrap
msgid "link:rsync://ftp2.kr.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:200
#, no-wrap
msgid "Latvia icon:envelope[link=mailto:{mirrors-latvia-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:201
#, no-wrap
msgid "ftp.lv.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:203
#, no-wrap
msgid "link:http://ftp.lv.FreeBSD.org/freebsd[http] link:ftp://ftp.lv.FreeBSD.org/freebsd[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:204
#, no-wrap
msgid "Netherlands icon:envelope[link=mailto:{mirrors-netherlands-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:205
#, no-wrap
msgid "ftp.nl.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:207
#, no-wrap
msgid "link:http://ftp.nl.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.nl.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.nl.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.nl.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.nl.FreeBSD.org[rsync] link:rsync://ftp.nl.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:209
#, no-wrap
msgid "ftp2.nl.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:211
#, no-wrap
msgid "link:http://ftp2.nl.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp2.nl.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.nl.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:212
#, no-wrap
msgid "New Zealand icon:envelope[link=mailto:{mirrors-new-zealand-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:213
#, no-wrap
msgid "ftp.nz.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:215
#, no-wrap
msgid "link:http://ftp.nz.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp.nz.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:216
#, no-wrap
msgid "Norway icon:envelope[link=mailto:{mirrors-norway-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:217
#, no-wrap
msgid "ftp.no.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:219
#, no-wrap
msgid "link:ftp://ftp.no.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.no.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.no.FreeBSD.org[rsync] link:rsync://ftp.no.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:220
#, no-wrap
msgid "Poland icon:envelope[link=mailto:{mirrors-poland-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:221
#, no-wrap
msgid "ftp.pl.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:223
#, no-wrap
msgid "link:http://ftp.pl.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.pl.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.pl.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp.pl.FreeBSD.org[rsync] link:rsync://ftp.pl.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:224
#, no-wrap
msgid "Russia icon:envelope[link=mailto:{mirrors-russia-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:225
#, no-wrap
msgid "ftp.ru.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:227
#, no-wrap
msgid "link:http://ftp.ru.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.ru.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.ru.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.ru.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.ru.FreeBSD.org[rsync] link:rsync://ftp.ru.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:229
#, no-wrap
msgid "ftp2.ru.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:231
#, no-wrap
msgid "link:https://ftp2.ru.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp2.ru.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:232
#, no-wrap
msgid "Slovenia icon:envelope[link=mailto:{mirrors-slovenia-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:233
#, no-wrap
msgid "ftp.si.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:235
#, no-wrap
msgid "link:http://ftp.si.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.si.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.si.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.si.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:236
#, no-wrap
msgid "South Africa icon:envelope[link=mailto:{mirrors-south-africa-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:237
#, no-wrap
msgid "ftp.za.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:239
#, no-wrap
msgid "link:https://ftp.za.FreeBSD.org/pub/FreeBSD[https] link:https://ftp.za.FreeBSD.org/pub/FreeBSD[https_v6] link:rsync://ftp.za.FreeBSD.org[rsync] link:rsync://ftp.za.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:241
#, no-wrap
msgid "ftp2.za.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:243
#, no-wrap
msgid "link:http://ftp2.za.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.za.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp2.za.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:245
#, no-wrap
msgid "ftp4.za.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:247
#, no-wrap
msgid "link:http://ftp4.za.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp4.za.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp4.za.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:248
#, no-wrap
msgid "Sweden icon:envelope[link=mailto:{mirrors-sweden-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:249
#, no-wrap
msgid "ftp.se.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:251
#, no-wrap
msgid "link:http://ftp.se.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.se.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.se.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.se.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.se.FreeBSD.org[rsync] link:rsync://ftp.se.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:252
#, no-wrap
msgid "Taiwan icon:envelope[link=mailto:{mirrors-taiwan-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:253
#, no-wrap
msgid "ftp4.tw.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:255
#, no-wrap
msgid "link:https://ftp4.tw.FreeBSD.org/pub/FreeBSD[https] link:ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp4.tw.FreeBSD.org[rsync]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:257
#, no-wrap
msgid "ftp5.tw.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:259
#, no-wrap
msgid "link:http://ftp5.tw.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp5.tw.FreeBSD.org/pub/FreeBSD[ftp]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:260
#, no-wrap
msgid "Ukraine icon:envelope[link=mailto:{mirrors-ukraine-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:261
#, no-wrap
msgid "ftp.ua.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:263
#, no-wrap
msgid "link:http://ftp.ua.FreeBSD.org/pub/FreeBSD[http] link:ftp://ftp.ua.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.ua.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.ua.FreeBSD.org[rsync] link:rsync://ftp.ua.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:264
#, no-wrap
msgid "United Kingdom icon:envelope[link=mailto:{mirrors-uk-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:265
#, no-wrap
msgid "ftp.uk.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:267
#, no-wrap
msgid "link:http://ftp.uk.FreeBSD.org/pub/FreeBSD[http] link:http://ftp.uk.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp.uk.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp.uk.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp.uk.FreeBSD.org[rsync] link:rsync://ftp.uk.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:269
#, no-wrap
msgid "ftp2.uk.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:271
#, no-wrap
msgid "link:http://ftp2.uk.FreeBSD.org/pub/FreeBSD[http] link:http://ftp2.uk.FreeBSD.org/pub/FreeBSD[http_v6] link:https://ftp2.uk.FreeBSD.org/pub/FreeBSD[https] link:https://ftp2.uk.FreeBSD.org/pub/FreeBSD[https_v6] link:ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:272
#, no-wrap
msgid "United States of America icon:envelope[link=mailto:{mirrors-us-email}, title=\"mirror contact\"]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:273
#, no-wrap
msgid "ftp11.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:275
#, no-wrap
msgid "link:http://ftp11.FreeBSD.org/pub/FreeBSD[http] link:http://ftp11.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp11.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp11.FreeBSD.org/pub/FreeBSD[ftp_v6] link:rsync://ftp11.FreeBSD.org[rsync] link:rsync://ftp11.FreeBSD.org[rsync_v6]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:277
#, no-wrap
msgid "ftp14.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:279
#, no-wrap
msgid "link:ftp://ftp14.FreeBSD.org/pub/FreeBSD[ftp] link:rsync://ftp14.FreeBSD.org[rsync] (Former official tier 1)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:281
#, no-wrap
msgid "ftp5.FreeBSD.org"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:282
#, no-wrap
msgid "link:http://ftp5.FreeBSD.org/pub/FreeBSD[http] link:http://ftp5.FreeBSD.org/pub/FreeBSD[http_v6] link:ftp://ftp5.FreeBSD.org/pub/FreeBSD[ftp] link:ftp://ftp5.FreeBSD.org/pub/FreeBSD[ftp_v6]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:285
msgid ""
"The current list of protocols supported by the community mirrors was last "
"updated on 2022-01-31, and it's not guaranteed."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mirrors/_index.adoc:287
#, no-wrap
msgid "Using Git"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:290
#: documentation/content/en/books/handbook/mirrors/_index.adoc:422
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:294
msgid ""
"As of December 2020, FreeBSD uses git as the primary version control system "
"for storing all of FreeBSD's base source code and documentation. As of "
"April 2021, FreeBSD uses git as the only version control system for storing "
"all of FreeBSD's Ports Collection."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:299
msgid ""
"Git is generally a developer tool. Users may prefer to use `freebsd-update` "
"(crossref:cutting-edge[updating-upgrading-freebsdupdate,“FreeBSD Update”]) "
"to update the FreeBSD base system, and `git` (crossref:ports[ports-"
"using,“Using the Ports Collection”]) to update the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:302
msgid ""
"This section demonstrates how to install Git on a FreeBSD system and use it "
"to create a local copy of a FreeBSD source code repository."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:304
#: documentation/content/en/books/handbook/mirrors/_index.adoc:448
#, no-wrap
msgid "Installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:307
msgid "Git can be installed from the Ports Collection, or as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:311
#, no-wrap
msgid "# pkg install git\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:314
#, no-wrap
msgid "Running Git"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:318
msgid ""
"To fetch a clean copy of the sources into a local directory, use `git "
"clone`. This directory of files is called the _working tree_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:323
msgid ""
"Git uses URLs to designate a repository. There are three different "
"repositories, `src` for the FreeBSD system source code, `doc` for "
"documentation, and `ports` for the FreeBSD Ports Collection. All three are "
"reachable over two different protocols: HTTPS and SSH. For example, the URL "
"`https://git.FreeBSD.org/src.git` specifies the main branch of the `src` "
"repository, using the `https` protocol."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/mirrors/_index.adoc:325
#, no-wrap
msgid "FreeBSD Git Repository URL Table"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:328
#, no-wrap
msgid "Item"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:329
#, no-wrap
msgid "Git URL"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:329
#, no-wrap
msgid "Read-only src repo via HTTPS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
#, no-wrap
msgid "`https://git.FreeBSD.org/src.git`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:330
#, no-wrap
msgid "Read-only src repo via anon-ssh"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/src.git`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:331
#, no-wrap
msgid "Read-only doc repo via HTTPS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
#, no-wrap
msgid "`https://git.FreeBSD.org/doc.git`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:332
#, no-wrap
msgid "Read-only doc repo via anon-ssh"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/doc.git`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:333
#, no-wrap
msgid "Read-only ports repo via HTTPS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:334
#, no-wrap
msgid "`https://git.FreeBSD.org/ports.git`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:334
#, no-wrap
msgid "Read-only ports repo via anon-ssh"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/mirrors/_index.adoc:335
#, no-wrap
msgid "`ssh://anongit@git.FreeBSD.org/ports.git`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:338
msgid ""
"External mirrors maintained by project members are also available; please "
"refer to the <<external-mirrors>> section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:340
msgid "To clone a copy of the FreeBSD system source code repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:344
#, no-wrap
msgid "# git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:349
msgid ""
"The `-o freebsd` option specifies the origin; by convention in the FreeBSD "
"documentation, the origin is assumed to be `freebsd`. Because the initial "
"checkout must download the full branch of the remote repository, it can take "
"a while. Please be patient."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:352
msgid ""
"Initially, the working tree contains source code for the `main` branch, "
"which corresponds to CURRENT. To switch to 13-STABLE instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:356
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git checkout stable/13\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:360
msgid ""
"The working tree can be updated with `git pull`. To update [.filename]#/usr/"
"src# created in the example above, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:365
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# git pull --rebase\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:368
#: documentation/content/en/books/handbook/mirrors/_index.adoc:523
msgid ""
"The update is much quicker than a checkout, only transferring files that "
"have changed."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:369
#, no-wrap
msgid "Web-based repository browser"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:372
msgid ""
"The FreeBSD project uses cgit as the web-based repository browser: link:"
"https://cgit.FreeBSD.org/[https://cgit.FreeBSD.org/]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:373
#, no-wrap
msgid "For Developers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:376
msgid ""
"For information about write access to repositories see the extref:"
"{committers-guide}[Committer's Guide, git-mini-primer]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:378
#, no-wrap
msgid "External mirrors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:383
msgid ""
"Those mirrors are not hosted in FreeBSD.org but still maintained by the "
"project members. Users and developers are welcome to pull or browse "
"repositories on those mirrors. Pull requests for the `doc` GitHub "
"repository are being accepted; otherwise, the project workflow with those "
"mirrors is still under discussion."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mirrors/_index.adoc:384
#, no-wrap
msgid "Codeberg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:386
msgid "doc: https://codeberg.org/FreeBSD/freebsd-doc"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:387
msgid "ports: https://codeberg.org/FreeBSD/freebsd-ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:388
msgid "src: https://codeberg.org/FreeBSD/freebsd-src"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mirrors/_index.adoc:389
#, no-wrap
msgid "GitHub"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:391
msgid "doc: https://github.com/freebsd/freebsd-doc"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:392
msgid "ports: https://github.com/freebsd/freebsd-ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:393
msgid "src: https://github.com/freebsd/freebsd-src"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/mirrors/_index.adoc:394
#, no-wrap
msgid "GitLab"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:396
msgid "doc: https://gitlab.com/FreeBSD/freebsd-doc"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:397
msgid "ports: https://gitlab.com/FreeBSD/freebsd-ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:398
msgid "src: https://gitlab.com/FreeBSD/freebsd-src"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:399
#, no-wrap
msgid "Mailing lists"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:403
msgid ""
"The main mailing list for general usage and questions about git in the "
"FreeBSD project is https://lists.freebsd.org/subscription/freebsd-"
"git[freebsd-git]. For more details, including commit messages lists, see "
"the crossref:handbook/eresources[eresources-mail, Mailing Lists] chapter."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:404
#, no-wrap
msgid "SSH host keys"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:407
msgid "gitrepo.FreeBSD.org host key fingerprints:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:408
msgid ""
"ECDSA key fingerprint is `SHA256:seWO5D27ySURcx4bknTNKlC1mgai0whP443PAKEvvZA`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:409
msgid ""
"ED25519 key fingerprint is `SHA256:"
"lNR6i4BEOaaUhmDHBA1WJsO7H3KtvjE2r5q4sOxtIWo`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:410
msgid ""
"RSA key fingerprint is `SHA256:f453CUEFXEJAXlKeEHV+ajJfeEfx9MdKQUD7lIscnQI`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:412
msgid "git.FreeBSD.org host key fingerprints:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:413
msgid ""
"ECDSA key fingerprint is `SHA256:/UlirUAsGiitupxmtsn7f9b7zCWd0vCs4Yo/tpVWP9w`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:414
msgid ""
"ED25519 key fingerprint is `SHA256:"
"y1ljKrKMD3lDObRUG3xJ9gXwEIuqnh306tSyFd1tuZE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:415
msgid ""
"RSA key fingerprint is `SHA256:jBe6FQGoH4HjvrIVM23dcnLZk9kmpdezR/CvQzm7rJM`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:417
msgid "These are also published as SSHFP records in DNS."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mirrors/_index.adoc:419
#, no-wrap
msgid "Using Subversion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:429
msgid ""
"As of December 2020, FreeBSD uses git as the primary version control system "
"for storing all of FreeBSD's source code and documentation. Changes from "
"the git repo on the `stable/11`, `stable/12` and related releng branches are "
"exported to the subversion repository. This export will continue through "
"the life of these branches. From July 2012 to March 2021, FreeBSD used "
"Subversion as the only version control system for storing all of FreeBSD's "
"Ports Collection. As of April 2021, FreeBSD uses git as the only version "
"control system for storing all of FreeBSD's Ports Collection."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:435
msgid ""
"Subversion is generally a developer tool. Users may prefer to use `freebsd-"
"update` (crossref:cutting-edge[updating-upgrading-freebsdupdate,“FreeBSD "
"Update”]) to update the FreeBSD base system, and `git` (crossref:ports[ports-"
"using,“Using the Ports Collection”]) to update the FreeBSD Ports "
"Collection. After March 2021, subversion use is only for legacy branches "
"(`stable/11` and `stable/12`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:438
msgid ""
"This section demonstrates how to install Subversion on a FreeBSD system and "
"use it to create a local copy of a FreeBSD repository. Additional "
"information on the use of Subversion is included."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:440
#, no-wrap
msgid "Svnlite"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:444
msgid ""
"A lightweight version of Subversion is already installed on FreeBSD as "
"`svnlite`. The port or package version of Subversion is only needed if the "
"Python or Perl API is needed, or if a later version of Subversion is desired."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:446
msgid ""
"The only difference from normal Subversion use is that the command name is "
"`svnlite`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:451
msgid ""
"If `svnlite` is unavailable or the full version of Subversion is needed, "
"then it must be installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:453
msgid "Subversion can be installed from the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:458
#, no-wrap
msgid ""
"# cd /usr/ports/devel/subversion\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:461
msgid "Subversion can also be installed as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:465
#, no-wrap
msgid "# pkg install subversion\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:468
#, no-wrap
msgid "Running Subversion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:472
msgid ""
"To fetch a clean copy of the sources into a local directory, use `svn`. The "
"files in this directory are called a _local working copy_."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:477
msgid ""
"Move or delete an existing destination directory before using `checkout` for "
"the first time. Checkout over an existing non-`svn` directory can cause "
"conflicts between the existing files and those brought in from the "
"repository."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:483
msgid ""
"Subversion uses URLs to designate a repository, taking the form of "
"_protocol://hostname/path_. The first component of the path is the FreeBSD "
"repository to access. There are three different repositories, `base` for "
"the FreeBSD base system source code, `ports` for the Ports Collection, and "
"`doc` for documentation. For example, the URL `https://svn.FreeBSD.org/base/"
"head/` specifies the main branch of the src repository, using the `https` "
"protocol."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:485
msgid ""
"A checkout from a given repository is performed with a command like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:489
#, no-wrap
msgid "# svn checkout https://svn.FreeBSD.org/repository/branch lwcdir\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:492
msgid "where:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:494
msgid ""
"_repository_ is one of the Project repositories: `base`, `ports`, or `doc`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:495
msgid ""
"_branch_ depends on the repository used. `ports` and `doc` are mostly "
"updated in the `head` branch, while `base` maintains the latest version of -"
"CURRENT under `head` and the respective latest versions of the -STABLE "
"branches under `stable/11` (11._x_) and `stable/12` (12._x_)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:496
msgid ""
"_lwcdir_ is the target directory where the contents of the specified branch "
"should be placed. This is usually [.filename]#/usr/ports# for `ports`, [."
"filename]#/usr/src# for `base`, and [.filename]#/usr/doc# for `doc`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:499
msgid ""
"This example checks out the Source Tree from the FreeBSD repository using "
"the HTTPS protocol, placing the local working copy in [.filename]#/usr/"
"src#. If [.filename]#/usr/src# is already present but was not created by "
"`svn`, remember to rename or delete it before the checkout."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:503
#, no-wrap
msgid "# svn checkout https://svn.FreeBSD.org/base/head /usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:507
msgid ""
"Because the initial checkout must download the full branch of the remote "
"repository, it can take a while. Please be patient."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:509
msgid ""
"After the initial checkout, the local working copy can be updated by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:513
#, no-wrap
msgid "# svn update lwcdir\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:516
msgid "To update [.filename]#/usr/src# created in the example above, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:520
#, no-wrap
msgid "# svn update /usr/src\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:527
msgid ""
"An alternate way of updating the local working copy after checkout is "
"provided by the [.filename]#Makefile# in the [.filename]#/usr/ports#, [."
"filename]#/usr/src#, and [.filename]#/usr/doc# directories. Set "
"`SVN_UPDATE` and use the `update` target. For example, to update [."
"filename]#/usr/src#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:532
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# make update SVN_UPDATE=yes\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:535
#, no-wrap
msgid "Subversion Mirror Sites"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:538
msgid "The FreeBSD Subversion repository is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/mirrors/_index.adoc:542
#, no-wrap
msgid "svn.FreeBSD.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:546
msgid ""
"This is a publicly accessible mirror network that uses GeoDNS to select an "
"appropriate back end server. To view the FreeBSD Subversion repositories "
"through a browser, use https://svnweb.FreeBSD.org/[https://svnweb.FreeBSD."
"org/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:548
msgid ""
"HTTPS is the preferred protocol, but the [.filename]#security/ca_root_nss# "
"package will need to be installed in order to automatically validate "
"certificates."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/mirrors/_index.adoc:549
#, no-wrap
msgid "For More Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:552
msgid ""
"For other information about using Subversion, please see the \"Subversion "
"Book\", titled http://svnbook.red-bean.com/[Version Control with "
"Subversion], or the http://subversion.apache.org/docs/[Subversion "
"Documentation]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/mirrors/_index.adoc:554
#, no-wrap
msgid "CD and DVD Sets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:557
msgid "FreeBSD CD and DVD sets are available from several online retailers:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:567
#, no-wrap
msgid ""
"FreeBSD Mall, Inc.\n"
"1164 Claremont Dr\n"
"Brentwood, CA\n"
"94513\n"
"USA\n"
"Phone: +1 925 240-6652\n"
"Fax: +1 925 674-0821\n"
"Email: info@freebsdmall.com\n"
"WWW: https://www.freebsdmall.com"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:570
#, no-wrap
msgid ""
"Getlinux\n"
"WWW: https://www.getlinux.fr/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/mirrors/_index.adoc:577
#, no-wrap
msgid ""
"Dr. Hinner EDV\n"
"Schäftlarnstr. 10 // 4. Stock\n"
"D-81371 München\n"
"Germany\n"
"Phone: +49 171 417 544 6\n"
"Email: infow@hinner.de\n"
"WWW: http://www.hinner.de/linux/freebsd.html"
msgstr ""
diff --git a/documentation/content/en/books/handbook/multimedia/_index.po b/documentation/content/en/books/handbook/multimedia/_index.po
index 517aefd3be..945d5946f3 100644
--- a/documentation/content/en/books/handbook/multimedia/_index.po
+++ b/documentation/content/en/books/handbook/multimedia/_index.po
@@ -1,2407 +1,2407 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1
#, no-wrap
msgid "FreeBSD supports a wide variety of sound cards, allowing users to enjoy high fidelity output from a FreeBSD system"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1
#, no-wrap
-msgid "Chapter 7. Multimedia"
+msgid "Chapter 8. Multimedia"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/multimedia/_index.adoc:15
#, no-wrap
msgid "Multimedia"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:58
msgid ""
"FreeBSD supports a wide variety of sound cards, allowing users to enjoy high "
"fidelity output from a FreeBSD system. This includes the ability to record "
"and play back audio in the MPEG Audio Layer 3 (`MP3`), Waveform Audio File "
"(`WAV`), Ogg Vorbis, and other formats. The FreeBSD Ports Collection "
"contains many applications for editing recorded audio, adding sound effects, "
"and controlling attached MIDI devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:61
msgid ""
"FreeBSD also supports the playback of video files and ``DVD``s. The FreeBSD "
"Ports Collection contains applications to encode, convert, and playback "
"various video media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:64
msgid ""
"This chapter describes how to configure sound cards, video playback, TV "
"tuner cards, and scanners on FreeBSD. It also describes some of the "
"applications which are available for using these devices."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:66
msgid "After reading this chapter, you will know how to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:68
msgid "Configure a sound card on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:69
msgid "Troubleshoot the sound setup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:70
msgid "Playback and encode MP3s and other audio."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:71
msgid "Prepare a FreeBSD system for video playback."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:72
msgid "Play ``DVD``s, [.filename]#.mpg#, and [.filename]#.avi# files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:73
msgid "Rip `CD` and `DVD` content into files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:74
msgid "Configure a TV card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:75
msgid "Install and setup MythTV on FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:76
msgid "Configure an image scanner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:77
msgid "Configure a Bluetooth headset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:79
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:81
msgid ""
"Know how to install applications as described in crossref:ports[ports,"
"Installing Applications: Packages and Ports]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:83
#, no-wrap
msgid "Setting Up the Sound Card"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:88
msgid ""
"Before beginning the configuration, determine the model of the sound card "
"and the chip it uses. FreeBSD supports a wide variety of sound cards. "
"Check the supported audio devices list of the link:{u-rel120-hardware}"
"[Hardware Notes] to see if the card is supported and which FreeBSD driver it "
"uses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:92
msgid ""
"In order to use the sound device, its device driver must be loaded. The "
"easiest way is to load a kernel module for the sound card with man:"
"kldload[8]. This example loads the driver for a built-in audio chipset "
"based on the Intel specification:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:96
#, no-wrap
msgid "# kldload snd_hda\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:100
msgid ""
"To automate the loading of this driver at boot time, add the driver to [."
"filename]#/boot/loader.conf#. The line for this driver is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:104
#, no-wrap
msgid "snd_hda_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:108
msgid ""
"Other available sound modules are listed in [.filename]#/boot/defaults/"
"loader.conf#. When unsure which driver to use, load the [."
"filename]#snd_driver# module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:112
#, no-wrap
msgid "# kldload snd_driver\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:116
msgid ""
"This is a metadriver which loads all of the most common sound drivers and "
"can be used to speed up the search for the correct driver. It is also "
"possible to load all sound drivers by adding the metadriver to [.filename]#/"
"boot/loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:118
msgid ""
"To determine which driver was selected for the sound card after loading the "
"[.filename]#snd_driver# metadriver, type `cat /dev/sndstat`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:119
#, no-wrap
msgid "Configuring a Custom Kernel with Sound Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:123
msgid ""
"This section is for users who prefer to statically compile in support for "
"the sound card in a custom kernel. For more information about recompiling a "
"kernel, refer to crossref:kernelconfig[kernelconfig,Configuring the FreeBSD "
"Kernel]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:125
msgid ""
"When using a custom kernel to provide sound support, make sure that the "
"audio framework driver exists in the custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:129
#, no-wrap
msgid "device sound\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:133
msgid ""
"Next, add support for the sound card. To continue the example of the built-"
"in audio chipset based on the Intel specification from the previous section, "
"use the following line in the custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:137
#, no-wrap
msgid "device snd_hda\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:140
msgid ""
"Be sure to read the manual page of the driver for the device name to use for "
"the driver."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:145
msgid ""
"Non-PnP ISA sound cards may require the IRQ and I/O port settings of the "
"card to be added to [.filename]#/boot/device.hints#. During the boot "
"process, man:loader[8] reads this file and passes the settings to the "
"kernel. For example, an old Creative SoundBlaster(R) 16 ISA non-PnP card "
"will use the man:snd_sbc[4] driver in conjunction with `snd_sb16`. For this "
"card, the following lines must be added to the kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:150
#, no-wrap
msgid ""
"device snd_sbc\n"
"device snd_sb16\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:153
msgid ""
"If the card uses the `0x220` I/O port and IRQ `5`, these lines must also be "
"added to [.filename]#/boot/device.hints#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:161
#, no-wrap
msgid ""
"hint.sbc.0.at=\"isa\"\n"
"hint.sbc.0.port=\"0x220\"\n"
"hint.sbc.0.irq=\"5\"\n"
"hint.sbc.0.drq=\"1\"\n"
"hint.sbc.0.flags=\"0x15\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:164
msgid ""
"The syntax used in [.filename]#/boot/device.hints# is described in man:"
"sound[4] and the manual page for the driver of the sound card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:168
msgid ""
"The settings shown above are the defaults. In some cases, the IRQ or other "
"settings may need to be changed to match the card. Refer to man:snd_sbc[4] "
"for more information about this card."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:170
#, no-wrap
msgid "Testing Sound"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:175
msgid ""
"After loading the required module or rebooting into the custom kernel, the "
"sound card should be detected. To confirm, run `dmesg | grep pcm`. This "
"example is from a system with a built-in Conexant CX20590 chipset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:181
#, no-wrap
msgid ""
"pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0\n"
"pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0\n"
"pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:184
msgid "The status of the sound card may also be checked using this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:193
#, no-wrap
msgid ""
"# cat /dev/sndstat\n"
"FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)\n"
"Installed devices:\n"
"pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)\n"
"pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)\n"
"pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) default\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:198
msgid ""
"The output will vary depending upon the sound card. If no [.filename]#pcm# "
"devices are listed, double-check that the correct device driver was loaded "
"or compiled into the kernel. The next section lists some common problems "
"and their solutions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:201
msgid ""
"If all goes well, the sound card should now work in FreeBSD. If the `CD` or "
"`DVD` drive is properly connected to the sound card, one can insert an audio "
"`CD` in the drive and play it with man:cdcontrol[1]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:205
#, no-wrap
msgid "% cdcontrol -f /dev/acd0 play 1\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:210
msgid ""
"Audio ``CD``s have specialized encodings which means that they should not be "
"mounted using man:mount[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:214
msgid ""
"Various applications, such as package:audio/workman[], provide a friendlier "
"interface. The package:audio/mpg123[] port can be installed to listen to "
"MP3 audio files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:216
msgid ""
"Another quick way to test the card is to send data to [.filename]#/dev/dsp#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:220
#, no-wrap
msgid "% cat filename > /dev/dsp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:224
msgid ""
"where [.filename]#filename# can be any type of file. This command should "
"produce some noise, confirming that the sound card is working."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:229
msgid ""
"The [.filename]#/dev/dsp*# device nodes will be created automatically as "
"needed. When not in use, they do not exist and will not appear in the "
"output of man:ls[1]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:232
#, no-wrap
msgid "Setting up Bluetooth Sound Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:236
msgid ""
"Connecting to a Bluetooth device is out of scope for this chapter. Refer to "
"crossref:advanced-networking[network-bluetooth,“Bluetooth”] for more "
"information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:238
msgid ""
"To get Bluetooth sound sink working with FreeBSD's sound system, users have "
"to install package:audio/virtual_oss[] first:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:242
#, no-wrap
msgid "# pkg install virtual_oss\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:245
msgid ""
"package:audio/virtual_oss[] requires `cuse` to be loaded into the kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:249
#, no-wrap
msgid "# kldload cuse\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:252
msgid "To load `cuse` during system startup, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:256
#, no-wrap
msgid "# echo 'cuse_load=yes' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:259
msgid ""
"To use headphones as a sound sink with package:audio/virtual_oss[], users "
"need to create a virtual device after connecting to a Bluetooth audio device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:263
#, no-wrap
msgid "# virtual_oss -C 2 -c 2 -r 48000 -b 16 -s 768 -R /dev/null -P /dev/bluetooth/headphones -d dsp\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:269
msgid ""
"_headphones_ in this example is a hostname from [.filename]#/etc/bluetooth/"
"hosts#. `BT_ADDR` could be used instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:272
msgid "Refer to man:virtual_oss[8] for more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:274
#, no-wrap
msgid "Troubleshooting Sound"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:277
msgid ""
"<<multimedia-sound-common-error-messages>> lists some common error messages "
"and their solutions:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:279
#, no-wrap
msgid "Common Error Messages"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:283
#, no-wrap
msgid "Error"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:285
#, no-wrap
msgid "Solution"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:286
#, no-wrap
msgid "`sb_dspwr(XX) timed out`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:290
#, no-wrap
msgid "The I/O port is not set correctly."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:291
#, no-wrap
msgid "`bad irq XX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:295
#, no-wrap
msgid "The IRQ is set incorrectly. Make sure that the set IRQ and the sound IRQ are the same."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:296
#, no-wrap
msgid "`xxx: gus pcm not attached, out of memory`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:300
#, no-wrap
msgid "There is not enough available memory to use the device."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:301
#, no-wrap
msgid "`xxx: can't open /dev/dsp!`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:303
#, no-wrap
msgid "Type `fstat \\"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/multimedia/_index.adoc:304
#, no-wrap
-msgid "grep` dsp to check if another application is holding the device open. Noteworthy troublemakers are esound and KDE's sound support."
+msgid "grep dsp` to check if another application is holding the device open. Noteworthy troublemakers are esound and KDE's sound support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:310
msgid ""
"Modern graphics cards often come with their own sound driver for use with "
"`HDMI`. This sound device is sometimes enumerated before the sound card "
"meaning that the sound card will not be used as the default playback "
"device. To check if this is the case, run dmesg and look for `pcm`. The "
"output looks something like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:330
#, no-wrap
msgid ""
"...\n"
"hdac0: HDA Driver Revision: 20100226_0142\n"
"hdac1: HDA Driver Revision: 20100226_0142\n"
"hdac0: HDA Codec #0: NVidia (Unknown)\n"
"hdac0: HDA Codec #1: NVidia (Unknown)\n"
"hdac0: HDA Codec #2: NVidia (Unknown)\n"
"hdac0: HDA Codec #3: NVidia (Unknown)\n"
"pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0\n"
"pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0\n"
"pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0\n"
"pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0\n"
"hdac1: HDA Codec #2: Realtek ALC889\n"
"pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1\n"
"pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1\n"
"pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1\n"
"pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:334
msgid ""
"In this example, the graphics card (`NVidia`) has been enumerated before the "
"sound card (`Realtek ALC889`). To use the sound card as the default "
"playback device, change `hw.snd.default_unit` to the unit that should be "
"used for playback:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:338
#, no-wrap
msgid "# sysctl hw.snd.default_unit=n\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:343
msgid ""
"where `n` is the number of the sound device to use. In this example, it "
"should be `4`. Make this change permanent by adding the following line to [."
"filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:347
#, no-wrap
msgid "hw.snd.default_unit=4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:355
msgid ""
"Programs using package:audio/pulseaudio[] might need to restart the package:"
"audio/pulseaudio[] daemon for the changes in `hw.snd.default_unit` to take "
"effect. Alternatively, package:audio/pulseaudio[] settings can be changed "
"on the fly. man:pacmd[1] opens a command line connection to the package:"
"audio/pulseaudio[] daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:361
#, no-wrap
msgid ""
"# pacmd\n"
"Welcome to PulseAudio 14.2! Use \"help\" for usage information.\n"
">>>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:365
msgid ""
"The following command changes the default sink to card number 4 as in the "
"previous example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:369
#, no-wrap
msgid "set-default-sink 4\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:375
msgid ""
"Do not use the `exit` command to exit the command line interface. That will "
"kill the package:audio/pulseaudio[] daemon. Use kbd:[Ctrl+D] instead."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:378
#, no-wrap
msgid "Utilizing Multiple Sound Sources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:382
msgid ""
"It is often desirable to have multiple sources of sound that are able to "
"play simultaneously. FreeBSD uses \"Virtual Sound Channels\" to multiplex "
"the sound card's playback by mixing sound in the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:384
msgid ""
"Three man:sysctl[8] knobs are available for configuring virtual channels:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:390
#, no-wrap
msgid ""
"# sysctl dev.pcm.0.play.vchans=4\n"
"# sysctl dev.pcm.0.rec.vchans=4\n"
"# sysctl hw.snd.maxautovchans=4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:396
msgid ""
"This example allocates four virtual channels, which is a practical number "
"for everyday use. Both `dev.pcm.0.play.vchans=4` and `dev.pcm.0.rec."
"vchans=4` are configurable after a device has been attached and represent "
"the number of virtual channels [.filename]#pcm0# has for playback and "
"recording. Since the [.filename]#pcm# module can be loaded independently of "
"the hardware drivers, `hw.snd.maxautovchans` indicates how many virtual "
"channels will be given to an audio device when it is attached. Refer to man:"
"pcm[4] for more information."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:401
msgid ""
"The number of virtual channels for a device cannot be changed while it is in "
"use. First, close any programs using the device, such as music players or "
"sound daemons."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:404
msgid ""
"The correct [.filename]#pcm# device will automatically be allocated "
"transparently to a program that requests [.filename]#/dev/dsp0#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:405
#, no-wrap
msgid "Setting Default Values for Mixer Channels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:410
msgid ""
"The default values for the different mixer channels are hardcoded in the "
"source code of the man:pcm[4] driver. While sound card mixer levels can be "
"changed using man:mixer[8] or third-party applications and daemons, this is "
"not a permanent solution. To instead set default mixer values at the driver "
"level, define the appropriate values in [.filename]#/boot/device.hints#, as "
"seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:414
#, no-wrap
msgid "hint.pcm.0.vol=\"50\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:417
msgid ""
"This will set the volume channel to a default value of `50` when the man:"
"pcm[4] module is loaded."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:419
#, no-wrap
msgid "MP3 Audio"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:422
msgid ""
"This section describes some `MP3` players available for FreeBSD, how to rip "
"audio `CD` tracks, and how to encode and decode ``MP3``s."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:424
#, no-wrap
msgid "MP3 Players"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:432
msgid ""
"A popular graphical `MP3` player is Audacious. It supports Winamp skins and "
"additional plugins. The interface is intuitive, with a playlist, graphic "
"equalizer, and more. Those familiar with Winamp will find Audacious simple "
"to use. On FreeBSD, Audacious can be installed from the package:multimedia/"
"audacious[] port or package. Audacious is a descendant of XMMS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:436
msgid ""
"The package:audio/mpg123[] package or port provides an alternative, command-"
"line `MP3` player. Once installed, specify the `MP3` file to play on the "
"command line. If the system has multiple audio devices, the sound device "
"can also be specified:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:443
#, no-wrap
msgid ""
"# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3\n"
"High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3\n"
" version 1.18.1; written and copyright by Michael Hipp and others\n"
" free software (LGPL) without any warranty but with best wishes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:446
#, no-wrap
msgid ""
"Playing MPEG stream from Foobar-GreatestHits.mp3 ...\n"
"MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:449
msgid "Additional `MP3` players are available in the FreeBSD Ports Collection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:451
#, no-wrap
msgid "Ripping `CD` Audio Tracks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:455
msgid ""
"Before encoding a `CD` or `CD` track to `MP3`, the audio data on the `CD` "
"must be ripped to the hard drive. This is done by copying the raw `CD` "
"Digital Audio (`CDDA`) data to `WAV` files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:457
msgid ""
"The `cdda2wav` tool, which is installed with the package:sysutils/cdrtools[] "
"suite, can be used to rip audio information from ``CD``s."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:459
msgid ""
"With the audio `CD` in the drive, the following command can be issued as "
"`root` to rip an entire `CD` into individual, per track, `WAV` files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:463
#, no-wrap
msgid "# cdda2wav -D 0,1,0 -B\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:467
msgid ""
"In this example, the `-D _0,1,0_` indicates the `SCSI` device [."
"filename]#0,1,0# containing the `CD` to rip. Use `cdrecord -scanbus` to "
"determine the correct device parameters for the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:469
msgid "To rip individual tracks, use `-t` to specify the track:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:473
#, no-wrap
msgid "# cdda2wav -D 0,1,0 -t 7\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:476
msgid "To rip a range of tracks, such as track one to seven, specify a range:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:480
#, no-wrap
msgid "# cdda2wav -D 0,1,0 -t 1+7\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:484
msgid ""
"To rip from an `ATAPI` (`IDE`) `CDROM` drive, specify the device name in "
"place of the `SCSI` unit numbers. For example, to rip track 7 from an IDE "
"drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:488
#, no-wrap
msgid "# cdda2wav -D /dev/acd0 -t 7\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:491
msgid ""
"Alternately, `dd` can be used to extract audio tracks on `ATAPI` drives, as "
"described in crossref:disks[duplicating-audiocds,“Duplicating Audio CDs”]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:493
#, no-wrap
msgid "Encoding and Decoding MP3s"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:497
msgid ""
"Lame is a popular `MP3` encoder which can be installed from the package:"
"audio/lame[] port. Due to patent issues, a package is not available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:499
msgid ""
"The following command will convert the ripped `WAV` file [.filename]#audio01."
"wav# to [.filename]#audio01.mp3#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:504
#, no-wrap
msgid ""
"# lame -h -b 128 --tt \"Foo Song Title\" --ta \"FooBar Artist\" --tl \"FooBar Album\" \\\n"
"--ty \"2014\" --tc \"Ripped and encoded by Foo\" --tg \"Genre\" audio01.wav audio01.mp3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:511
msgid ""
"The specified 128 kbits is a standard `MP3` bitrate while the 160 and 192 "
"bitrates provide higher quality. The higher the bitrate, the larger the "
"size of the resulting `MP3`. The `-h` turns on the \"higher quality but a "
"little slower\" mode. The options beginning with `--t` indicate `ID3` tags, "
"which usually contain song information, to be embedded within the `MP3` "
"file. Additional encoding options can be found in the lame manual page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:514
msgid ""
"In order to burn an audio `CD` from ``MP3``s, they must first be converted "
"to a non-compressed file format. XMMS can be used to convert to the `WAV` "
"format, while mpg123 can be used to convert to the raw Pulse-Code Modulation "
"(`PCM`) audio data format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:516
msgid ""
"To convert [.filename]#audio01.mp3# using mpg123, specify the name of the "
"`PCM` file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:520
#, no-wrap
msgid "# mpg123 -s audio01.mp3 > audio01.pcm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:523
msgid "To use XMMS to convert a `MP3` to `WAV` format, use these steps:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/multimedia/_index.adoc:525
#, no-wrap
msgid "Procedure: Converting to `WAV` Format in XMMS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:527
msgid "Launch XMMS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:528
msgid "Right-click the window to bring up the XMMS menu."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:529
msgid "Select `Preferences` under `Options`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:530
msgid "Change the Output Plugin to \"Disk Writer Plugin\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:531
msgid "Press `Configure`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:532
msgid "Enter or browse to a directory to write the uncompressed files to."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:533
msgid ""
"Load the `MP3` file into XMMS as usual, with volume at 100% and EQ settings "
"turned off."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:534
msgid ""
"Press `Play`. The XMMS will appear as if it is playing the `MP3`, but no "
"music will be heard. It is actually playing the `MP3` to a file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:535
msgid ""
"When finished, be sure to set the default Output Plugin back to what it was "
"before in order to listen to ``MP3``s again."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:540
msgid ""
"Both the `WAV` and `PCM` formats can be used with cdrecord. When using "
"`WAV` files, there will be a small tick sound at the beginning of each "
"track. This sound is the header of the `WAV` file. The package:audio/sox[] "
"port or package can be used to remove the header:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:544
#, no-wrap
msgid "% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:547
msgid ""
"Refer to crossref:disks[creating-cds,“Creating and Using CD Media”] for more "
"information on using a `CD` burner in FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:549
#, no-wrap
msgid "Video Playback"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:554
msgid ""
"Before configuring video playback, determine the model and chipset of the "
"video card. While Xorg supports a wide variety of video cards, not all "
"provide good playback performance. To obtain a list of extensions supported "
"by the Xorg server using the card, run `xdpyinfo` while Xorg is running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:557
msgid ""
"It is a good idea to have a short MPEG test file for evaluating various "
"players and options. Since some `DVD` applications look for `DVD` media in "
"[.filename]#/dev/dvd# by default, or have this device name hardcoded in "
"them, it might be useful to make a symbolic link to the proper device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:561
#, no-wrap
msgid "# ln -sf /dev/cd0 /dev/dvd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:565
msgid ""
"Due to the nature of man:devfs[5], manually created links will not persist "
"after a system reboot. In order to recreate the symbolic link automatically "
"when the system boots, add the following line to [.filename]#/etc/devfs."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:569
#, no-wrap
msgid "link cd0 dvd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:572
msgid ""
"`DVD` decryption invokes certain functions that require write permission to "
"the `DVD` device."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:574
msgid ""
"To enhance the shared memory Xorg interface, it is recommended to increase "
"the values of these man:sysctl[8] variables:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:579
#, no-wrap
msgid ""
"kern.ipc.shmmax=67108864\n"
"kern.ipc.shmall=32768\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:582
#, no-wrap
msgid "Determining Video Capabilities"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:586
msgid ""
"There are several possible ways to display video under Xorg and what works "
"is largely hardware dependent. Each method described below will have "
"varying quality across different hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:588
msgid "Common video interfaces include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:590
msgid "Xorg: normal output using shared memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:591
msgid ""
"XVideo: an extension to the Xorg interface which allows video to be directly "
"displayed in drawable objects through a special acceleration. This extension "
"provides good quality playback even on low-end machines. The next section "
"describes how to determine if this extension is running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:592
msgid ""
"`SDL`: the Simple Directmedia Layer is a porting layer for many operating "
"systems, allowing cross-platform applications to be developed which make "
"efficient use of sound and graphics. `SDL` provides a low-level abstraction "
"to the hardware which can sometimes be more efficient than the Xorg "
"interface. On FreeBSD, `SDL` can be installed using the package:devel/"
"sdl20[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:593
msgid ""
"`DGA`: the Direct Graphics Access is an Xorg extension which allows a "
"program to bypass the Xorg server and directly alter the framebuffer. As it "
"relies on a low-level memory mapping, programs using it must be run as "
"`root`. The `DGA` extension can be tested and benchmarked using man:dga[1]. "
"When `dga` is running, it changes the colors of the display whenever a key "
"is pressed. To quit, press kbd:[q]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:594
msgid "SVGAlib: a low level console graphics layer."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/multimedia/_index.adoc:596
#, no-wrap
msgid "XVideo"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:599
msgid "To check whether this extension is running, use `xvinfo`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:603
#, no-wrap
msgid "% xvinfo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:606
msgid "XVideo is supported for the card if the result is similar to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:677
#, no-wrap
msgid ""
"X-Video Extension version 2.2\n"
" screen #0\n"
" Adaptor #0: \"Savage Streams Engine\"\n"
" number of ports: 1\n"
" port base: 43\n"
" operations supported: PutImage\n"
" supported visuals:\n"
" depth 16, visualID 0x22\n"
" depth 16, visualID 0x23\n"
" number of attributes: 5\n"
" \"XV_COLORKEY\" (range 0 to 16777215)\n"
" client settable attribute\n"
" client gettable attribute (current value is 2110)\n"
" \"XV_BRIGHTNESS\" (range -128 to 127)\n"
" client settable attribute\n"
" client gettable attribute (current value is 0)\n"
" \"XV_CONTRAST\" (range 0 to 255)\n"
" client settable attribute\n"
" client gettable attribute (current value is 128)\n"
" \"XV_SATURATION\" (range 0 to 255)\n"
" client settable attribute\n"
" client gettable attribute (current value is 128)\n"
" \"XV_HUE\" (range -180 to 180)\n"
" client settable attribute\n"
" client gettable attribute (current value is 0)\n"
" maximum XvImage size: 1024 x 1024\n"
" Number of image formats: 7\n"
" id: 0x32595559 (YUY2)\n"
" guid: 59555932-0000-0010-8000-00aa00389b71\n"
" bits per pixel: 16\n"
" number of planes: 1\n"
" type: YUV (packed)\n"
" id: 0x32315659 (YV12)\n"
" guid: 59563132-0000-0010-8000-00aa00389b71\n"
" bits per pixel: 12\n"
" number of planes: 3\n"
" type: YUV (planar)\n"
" id: 0x30323449 (I420)\n"
" guid: 49343230-0000-0010-8000-00aa00389b71\n"
" bits per pixel: 12\n"
" number of planes: 3\n"
" type: YUV (planar)\n"
" id: 0x36315652 (RV16)\n"
" guid: 52563135-0000-0000-0000-000000000000\n"
" bits per pixel: 16\n"
" number of planes: 1\n"
" type: RGB (packed)\n"
" depth: 0\n"
" red, green, blue masks: 0x1f, 0x3e0, 0x7c00\n"
" id: 0x35315652 (RV15)\n"
" guid: 52563136-0000-0000-0000-000000000000\n"
" bits per pixel: 16\n"
" number of planes: 1\n"
" type: RGB (packed)\n"
" depth: 0\n"
" red, green, blue masks: 0x1f, 0x7e0, 0xf800\n"
" id: 0x31313259 (Y211)\n"
" guid: 59323131-0000-0010-8000-00aa00389b71\n"
" bits per pixel: 6\n"
" number of planes: 3\n"
" type: YUV (packed)\n"
" id: 0x0\n"
" guid: 00000000-0000-0000-0000-000000000000\n"
" bits per pixel: 0\n"
" number of planes: 0\n"
" type: RGB (packed)\n"
" depth: 1\n"
" red, green, blue masks: 0x0, 0x0, 0x0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:680
msgid ""
"The formats listed, such as YUV2 and YUV12, are not present with every "
"implementation of XVideo and their absence may hinder some players."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:682
msgid "If the result instead looks like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:688
#, no-wrap
msgid ""
"X-Video Extension version 2.2\n"
"screen #0\n"
"no adaptors present\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:692
msgid ""
"XVideo is probably not supported for the card. This means that it will be "
"more difficult for the display to meet the computational demands of "
"rendering video, depending on the video card and processor."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:694
#, no-wrap
msgid "Ports and Packages Dealing with Video"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:697
msgid ""
"This section introduces some of the software available from the FreeBSD "
"Ports Collection which can be used for video playback."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/multimedia/_index.adoc:699
#, no-wrap
msgid "MPlayer and MEncoder"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:703
msgid ""
"MPlayer is a command-line video player with an optional graphical interface "
"which aims to provide speed and flexibility. Other graphical front-ends to "
"MPlayer are available from the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:707
msgid ""
"MPlayer can be installed using the package:multimedia/mplayer[] package or "
"port. Several compile options are available and a variety of hardware "
"checks occur during the build process. For these reasons, some users prefer "
"to build the port rather than install the package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:712
msgid ""
"When compiling the port, the menu options should be reviewed to determine "
"the type of support to compile into the port. If an option is not selected, "
"MPlayer will not be able to display that type of video format. Use the "
"arrow keys and spacebar to select the required formats. When finished, "
"press kbd:[Enter] to continue the port compile and installation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:716
msgid ""
"By default, the package or port will build the `mplayer` command line "
"utility and the `gmplayer` graphical utility. To encode videos, compile the "
"package:multimedia/mencoder[] port. Due to licensing restrictions, a "
"package is not available for MEncoder."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:719
msgid ""
"The first time MPlayer is run, it will create [.filename]#~/.mplayer# in the "
"user's home directory. This subdirectory contains default versions of the "
"user-specific configuration files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:722
msgid ""
"This section describes only a few common uses. Refer to mplayer(1) for a "
"complete description of its numerous options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:724
msgid ""
"To play the file [.filename]#testfile.avi#, specify the video interfaces "
"with `-vo`, as seen in the following examples:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:728
#, no-wrap
msgid "% mplayer -vo xv testfile.avi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:733
#, no-wrap
msgid "% mplayer -vo sdl testfile.avi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:738
#, no-wrap
msgid "% mplayer -vo x11 testfile.avi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:743
#, no-wrap
msgid "# mplayer -vo dga testfile.avi\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:748
#, no-wrap
msgid "# mplayer -vo 'sdl:dga' testfile.avi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:751
msgid ""
"It is worth trying all of these options, as their relative performance "
"depends on many factors and will vary significantly with hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:754
msgid ""
"To play a `DVD`, replace [.filename]#testfile.avi# with `dvd://_N_ -dvd-"
"device _DEVICE_`, where _N_ is the title number to play and _DEVICE_ is the "
"device node for the `DVD`. For example, to play title 3 from [.filename]#/"
"dev/dvd#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:758
#, no-wrap
msgid "# mplayer -vo xv dvd://3 -dvd-device /dev/dvd\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:764
msgid ""
"The default `DVD` device can be defined during the build of the MPlayer port "
"by including the `WITH_DVD_DEVICE=/path/to/desired/device` option. By "
"default, the device is [.filename]#/dev/cd0#. More details can be found in "
"the port's [.filename]#Makefile.options#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:768
msgid ""
"To stop, pause, advance, and so on, use a keybinding. To see the list of "
"keybindings, run `mplayer -h` or read mplayer(1)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:770
msgid ""
"Additional playback options include `-fs -zoom`, which engages fullscreen "
"mode, and `-framedrop`, which helps performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:772
msgid ""
"Each user can add commonly used options to their [.filename]#~/.mplayer/"
"config# like so:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:778
#, no-wrap
msgid ""
"vo=xv\n"
"fs=yes\n"
"zoom=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:782
msgid ""
"`mplayer` can be used to rip a `DVD` title to a [.filename]#.vob#. To dump "
"the second title from a `DVD`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:786
#, no-wrap
msgid "# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:789
msgid "The output file, [.filename]#out.vob#, will be in `MPEG` format."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:792
msgid ""
"Anyone wishing to obtain a high level of expertise with UNIX(R) video should "
"consult http://www.mplayerhq.hu/DOCS/[mplayerhq.hu/DOCS] as it is "
"technically informative. This documentation should be considered as "
"required reading before submitting any bug reports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:796
msgid ""
"Before using `mencoder`, it is a good idea to become familiar with the "
"options described at http://www.mplayerhq.hu/DOCS/HTML/en/mencoder."
"html[mplayerhq.hu/DOCS/HTML/en/mencoder.html]. There are innumerable ways "
"to improve quality, lower bitrate, and change formats, and some of these "
"options may make the difference between good or bad performance. Improper "
"combinations of command line options can yield output files that are "
"unplayable even by `mplayer`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:798
msgid "Here is an example of a simple copy:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:802
#, no-wrap
msgid "% mencoder input.avi -oac copy -ovc copy -o output.avi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:805
msgid "To rip to a file, use `-dumpfile` with `mplayer`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:809
msgid ""
"To convert [.filename]#input.avi# to the MPEG4 codec with MPEG3 audio "
"encoding, first install the package:audio/lame[] port. Due to licensing "
"restrictions, a package is not available. Once installed, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:814
#, no-wrap
msgid ""
"% mencoder input.avi -oac mp3lame -lameopts br=192 \\\n"
"\t -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:817
msgid ""
"This will produce output playable by applications such as `mplayer` and "
"`xine`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:820
msgid ""
"[.filename]#input.avi# can be replaced with `dvd://1 -dvd-device /dev/dvd` "
"and run as `root` to re-encode a `DVD` title directly. Since it may take a "
"few tries to get the desired result, it is recommended to instead dump the "
"title to a file and to work on the file."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/multimedia/_index.adoc:822
#, no-wrap
msgid "The xine Video Player"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:826
msgid ""
"xine is a video player with a reusable base library and a modular executable "
"which can be extended with plugins. It can be installed using the package:"
"multimedia/xine[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:829
msgid ""
"In practice, xine requires either a fast CPU with a fast video card, or "
"support for the XVideo extension. The xine video player performs best on "
"XVideo interfaces."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:832
msgid ""
"By default, the xine player starts a graphical user interface. The menus "
"can then be used to open a specific file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:834
msgid ""
"Alternatively, xine may be invoked from the command line by specifying the "
"name of the file to play:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:838
#, no-wrap
msgid "% xine -g -p mymovie.avi\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:841
msgid ""
"Refer to http://www.xine-project.org/faq[xine-project.org/faq] for more "
"information and troubleshooting tips."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/multimedia/_index.adoc:843
#, no-wrap
msgid "The Transcode Utilities"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:847
msgid ""
"Transcode provides a suite of tools for re-encoding video and audio files. "
"Transcode can be used to merge video files or repair broken files using "
"command line tools with stdin/stdout stream interfaces."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:853
msgid ""
"In FreeBSD, Transcode can be installed using the package:multimedia/"
"transcode[] package or port. Many users prefer to compile the port as it "
"provides a menu of compile options for specifying the support and codecs to "
"compile in. If an option is not selected, Transcode will not be able to "
"encode that format. Use the arrow keys and spacebar to select the required "
"formats. When finished, press kbd:[Enter] to continue the port compile and "
"installation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:855
msgid ""
"This example demonstrates how to convert a DivX file into a PAL MPEG-1 file "
"(PAL VCD):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:860
#, no-wrap
msgid ""
"% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd\n"
"% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:864
msgid ""
"The resulting `MPEG` file, [.filename]#output_vcd.mpg#, is ready to be "
"played with MPlayer. The file can be burned on a `CD` media to create a "
"video `CD` using a utility such as package:multimedia/vcdimager[] or package:"
"sysutils/cdrdao[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:866
msgid ""
"In addition to the manual page for `transcode`, refer to http://www."
"transcoding.org/cgi-bin/transcode[transcoding.org/cgi-bin/transcode] for "
"further information and examples."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:868
#, no-wrap
msgid "TV Cards"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:872
msgid ""
"TV cards can be used to watch broadcast or cable TV on a computer. Most "
"cards accept composite video via an `RCA` or S-video input and some cards "
"include a `FM` radio tuner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:876
msgid ""
"FreeBSD provides support for PCI-based TV cards using a Brooktree "
"Bt848/849/878/879 video capture chip with the man:bktr[4] driver. This "
"driver supports most Pinnacle PCTV video cards. Before purchasing a TV "
"card, consult man:bktr[4] for a list of supported tuners."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:877
#, no-wrap
msgid "Loading the Driver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:881
msgid ""
"In order to use the card, the man:bktr[4] driver must be loaded. To "
"automate this at boot time, add the following line to [.filename]#/boot/"
"loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:885
#, no-wrap
msgid "bktr_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:889
msgid ""
"Alternatively, one can statically compile support for the TV card into a "
"custom kernel. In that case, add the following lines to the custom kernel "
"configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:896
#, no-wrap
msgid ""
"device\t bktr\n"
"device\tiicbus\n"
"device\tiicbb\n"
"device\tsmbus\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:900
msgid ""
"These additional devices are necessary as the card components are "
"interconnected via an I2C bus. Then, build and install a new kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:903
msgid ""
"To test that the tuner is correctly detected, reboot the system. The TV "
"card should appear in the boot messages, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:912
#, no-wrap
msgid ""
"bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0\n"
"iicbb0: <I2C bit-banging driver> on bti2c0\n"
"iicbus0: <Philips I2C bus> on iicbb0 master-only\n"
"iicbus1: <Philips I2C bus> on iicbb0 master-only\n"
"smbus0: <System Management Bus> on bti2c0\n"
"bktr0: Pinnacle/Miro TV, Philips SECAM tuner.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:917
msgid ""
"The messages will differ according to the hardware. If necessary, it is "
"possible to override some of the detected parameters using man:sysctl[8] or "
"custom kernel configuration options. For example, to force the tuner to a "
"Philips SECAM tuner, add the following line to a custom kernel configuration "
"file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:921
#, no-wrap
msgid "options OVERRIDE_TUNER=6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:924
msgid "or, use man:sysctl[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:928
#, no-wrap
msgid "# sysctl hw.bt848.tuner=6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:931
msgid ""
"Refer to man:bktr[4] for a description of the available man:sysctl[8] "
"parameters and kernel options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:932
#, no-wrap
msgid "Useful Applications"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:935
msgid "To use the TV card, install one of the following applications:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:937
msgid ""
"package:multimedia/fxtv[] provides TV-in-a-window and image/audio/video "
"capture capabilities."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:938
msgid ""
"package:multimedia/xawtv[] is another TV application with similar features."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:939
msgid ""
"package:audio/xmradio[] provides an application for using the FM radio tuner "
"of a TV card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:941
msgid "More applications are available in the FreeBSD Ports Collection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:942
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:946
msgid ""
"If any problems are encountered with the TV card, check that the video "
"capture chip and the tuner are supported by man:bktr[4] and that the right "
"configuration options were used. For more support or to ask questions about "
"supported TV cards, refer to the {freebsd-multimedia} mailing list."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:948
#, no-wrap
msgid "MythTV"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:953
msgid ""
"MythTV is a popular, open source Personal Video Recorder (`PVR`) "
"application. This section demonstrates how to install and setup MythTV on "
"FreeBSD. Refer to http://www.mythtv.org/wiki/[mythtv.org/wiki] for more "
"information on how to use MythTV."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:956
msgid ""
"MythTV requires a frontend and a backend. These components can either be "
"installed on the same system or on different machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:960
msgid ""
"The frontend can be installed on FreeBSD using the package:multimedia/mythtv-"
"frontend[] package or port. Xorg must also be installed and configured as "
"described in crossref:x11[x11,The X Window System]. Ideally, this system "
"has a video card that supports X-Video Motion Compensation (`XvMC`) and, "
"optionally, a Linux Infrared Remote Control (`LIRC`)-compatible remote."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:964
msgid ""
"To install both the backend and the frontend on FreeBSD, use the package:"
"multimedia/mythtv[] package or port. A MySQL(TM) database server is also "
"required and should automatically be installed as a dependency. Optionally, "
"this system should have a tuner card and sufficient storage to hold recorded "
"data."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:965
#, no-wrap
msgid "Hardware"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:973
msgid ""
"MythTV uses Video for Linux (`V4L`) to access video input devices such as "
"encoders and tuners. In FreeBSD, MythTV works best with `USB` DVB-S/C/T "
"cards as they are well supported by the package:multimedia/webcamd[] package "
"or port which provides a `V4L` userland application. Any Digital Video "
"Broadcasting (`DVB`) card supported by webcamd should work with MythTV. A "
"list of known working cards can be found at https://wiki.freebsd.org/"
"WebcamCompat[wiki.freebsd.org/WebcamCompat]. Drivers are also available for "
"Hauppauge cards in the package:multimedia/pvr250[] and package:multimedia/"
"pvrxxx[] ports, but they provide a non-standard driver interface that does "
"not work with versions of MythTV greater than 0.23. Due to licensing "
"restrictions, no packages are available and these two ports must be compiled."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:975
msgid ""
"The https://wiki.freebsd.org/HTPC[wiki.freebsd.org/HTPC] page contains a "
"list of all available `DVB` drivers."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:976
#, no-wrap
msgid "Setting up the MythTV Backend"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:979
msgid "To install MythTV using binary packages:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:983
#, no-wrap
msgid "# pkg install mythtv\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:986
msgid "Alternatively, to install from the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:991
#, no-wrap
msgid ""
"# cd /usr/ports/multimedia/mythtv\n"
"# make install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:994
msgid "Once installed, set up the MythTV database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:998
#, no-wrap
msgid "# mysql -uroot -p < /usr/local/share/mythtv/database/mc.sql\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1001
msgid "Then, configure the backend:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1005
#, no-wrap
msgid "# mythtv-setup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1008
msgid "Finally, start the backend:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1013
#, no-wrap
msgid ""
"# sysrc mythbackend_enable=yes\n"
"# service mythbackend start\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1016
#, no-wrap
msgid "Image Scanners"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1020
msgid ""
"In FreeBSD, access to image scanners is provided by SANE (Scanner Access Now "
"Easy), which is available in the FreeBSD Ports Collection. SANE will also "
"use some FreeBSD device drivers to provide access to the scanner hardware."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1025
msgid ""
"FreeBSD supports both `SCSI` and `USB` scanners. Depending upon the scanner "
"interface, different device drivers are required. Be sure the scanner is "
"supported by SANE prior to performing any configuration. Refer to http://"
"www.sane-project.org/sane-supported-devices.html[http://www.sane-project.org/"
"sane-supported-devices.html] for more information about supported scanners."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1028
msgid ""
"This chapter describes how to determine if the scanner has been detected by "
"FreeBSD. It then provides an overview of how to configure and use SANE on a "
"FreeBSD system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1030
#, no-wrap
msgid "Checking the Scanner"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1034
msgid ""
"The [.filename]#GENERIC# kernel includes the device drivers needed to "
"support `USB` scanners. Users with a custom kernel should ensure that the "
"following lines are present in the custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1042
#, no-wrap
msgid ""
"device usb\n"
"device uhci\n"
"device ohci\n"
"device ehci\n"
"device xhci\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1046
msgid ""
"To determine if the `USB` scanner is detected, plug it in and use `dmesg` to "
"determine whether the scanner appears in the system message buffer. If it "
"does, it should display a message similar to this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1050
#, no-wrap
msgid "ugen0.2: <EPSON> at usbus0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1053
msgid ""
"In this example, an EPSON Perfection(R) 1650 `USB` scanner was detected on [."
"filename]#/dev/ugen0.2#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1059
msgid ""
"If the scanner uses a `SCSI` interface, it is important to know which `SCSI` "
"controller board it will use. Depending upon the `SCSI` chipset, a custom "
"kernel configuration file may be needed. The [.filename]#GENERIC# kernel "
"supports the most common `SCSI` controllers. Refer to [.filename]#/usr/src/"
"sys/conf/NOTES# to determine the correct line to add to a custom kernel "
"configuration file. In addition to the `SCSI` adapter driver, the following "
"lines are needed in a custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1064
#, no-wrap
msgid ""
"device scbus\n"
"device pass\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1067
msgid "Verify that the device is displayed in the system message buffer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1073
#, no-wrap
msgid ""
"pass2 at aic0 bus 0 target 2 lun 0\n"
"pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device\n"
"pass2: 3.300MB/s transfers\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1076
msgid ""
"If the scanner was not powered-on at system boot, it is still possible to "
"manually force detection by performing a `SCSI` bus scan with `camcontrol`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1084
#, no-wrap
msgid ""
"# camcontrol rescan all\n"
"Re-scan of bus 0 was successful\n"
"Re-scan of bus 1 was successful\n"
"Re-scan of bus 2 was successful\n"
"Re-scan of bus 3 was successful\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1087
msgid "The scanner should now appear in the `SCSI` devices list:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1095
#, no-wrap
msgid ""
"# camcontrol devlist\n"
"<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)\n"
"<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)\n"
"<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)\n"
"<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1098
msgid ""
"Refer to man:scsi[4] and man:camcontrol[8] for more details about `SCSI` "
"devices on FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1099
#, no-wrap
msgid "SANE Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1105
msgid ""
"The SANE system provides the access to the scanner via backends (package:"
"graphics/sane-backends[]). Refer to http://www.sane-project.org/sane-"
"supported-devices.html[http://www.sane-project.org/sane-supported-devices."
"html] to determine which backend supports the scanner. A graphical scanning "
"interface is provided by third party applications like Kooka (package:"
"graphics/kooka[]) or XSane (package:graphics/xsane[]). SANE's backends are "
"enough to test the scanner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1107
msgid "To install the backends from binary package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1111
#, no-wrap
msgid "# pkg install sane-backends\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1114
msgid "Alternatively, to install from the Ports Collection"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1119
#, no-wrap
msgid ""
"# cd /usr/ports/graphics/sane-backends\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1122
msgid ""
"After installing the package:graphics/sane-backends[] port or package, use "
"`sane-find-scanner` to check the scanner detection by the SANE system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1127
#, no-wrap
msgid ""
"# sane-find-scanner -q\n"
"found SCSI scanner \"AGFA SNAPSCAN 600 1.10\" at /dev/pass3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1131
msgid ""
"The output should show the interface type of the scanner and the device node "
"used to attach the scanner to the system. The vendor and the product model "
"may or may not appear."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1136
msgid ""
"Some `USB` scanners require firmware to be loaded. Refer to sane-find-"
"scanner(1) and sane(7) for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1142
msgid ""
"Next, check if the scanner will be identified by a scanning frontend. The "
"SANE backends include `scanimage` which can be used to list the devices and "
"perform an image acquisition. Use `-L` to list the scanner devices. The "
"first example is for a `SCSI` scanner and the second is for a `USB` scanner:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1147
#, no-wrap
msgid ""
"# scanimage -L\n"
"device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1150
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1181
#, no-wrap
msgid ""
"# scanimage -L\n"
"device 'epson2:libusb:000:002' is a Epson GT-8200 flatbed scanner\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1153
msgid ""
"In this second example, `epson2` is the backend name and `libusb:000:002` "
"means [.filename]#/dev/ugen0.2# is the device node used by the scanner."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1155
msgid ""
"If `scanimage` is unable to identify the scanner, this message will appear:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1163
#, no-wrap
msgid ""
"# scanimage -L\n"
"No scanners were identified. If you were expecting something different,\n"
"check that the scanner is plugged in, turned on and detected by the\n"
"sane-find-scanner tool (if appropriate). Please read the documentation\n"
"which came with this software (README, FAQ, manpages).\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1169
msgid ""
"If this happens, edit the backend configuration file in [.filename]#/usr/"
"local/etc/sane.d/# and define the scanner device used. For example, if the "
"undetected scanner model is an EPSON Perfection(R) 1650 and it uses the "
"`epson2` backend, edit [.filename]#/usr/local/etc/sane.d/epson2.conf#. When "
"editing, add a line specifying the interface and the device node used. In "
"this case, add the following line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1173
#, no-wrap
msgid "usb /dev/ugen0.2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1176
msgid ""
"Save the edits and verify that the scanner is identified with the right "
"backend name and the device node:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1184
msgid ""
"Once `scanimage -L` sees the scanner, the configuration is complete and the "
"scanner is now ready to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1189
msgid ""
"While `scanimage` can be used to perform an image acquisition from the "
"command line, it is often preferable to use a graphical interface to perform "
"image scanning. Applications like Kooka or XSane are popular scanning "
"frontends. They offer advanced features such as various scanning modes, "
"color correction, and batch scans. XSane is also usable as a GIMP plugin."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1190
#, no-wrap
msgid "Scanner Permissions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1197
msgid ""
"In order to have access to the scanner, a user needs read and write "
"permissions to the device node used by the scanner. In the previous "
"example, the `USB` scanner uses the device node [.filename]#/dev/ugen0.2# "
"which is really a symlink to the real device node [.filename]#/dev/"
"usb/0.2.0#. The symlink and the device node are owned, respectively, by the "
"`wheel` and `operator` groups. While adding the user to these groups will "
"allow access to the scanner, it is considered insecure to add a user to "
"`wheel`. A better solution is to create a group and make the scanner device "
"accessible to members of this group."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1199
msgid "This example creates a group called `_usb_`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1203
#, no-wrap
msgid "# pw groupadd usb\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1206
msgid ""
"Then, make the [.filename]#/dev/ugen0.2# symlink and the [.filename]#/dev/"
"usb/0.2.0# device node accessible to the `usb` group with write permissions "
"of `0660` or `0664` by adding the following lines to [.filename]#/etc/devfs."
"rules#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1212
#, no-wrap
msgid ""
"[system=5]\n"
"add path ugen0.2 mode 0660 group usb\n"
"add path usb/0.2.0 mode 0666 group usb\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1217
msgid ""
"It happens the device node changes with the addition or removal of devices, "
"so one may want to give access to all USB devices using this ruleset instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1223
#, no-wrap
msgid ""
"[system=5]\n"
"add path 'ugen*' mode 0660 group usb\n"
"add path 'usb/*' mode 0666 group usb\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1228
msgid "Refer to man:devfs.rules[5] for more information about this file."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1230
msgid "Next, enable the ruleset in /etc/rc.conf:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1234
#, no-wrap
msgid "devfs_system_ruleset=\"system\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1237
msgid "And, restart the man:devfs[8] system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1241
#, no-wrap
msgid "# service devfs restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1244
msgid ""
"Finally, add the users to `_usb_` in order to allow access to the scanner:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1248
#, no-wrap
msgid "# pw groupmod usb -m joe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/multimedia/_index.adoc:1250
msgid "For more details refer to man:pw[8]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/network-servers/_index.po b/documentation/content/en/books/handbook/network-servers/_index.po
index 1c90abdd19..af36f74015 100644
--- a/documentation/content/en/books/handbook/network-servers/_index.po
+++ b/documentation/content/en/books/handbook/network-servers/_index.po
@@ -1,6320 +1,6321 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1
#, no-wrap
msgid "This chapter covers some of the more frequently used network services on UNIX systems"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1
#, no-wrap
-msgid "Chapter 30. Network Servers"
+msgid "Chapter 31. Network Servers"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/network-servers/_index.adoc:15
#, no-wrap
msgid "Network Servers"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:58
msgid ""
"This chapter covers some of the more frequently used network services on "
"UNIX(R) systems. This includes installing, configuring, testing, and "
"maintaining many different types of network services. Example configuration "
"files are included throughout this chapter for reference."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:60
msgid "By the end of this chapter, readers will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:62
msgid "How to manage the inetd daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:63
msgid "How to set up the Network File System (NFS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:64
msgid ""
"How to set up the Network Information Server (NIS) for centralizing and "
"sharing user accounts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:65
msgid "How to set FreeBSD up to act as an LDAP server or client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:66
msgid "How to set up automatic network settings using DHCP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:67
msgid "How to set up a Domain Name Server (DNS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:68
msgid "How to set up the Apache HTTP Server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:69
msgid "How to set up a File Transfer Protocol (FTP) server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:70
msgid ""
"How to set up a file and print server for Windows(R) clients using Samba."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:71
msgid ""
"How to synchronize the time and date, and set up a time server using the "
"Network Time Protocol (NTP)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:72
msgid "How to set up iSCSI."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:74
msgid "This chapter assumes a basic knowledge of:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:76
msgid "[.filename]#/etc/rc# scripts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:77
msgid "Network terminology."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:78
msgid ""
"Installation of additional third-party software (crossref:ports[ports,"
"Installing Applications: Packages and Ports])."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:80
#, no-wrap
msgid "The inetd Super-Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:86
msgid ""
"The man:inetd[8] daemon is sometimes referred to as a Super-Server because "
"it manages connections for many services. Instead of starting multiple "
"applications, only the inetd service needs to be started. When a connection "
"is received for a service that is managed by inetd, it determines which "
"program the connection is destined for, spawns a process for that program, "
"and delegates the program a socket. Using inetd for services that are not "
"heavily used can reduce system load, when compared to running each daemon "
"individually in stand-alone mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:88
msgid ""
"Primarily, inetd is used to spawn other daemons, but several trivial "
"protocols are handled internally, such as chargen, auth, time, echo, "
"discard, and daytime."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:90
msgid "This section covers the basics of configuring inetd."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:92
#, no-wrap
msgid "Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:98
msgid ""
"Configuration of inetd is done by editing [.filename]#/etc/inetd.conf#. "
"Each line of this configuration file represents an application which can be "
-"started by inetd. By default, every line starts with a comment (`#`), "
+"started by inetd. By default, every line starts with a comment (`+#+`), "
"meaning that inetd is not listening for any applications. To configure "
-"inetd to listen for an application's connections, remove the `#` at the "
+"inetd to listen for an application's connections, remove the `+#+` at the "
"beginning of the line for that application."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:100
msgid ""
"After saving your edits, configure inetd to start at system boot by editing "
"[.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:104
#, no-wrap
msgid "inetd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:107
msgid ""
"To start inetd now, so that it listens for the service you configured, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:111
#, no-wrap
msgid "# service inetd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:114
msgid ""
"Once inetd is started, it needs to be notified whenever a modification is "
"made to [.filename]#/etc/inetd.conf#:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:116
#, no-wrap
msgid "Reloading the inetd Configuration File"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:123
#, no-wrap
msgid "# service inetd reload\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:129
msgid ""
"Typically, the default entry for an application does not need to be edited "
-"beyond removing the `#`. In some situations, it may be appropriate to edit "
-"the default entry."
+"beyond removing the `+#+`. In some situations, it may be appropriate to "
+"edit the default entry."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:131
msgid "As an example, this is the default entry for man:ftpd[8] over IPv4:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:135
#, no-wrap
msgid "ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:138
msgid "The seven columns in an entry are as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:148
#, no-wrap
msgid ""
"service-name\n"
"socket-type\n"
"protocol\n"
"{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]\n"
"user[:group][/login-class]\n"
"server-program\n"
"server-program-arguments\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:151
msgid "where:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:152
#, no-wrap
msgid "service-name"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:157
msgid ""
"The service name of the daemon to start. It must correspond to a service "
"listed in [.filename]#/etc/services#. This determines which port inetd "
"listens on for incoming connections to that service. When using a custom "
"service, it must first be added to [.filename]#/etc/services#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:158
#, no-wrap
msgid "socket-type"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:161
msgid ""
"Either `stream`, `dgram`, `raw`, or `seqpacket`. Use `stream` for TCP "
"connections and `dgram` for UDP services."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:162
#, no-wrap
msgid "protocol"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:164
msgid "Use one of the following protocol names:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:169
#, no-wrap
msgid "Protocol Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:172
#, no-wrap
msgid "Explanation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:173
#, no-wrap
msgid "tcp or tcp4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:175
#, no-wrap
msgid "TCP IPv4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:176
#, no-wrap
msgid "udp or udp4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:178
#, no-wrap
msgid "UDP IPv4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:179
#, no-wrap
msgid "tcp6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:181
#, no-wrap
msgid "TCP IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:182
#, no-wrap
msgid "udp6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:184
#, no-wrap
msgid "UDP IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:185
#, no-wrap
msgid "tcp46"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:187
#, no-wrap
msgid "Both TCP IPv4 and IPv6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:188
#, no-wrap
msgid "udp46"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:189
#, no-wrap
msgid "Both UDP IPv4 and IPv6"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:194
msgid ""
"{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-"
"ip]]]:: In this field, `wait` or `nowait` must be specified. `max-child`, "
"`max-connections-per-ip-per-minute` and `max-child-per-ip` are optional."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:198
msgid ""
"`wait|nowait` indicates whether or not the service is able to handle its own "
"socket. `dgram` socket types must use `wait` while `stream` daemons, which "
"are usually multi-threaded, should use `nowait`. `wait` usually hands off "
"multiple sockets to a single daemon, while `nowait` spawns a child daemon "
"for each new socket."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:202
msgid ""
"The maximum number of child daemons inetd may spawn is set by `max-child`. "
"For example, to limit ten instances of the daemon, place a `/10` after "
"`nowait`. Specifying `/0` allows an unlimited number of children."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:208
msgid ""
"`max-connections-per-ip-per-minute` limits the number of connections from "
"any particular IP address per minute. Once the limit is reached, further "
"connections from this IP address will be dropped until the end of the "
"minute. For example, a value of `/10` would limit any particular IP address "
"to ten connection attempts per minute. `max-child-per-ip` limits the number "
"of child processes that can be started on behalf on any single IP address at "
"any moment. These options can limit excessive resource consumption and help "
"to prevent Denial of Service attacks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:210
msgid "An example can be seen in the default settings for man:fingerd[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:214
#, no-wrap
msgid "finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -k -s\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:216
#, no-wrap
msgid "user"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:219
msgid ""
"The username the daemon will run as. Daemons typically run as `root`, "
"`daemon`, or `nobody`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:220
#, no-wrap
msgid "server-program"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:223
msgid ""
"The full path to the daemon. If the daemon is a service provided by inetd "
"internally, use `internal`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:224
#, no-wrap
msgid "server-program-arguments"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:227
msgid ""
"Used to specify any command arguments to be passed to the daemon on "
"invocation. If the daemon is an internal service, use `internal`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:229
#, no-wrap
msgid "Command-Line Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:234
msgid ""
"Like most server daemons, inetd has a number of options that can be used to "
"modify its behavior. By default, inetd is started with `-wW -C 60`. These "
"options enable TCP wrappers for all services, including internal services, "
"and prevent any IP address from requesting any service more than 60 times "
"per minute."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:237
msgid ""
"To change the default options which are passed to inetd, add an entry for "
"`inetd_flags` in [.filename]#/etc/rc.conf#. If inetd is already running, "
"restart it with `service inetd restart`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:239
msgid "The available rate limiting options are:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:240
#, no-wrap
msgid "-c maximum"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:243
msgid ""
"Specify the default maximum number of simultaneous invocations of each "
"service, where the default is unlimited. May be overridden on a per-service "
"basis by using `max-child` in [.filename]#/etc/inetd.conf#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:244
#, no-wrap
msgid "-C rate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:247
msgid ""
"Specify the default maximum number of times a service can be invoked from a "
"single IP address per minute. May be overridden on a per-service basis by "
"using `max-connections-per-ip-per-minute` in [.filename]#/etc/inetd.conf#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:248
#, no-wrap
msgid "-R rate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:251
msgid ""
"Specify the maximum number of times a service can be invoked in one minute, "
"where the default is `256`. A rate of `0` allows an unlimited number."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:252
#, no-wrap
msgid "-s maximum"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:255
msgid ""
"Specify the maximum number of times a service can be invoked from a single "
"IP address at any one time, where the default is unlimited. May be "
"overridden on a per-service basis by using `max-child-per-ip` in [."
"filename]#/etc/inetd.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:257
msgid ""
"Additional options are available. Refer to man:inetd[8] for the full list of "
"options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:259
#, no-wrap
msgid "Security Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:265
msgid ""
"Many of the daemons which can be managed by inetd are not security-"
"conscious. Some daemons, such as fingerd, can provide information that may "
"be useful to an attacker. Only enable the services which are needed and "
"monitor the system for excessive connection attempts. `max-connections-per-"
"ip-per-minute`, `max-child` and `max-child-per-ip` can be used to limit such "
"attacks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:268
msgid ""
"By default, TCP wrappers are enabled. Consult man:hosts_access[5] for more "
"information on placing TCP restrictions on various inetd invoked daemons."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:270
#, no-wrap
msgid "Network File System (NFS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:274
msgid ""
"FreeBSD supports the Network File System (NFS), which allows a server to "
"share directories and files with clients over a network. With NFS, users "
"and programs can access files on remote systems as if they were stored "
"locally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:277
msgid "NFS has many practical uses. Some of the more common uses include:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:279
msgid ""
"Data that would otherwise be duplicated on each client can be kept in a "
"single location and accessed by clients on the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:280
msgid ""
"Several clients may need access to the [.filename]#/usr/ports/distfiles# "
"directory. Sharing that directory allows for quick access to the source "
"files without having to download them to each client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:281
msgid ""
"On large networks, it is often more convenient to configure a central NFS "
"server on which all user home directories are stored. Users can log into a "
"client anywhere on the network and have access to their home directories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:282
msgid ""
"Administration of NFS exports is simplified. For example, there is only one "
"file system where security or backup policies must be set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:283
msgid ""
"Removable media storage devices can be used by other machines on the "
"network. This reduces the number of devices throughout the network and "
"provides a centralized location to manage their security. It is often more "
"convenient to install software on multiple machines from a centralized "
"installation media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:287
msgid ""
"NFS consists of a server and one or more clients. The client remotely "
"accesses the data that is stored on the server machine. In order for this "
"to function properly, a few processes have to be configured and running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:289
msgid "These daemons must be running on the server:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:294
#, no-wrap
msgid "Daemon"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:297
#: documentation/content/en/books/handbook/network-servers/_index.adoc:559
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1008
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1027
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:298
#, no-wrap
msgid "nfsd"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:300
#, no-wrap
msgid "The NFS daemon which services requests from NFS clients."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:301
#, no-wrap
msgid "mountd"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:303
#, no-wrap
msgid "The NFS mount daemon which carries out requests received from nfsd."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:304
#, no-wrap
msgid "rpcbind"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:305
#, no-wrap
msgid "This daemon allows NFS clients to discover which port the NFS server is using."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:308
msgid ""
"Running man:nfsiod[8] on the client can improve performance, but is not "
"required."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:310
#, no-wrap
msgid "Configuring the Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:316
msgid ""
"The file systems which the NFS server will share are specified in [."
"filename]#/etc/exports#. Each line in this file specifies a file system to "
"be exported, which clients have access to that file system, and any access "
"options. When adding entries to this file, each exported file system, its "
"properties, and allowed hosts must occur on a single line. If no clients "
"are listed in the entry, then any client on the network can mount that file "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:321
msgid ""
"The following [.filename]#/etc/exports# entries demonstrate how to export "
"file systems. The examples can be modified to match the file systems and "
"client names on the reader's network. There are many options that can be "
"used in this file, but only a few will be mentioned here. See man:"
"exports[5] for the full list of options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:323
msgid ""
"This example shows how to export [.filename]#/cdrom# to three hosts named "
"_alpha_, _bravo_, and _charlie_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:327
#, no-wrap
msgid "/cdrom -ro alpha bravo charlie\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:332
msgid ""
"The `-ro` flag makes the file system read-only, preventing clients from "
"making any changes to the exported file system. This example assumes that "
"the host names are either in DNS or in [.filename]#/etc/hosts#. Refer to "
"man:hosts[5] if the network does not have a DNS server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:337
msgid ""
"The next example exports [.filename]#/home# to three clients by IP address. "
"This can be useful for networks without DNS or [.filename]#/etc/hosts# "
"entries. The `-alldirs` flag allows subdirectories to be mount points. In "
"other words, it will not automatically mount the subdirectories, but will "
"permit the client to mount the directories that are required as needed."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:341
#, no-wrap
msgid "/usr/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:346
msgid ""
"This next example exports [.filename]#/a# so that two clients from different "
"domains may access that file system. The `-maproot=root` allows `root` on "
"the remote system to write data on the exported file system as `root`. If `-"
"maproot=root` is not specified, the client's `root` user will be mapped to "
"the server's `nobody` account and will be subject to the access limitations "
"defined for `nobody`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:350
#, no-wrap
msgid "/a -maproot=root host.example.com box.example.org\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:354
msgid ""
"A client can only be specified once per file system. For example, if [."
"filename]#/usr# is a single file system, these entries would be invalid as "
"both entries specify the same host:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:360
#, no-wrap
msgid ""
"# Invalid when /usr is one file system\n"
"/usr/src client\n"
"/usr/ports client\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:363
msgid "The correct format for this situation is to use one entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:367
#, no-wrap
msgid "/usr/src /usr/ports client\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:370
msgid ""
"The following is an example of a valid export list, where [.filename]#/usr# "
"and [.filename]#/exports# are local file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:381
#, no-wrap
msgid ""
"# Export src and ports to client01 and client02, but only\n"
"# client01 has root privileges on it\n"
"/usr/src /usr/ports -maproot=root client01\n"
"/usr/src /usr/ports client02\n"
"# The client machines have root and can mount anywhere\n"
"# on /exports. Anyone in the world can mount /exports/obj read-only\n"
"/exports -alldirs -maproot=root client01 client02\n"
"/exports/obj -ro\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:384
msgid ""
"To enable the processes required by the NFS server at boot time, add these "
"options to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:390
#, no-wrap
msgid ""
"rpcbind_enable=\"YES\"\n"
"nfs_server_enable=\"YES\"\n"
"mountd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:393
msgid "The server can be started now by running this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:397
#, no-wrap
msgid "# service nfsd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:402
msgid ""
"Whenever the NFS server is started, mountd also starts automatically. "
"However, mountd only reads [.filename]#/etc/exports# when it is started. To "
"make subsequent [.filename]#/etc/exports# edits take effect immediately, "
"force mountd to reread it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:406
#, no-wrap
msgid "# service mountd reload\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:409
msgid "Refer to man:nfsv4[4] for a description of an NFS Version 4 setup."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:410
#, no-wrap
msgid "Configuring the Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:413
msgid ""
"To enable NFS clients, set this option in each client's [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:417
#, no-wrap
msgid "nfs_client_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:420
msgid "Then, run this command on each NFS client:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:424
#, no-wrap
msgid "# service nfsclient start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:429
msgid ""
"The client now has everything it needs to mount a remote file system. In "
"these examples, the server's name is `server` and the client's name is "
"`client`. To mount [.filename]#/home# on `server` to the [.filename]#/mnt# "
"mount point on `client`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:433
#, no-wrap
msgid "# mount server:/home /mnt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:436
msgid ""
"The files and directories in [.filename]#/home# will now be available on "
"`client`, in the [.filename]#/mnt# directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:438
msgid ""
"To mount a remote file system each time the client boots, add it to [."
"filename]#/etc/fstab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:442
#, no-wrap
msgid "server:/home\t/mnt\tnfs\trw\t0\t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:445
msgid "Refer to man:fstab[5] for a description of all available options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:446
#, no-wrap
msgid "Locking"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:450
msgid ""
"Some applications require file locking to operate correctly. To enable "
"locking, add these lines to [.filename]#/etc/rc.conf# on both the client and "
"server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:455
#, no-wrap
msgid ""
"rpc_lockd_enable=\"YES\"\n"
"rpc_statd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:458
msgid "Then start the applications:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:463
#, no-wrap
msgid ""
"# service lockd start\n"
"# service statd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:467
msgid ""
"If locking is not required on the server, the NFS client can be configured "
"to lock locally by including `-L` when running mount. Refer to man:"
"mount_nfs[8] for further details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:469
#, no-wrap
msgid "Automating Mounts with man:autofs[5]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:476
msgid ""
"The man:autofs[5] automount facility is supported starting with FreeBSD 10.1-"
"RELEASE. To use the automounter functionality in older versions of FreeBSD, "
"use man:amd[8] instead. This chapter only describes the man:autofs[5] "
"automounter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:482
msgid ""
"The man:autofs[5] facility is a common name for several components that, "
"together, allow for automatic mounting of remote and local filesystems "
"whenever a file or directory within that file system is accessed. It "
"consists of the kernel component, man:autofs[5], and several userspace "
"applications: man:automount[8], man:automountd[8] and man:autounmountd[8]. "
"It serves as an alternative for man:amd[8] from previous FreeBSD releases. "
"amd is still provided for backward compatibility purposes, as the two use "
"different map formats; the one used by autofs is the same as with other SVR4 "
"automounters, such as the ones in Solaris, MacOS X, and Linux."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:484
msgid ""
"The man:autofs[5] virtual filesystem is mounted on specified mountpoints by "
"man:automount[8], usually invoked during boot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:488
msgid ""
"Whenever a process attempts to access a file within the man:autofs[5] "
"mountpoint, the kernel will notify man:automountd[8] daemon and pause the "
"triggering process. The man:automountd[8] daemon will handle kernel "
"requests by finding the proper map and mounting the filesystem according to "
"it, then signal the kernel to release blocked process. The man:"
"autounmountd[8] daemon automatically unmounts automounted filesystems after "
"some time, unless they are still being used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:491
msgid ""
"The primary autofs configuration file is [.filename]#/etc/auto_master#. It "
"assigns individual maps to top-level mounts. For an explanation of [."
"filename]#auto_master# and the map syntax, refer to man:auto_master[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:495
msgid ""
"There is a special automounter map mounted on [.filename]#/net#. When a "
"file is accessed within this directory, man:autofs[5] looks up the "
"corresponding remote mount and automatically mounts it. For instance, an "
"attempt to access a file within [.filename]#/net/foobar/usr# would tell man:"
"automountd[8] to mount the [.filename]#/usr# export from the host `foobar`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:496
#, no-wrap
msgid "Mounting an Export with man:autofs[5]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:500
msgid ""
"In this example, `showmount -e` shows the exported file systems that can be "
"mounted from the NFS server, `foobar`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:508
#, no-wrap
msgid ""
"% showmount -e foobar\n"
"Exports list on foobar:\n"
"/usr 10.10.10.0\n"
"/a 10.10.10.0\n"
"% cd /net/foobar/usr\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:515
msgid ""
"The output from `showmount` shows [.filename]#/usr# as an export. When "
"changing directories to [.filename]#/host/foobar/usr#, man:automountd[8] "
"intercepts the request and attempts to resolve the hostname `foobar`. If "
"successful, man:automountd[8] automatically mounts the source export."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:517
msgid ""
"To enable man:autofs[5] at boot time, add this line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:521
#, no-wrap
msgid "autofs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:524
msgid "Then man:autofs[5] can be started by running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:530
#, no-wrap
msgid ""
"# service automount start\n"
"# service automountd start\n"
"# service autounmountd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:534
msgid ""
"The man:autofs[5] map format is the same as in other operating systems. "
"Information about this format from other sources can be useful, like the "
"http://web.archive.org/web/20160813071113/http://images.apple.com/business/"
"docs/Autofs.pdf[Mac OS X document]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:536
msgid ""
"Consult the man:automount[8], man:automountd[8], man:autounmountd[8], and "
"man:auto_master[5] manual pages for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:538
#, no-wrap
msgid "Network Information System (NIS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:543
msgid ""
"Network Information System (NIS) is designed to centralize administration of "
"UNIX(R)-like systems such as Solaris(TM), HP-UX, AIX(R), Linux, NetBSD, "
"OpenBSD, and FreeBSD. NIS was originally known as Yellow Pages but the name "
"was changed due to trademark issues. This is the reason why NIS commands "
"begin with `yp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:546
msgid ""
"NIS is a Remote Procedure Call (RPC)-based client/server system that allows "
"a group of machines within an NIS domain to share a common set of "
"configuration files. This permits a system administrator to set up NIS "
"client systems with only minimal configuration data and to add, remove, or "
"modify configuration data from a single location."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:548
msgid "FreeBSD uses version 2 of the NIS protocol."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:549
#, no-wrap
msgid "NIS Terms and Processes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:552
msgid "Table 28.1 summarizes the terms and important processes used by NIS:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:553
#, no-wrap
msgid "NIS Terminology"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:557
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1896
#, no-wrap
msgid "Term"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:560
#, no-wrap
msgid "NIS domain name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:562
#, no-wrap
msgid "NIS servers and clients share an NIS domain name. Typically, this name does not have anything to do with DNS."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:563
#, no-wrap
msgid "man:rpcbind[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:565
#, no-wrap
msgid "This service enables RPC and must be running in order to run an NIS server or act as an NIS client."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:566
#, no-wrap
msgid "man:ypbind[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:568
#, no-wrap
msgid "This service binds an NIS client to its NIS server. It will take the NIS domain name and use RPC to connect to the server. It is the core of client/server communication in an NIS environment. If this service is not running on a client machine, it will not be able to access the NIS server."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:569
#, no-wrap
msgid "man:ypserv[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:571
#, no-wrap
msgid "This is the process for the NIS server. If this service stops running, the server will no longer be able to respond to NIS requests so hopefully, there is a slave server to take over. Some non-FreeBSD clients will not try to reconnect using a slave server and the ypbind process may need to be restarted on these clients."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:572
#, no-wrap
msgid "man:rpc.yppasswdd[8]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:573
#, no-wrap
msgid "This process only runs on NIS master servers. This daemon allows NIS clients to change their NIS passwords. If this daemon is not running, users will have to login to the NIS master server and change their passwords there."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:575
#, no-wrap
msgid "Machine Types"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:578
msgid "There are three types of hosts in an NIS environment:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:580
msgid "NIS master server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:584
msgid ""
"This server acts as a central repository for host configuration information "
"and maintains the authoritative copy of the files used by all of the NIS "
"clients. The [.filename]#passwd#, [.filename]#group#, and other various "
"files used by NIS clients are stored on the master server. While it is "
"possible for one machine to be an NIS master server for more than one NIS "
"domain, this type of configuration will not be covered in this chapter as it "
"assumes a relatively small-scale NIS environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:585
msgid "NIS slave servers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:588
msgid ""
"NIS slave servers maintain copies of the NIS master's data files in order to "
"provide redundancy. Slave servers also help to balance the load of the "
"master server as NIS clients always attach to the NIS server which responds "
"first."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:589
msgid "NIS clients"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:591
msgid "NIS clients authenticate against the NIS server during log on."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:595
msgid ""
"Information in many files can be shared using NIS. The [.filename]#master."
"passwd#, [.filename]#group#, and [.filename]#hosts# files are commonly "
"shared via NIS. Whenever a process on a client needs information that would "
"normally be found in these files locally, it makes a query to the NIS server "
"that it is bound to instead."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:596
#, no-wrap
msgid "Planning Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:602
msgid ""
"This section describes a sample NIS environment which consists of 15 FreeBSD "
"machines with no centralized point of administration. Each machine has its "
"own [.filename]#/etc/passwd# and [.filename]#/etc/master.passwd#. These "
"files are kept in sync with each other only through manual intervention. "
"Currently, when a user is added to the lab, the process must be repeated on "
"all 15 machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:604
msgid "The configuration of the lab will be as follows:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:609
#, no-wrap
msgid "Machine name"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:610
#, no-wrap
msgid "IP address"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:613
#, no-wrap
msgid "Machine role"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:614
#, no-wrap
msgid "`ellington`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:615
#, no-wrap
msgid "`10.0.0.2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:617
#, no-wrap
msgid "NIS master"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:618
#, no-wrap
msgid "`coltrane`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:619
#, no-wrap
msgid "`10.0.0.3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:621
#, no-wrap
msgid "NIS slave"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:622
#, no-wrap
msgid "`basie`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:623
#, no-wrap
msgid "`10.0.0.4`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:625
#, no-wrap
msgid "Faculty workstation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:626
#, no-wrap
msgid "`bird`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:627
#, no-wrap
msgid "`10.0.0.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:629
#, no-wrap
msgid "Client machine"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:630
#, no-wrap
msgid "`cli[1-11]`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:631
#, no-wrap
msgid "`10.0.0.[6-17]`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:632
#, no-wrap
msgid "Other client machines"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:636
msgid ""
"If this is the first time an NIS scheme is being developed, it should be "
"thoroughly planned ahead of time. Regardless of network size, several "
"decisions need to be made as part of the planning process."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:637
#, no-wrap
msgid "Choosing a NIS Domain Name"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:642
msgid ""
"When a client broadcasts its requests for info, it includes the name of the "
"NIS domain that it is part of. This is how multiple servers on one network "
"can tell which server should answer which request. Think of the NIS domain "
"name as the name for a group of hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:648
msgid ""
"Some organizations choose to use their Internet domain name for their NIS "
"domain name. This is not recommended as it can cause confusion when trying "
"to debug network problems. The NIS domain name should be unique within the "
"network and it is helpful if it describes the group of machines it "
"represents. For example, the Art department at Acme Inc. might be in the "
-"\"acme-art\"NIS domain. This example will use the domain name `test-domain`."
+"\"acme-art\" NIS domain. This example will use the domain name `test-"
+"domain`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:651
msgid ""
"However, some non-FreeBSD operating systems require the NIS domain name to "
"be the same as the Internet domain name. If one or more machines on the "
"network have this restriction, the Internet domain name _must_ be used as "
"the NIS domain name."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:652
#, no-wrap
msgid "Physical Server Requirements"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:659
msgid ""
"There are several things to keep in mind when choosing a machine to use as a "
"NIS server. Since NIS clients depend upon the availability of the server, "
"choose a machine that is not rebooted frequently. The NIS server should "
"ideally be a stand alone machine whose sole purpose is to be an NIS server. "
"If the network is not heavily used, it is acceptable to put the NIS server "
"on a machine running other services. However, if the NIS server becomes "
"unavailable, it will adversely affect all NIS clients."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:660
#, no-wrap
msgid "Configuring the NIS Master Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:667
msgid ""
"The canonical copies of all NIS files are stored on the master server. The "
"databases used to store the information are called NIS maps. In FreeBSD, "
"these maps are stored in [.filename]#/var/yp/[domainname]# where [."
"filename]#[domainname]# is the name of the NIS domain. Since multiple "
"domains are supported, it is possible to have several directories, one for "
"each domain. Each domain will have its own independent set of maps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:670
msgid ""
"NIS master and slave servers handle all NIS requests through man:ypserv[8]. "
"This daemon is responsible for receiving incoming requests from NIS clients, "
"translating the requested domain and map name to a path to the corresponding "
"database file, and transmitting data from the database back to the client."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:673
msgid ""
"Setting up a master NIS server can be relatively straight forward, depending "
"on environmental needs. Since FreeBSD provides built-in NIS support, it "
"only needs to be enabled by adding the following lines to [.filename]#/etc/"
"rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:679
#, no-wrap
msgid ""
"nisdomainname=\"test-domain\"\t<.>\n"
"nis_server_enable=\"YES\"\t\t<.>\n"
"nis_yppasswdd_enable=\"YES\"\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:682
msgid "This line sets the NIS domain name to `test-domain`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:683
msgid ""
"This automates the start up of the NIS server processes when the system "
"boots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:684
msgid ""
"This enables the man:rpc.yppasswdd[8] daemon so that users can change their "
"NIS password from a client machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:689
msgid ""
"Care must be taken in a multi-server domain where the server machines are "
"also NIS clients. It is generally a good idea to force the servers to bind "
"to themselves rather than allowing them to broadcast bind requests and "
"possibly become bound to each other. Strange failure modes can result if "
"one server goes down and others are dependent upon it. Eventually, all the "
"clients will time out and attempt to bind to other servers, but the delay "
"involved can be considerable and the failure mode is still present since the "
"servers might bind to each other all over again."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:691
msgid ""
"A server that is also a client can be forced to bind to a particular server "
"by adding these additional lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:696
#, no-wrap
msgid ""
"nis_client_enable=\"YES\"\t\t\t\t<.>\n"
"nis_client_flags=\"-S test-domain,server\"\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:699
msgid "This enables running client stuff as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:700
msgid "This line sets the NIS domain name to `test-domain` and bind to itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:703
msgid ""
"After saving the edits, type `/etc/netstart` to restart the network and "
"apply the values defined in [.filename]#/etc/rc.conf#. Before initializing "
"the NIS maps, start man:ypserv[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:707
#, no-wrap
msgid "# service ypserv start\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:710
#, no-wrap
msgid "Initializing the NIS Maps"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:715
msgid ""
"NIS maps are generated from the configuration files in [.filename]#/etc# on "
"the NIS master, with one exception: [.filename]#/etc/master.passwd#. This "
"is to prevent the propagation of passwords to all the servers in the NIS "
"domain. Therefore, before the NIS maps are initialized, configure the "
"primary password files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:721
#, no-wrap
msgid ""
"# cp /etc/master.passwd /var/yp/master.passwd\n"
"# cd /var/yp\n"
"# vi master.passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:724
msgid ""
"It is advisable to remove all entries for system accounts as well as any "
"user accounts that do not need to be propagated to the NIS clients, such as "
"the `root` and any other administrative accounts."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:728
msgid ""
"Ensure that the [.filename]#/var/yp/master.passwd# is neither group or world "
"readable by setting its permissions to `600`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:733
msgid ""
"After completing this task, initialize the NIS maps. FreeBSD includes the "
"man:ypinit[8] script to do this. When generating maps for the master "
"server, include `-m` and specify the NIS domain name:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:754
#, no-wrap
msgid ""
"ellington# ypinit -m test-domain\n"
"Server Type: MASTER Domain: test-domain\n"
"Creating an YP server will require that you answer a few questions.\n"
"Questions will all be asked at the beginning of the procedure.\n"
"Do you want this procedure to quit on non-fatal errors? [y/n: n] n\n"
"Ok, please remember to go back and redo manually whatever fails.\n"
"If not, something might not work.\n"
"At this point, we have to construct a list of this domains YP servers.\n"
"rod.darktech.org is already known as master server.\n"
"Please continue to add any slave servers, one per line. When you are\n"
"done with the list, type a <control D>.\n"
"master server : ellington\n"
"next host to add: coltrane\n"
"next host to add: ^D\n"
"The current list of NIS servers looks like this:\n"
"ellington\n"
"coltrane\n"
"Is this correct? [y/n: y] y\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:756
#, no-wrap
msgid "[..output from map generation..]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:759
#, no-wrap
msgid ""
"NIS Map update completed.\n"
"ellington has been setup as an YP master server without any errors.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:764
msgid ""
"This will create [.filename]#/var/yp/Makefile# from [.filename]#/var/yp/"
"Makefile.dist#. By default, this file assumes that the environment has a "
"single NIS server with only FreeBSD clients. Since `test-domain` has a "
"slave server, edit this line in [.filename]#/var/yp/Makefile# so that it "
-"begins with a comment (`#`):"
+"begins with a comment (`+#+`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:768
#, no-wrap
msgid "NOPUSH = \"True\"\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:771
#, no-wrap
msgid "Adding New Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:776
msgid ""
"Every time a new user is created, the user account must be added to the "
"master NIS server and the NIS maps rebuilt. Until this occurs, the new user "
"will not be able to login anywhere except on the NIS master. For example, "
"to add the new user `jsmith` to the `test-domain` domain, run these commands "
"on the master server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:782
#, no-wrap
msgid ""
"# pw useradd jsmith\n"
"# cd /var/yp\n"
"# make test-domain\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:785
msgid ""
"The user could also be added using `adduser jsmith` instead of `pw useradd "
"smith`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:786
#, no-wrap
msgid "Setting up a NIS Slave Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:792
msgid ""
"To set up an NIS slave server, log on to the slave server and edit [."
"filename]#/etc/rc.conf# as for the master server. Do not generate any NIS "
"maps, as these already exist on the master server. When running `ypinit` on "
"the slave server, use `-s` (for slave) instead of `-m` (for master). This "
"option requires the name of the NIS master in addition to the domain name, "
"as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:796
#, no-wrap
msgid "coltrane# ypinit -s ellington test-domain\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:798
#, no-wrap
msgid "Server Type: SLAVE Domain: test-domain Master: ellington\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:801
#, no-wrap
msgid ""
"Creating an YP server will require that you answer a few questions.\n"
"Questions will all be asked at the beginning of the procedure.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:803
#, no-wrap
msgid "Do you want this procedure to quit on non-fatal errors? [y/n: n] n\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:848
#, no-wrap
msgid ""
"Ok, please remember to go back and redo manually whatever fails.\n"
"If not, something might not work.\n"
"There will be no further questions. The remainder of the procedure\n"
"should take a few minutes, to copy the databases from ellington.\n"
"Transferring netgroup...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netgroup.byuser...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netgroup.byhost...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring master.passwd.byuid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring passwd.byuid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring passwd.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring group.bygid...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring group.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring services.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring rpc.bynumber...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring rpc.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring protocols.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring master.passwd.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring networks.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring networks.byaddr...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring netid.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring hosts.byaddr...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring protocols.bynumber...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring ypservers...\n"
"ypxfr: Exiting: Map successfully transferred\n"
"Transferring hosts.byname...\n"
"ypxfr: Exiting: Map successfully transferred\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:851
#, no-wrap
msgid ""
"coltrane has been setup as an YP slave server without any errors.\n"
"Remember to update map ypservers on ellington.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:855
msgid ""
"This will generate a directory on the slave server called [.filename]#/var/"
"yp/test-domain# which contains copies of the NIS master server's maps. "
"Adding these [.filename]#/etc/crontab# entries on each slave server will "
"force the slaves to sync their maps with the maps on the master server:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:860
#, no-wrap
msgid ""
"20 * * * * root /usr/libexec/ypxfr passwd.byname\n"
"21 * * * * root /usr/libexec/ypxfr passwd.byuid\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:865
msgid ""
"These entries are not mandatory because the master server automatically "
"attempts to push any map changes to its slaves. However, since clients may "
"depend upon the slave server to provide correct password information, it is "
"recommended to force frequent password map updates. This is especially "
"important on busy networks where map updates might not always complete."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:867
msgid ""
"To finish the configuration, run `/etc/netstart` on the slave server in "
"order to start the NIS services."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:868
#, no-wrap
msgid "Setting Up an NIS Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:877
msgid ""
"An NIS client binds to an NIS server using man:ypbind[8]. This daemon "
"broadcasts RPC requests on the local network. These requests specify the "
"domain name configured on the client. If an NIS server in the same domain "
"receives one of the broadcasts, it will respond to ypbind, which will record "
"the server's address. If there are several servers available, the client "
"will use the address of the first server to respond and will direct all of "
"its NIS requests to that server. The client will automatically ping the "
"server on a regular basis to make sure it is still available. If it fails "
"to receive a reply within a reasonable amount of time, ypbind will mark the "
"domain as unbound and begin broadcasting again in the hopes of locating "
"another server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:879
msgid "To configure a FreeBSD machine to be an NIS client:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:883
msgid ""
"Edit [.filename]#/etc/rc.conf# and add the following lines in order to set "
"the NIS domain name and start man:ypbind[8] during network startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:888
#, no-wrap
msgid ""
"nisdomainname=\"test-domain\"\n"
"nis_client_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:891
msgid ""
"To import all possible password entries from the NIS server, use `vipw` to "
"remove all user accounts except one from [.filename]#/etc/master.passwd#. "
"When removing the accounts, keep in mind that at least one local account "
"should remain and this account should be a member of `wheel`. If there is a "
"problem with NIS, this local account can be used to log in remotely, become "
"the superuser, and fix the problem. Before saving the edits, add the "
"following line to the end of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:895
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1116
#, no-wrap
msgid "+:::::::::\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:901
msgid ""
"This line configures the client to provide anyone with a valid account in "
"the NIS server's password maps an account on the client. There are many "
"ways to configure the NIS client by modifying this line. One method is "
"described in <<network-netgroups>>. For more detailed reading, refer to the "
"book `Managing NFS and NIS`, published by O'Reilly Media."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:902
msgid ""
"To import all possible group entries from the NIS server, add this line to [."
"filename]#/etc/group#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:906
#, no-wrap
msgid "+:*::\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:910
msgid ""
"To start the NIS client immediately, execute the following commands as the "
"superuser:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:915
#, no-wrap
msgid ""
"# /etc/netstart\n"
"# service ypbind start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:918
msgid ""
"After completing these steps, running `ypcat passwd` on the client should "
"show the server's [.filename]#passwd# map."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:919
#, no-wrap
msgid "NIS Security"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:927
msgid ""
"Since RPC is a broadcast-based service, any system running ypbind within the "
"same domain can retrieve the contents of the NIS maps. To prevent "
"unauthorized transactions, man:ypserv[8] supports a feature called "
"\"securenets\" which can be used to restrict access to a given set of "
"hosts. By default, this information is stored in [.filename]#/var/yp/"
"securenets#, unless man:ypserv[8] is started with `-p` and an alternate "
"path. This file contains entries that consist of a network specification "
-"and a network mask separated by white space. Lines starting with `#` are "
-"considered to be comments. A sample [.filename]#securenets# might look like "
-"this:"
+"and a network mask separated by white space. Lines starting with `+\"#\"+` "
+"are considered to be comments. A sample [.filename]#securenets# might look "
+"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:939
#, no-wrap
msgid ""
"# allow connections from local host -- mandatory\n"
"127.0.0.1 255.255.255.255\n"
"# allow connections from any host\n"
"# on the 192.168.128.0 network\n"
"192.168.128.0 255.255.255.0\n"
"# allow connections from any host\n"
"# between 10.0.0.0 to 10.0.15.255\n"
"# this includes the machines in the testlab\n"
"10.0.0.0 255.255.240.0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:944
msgid ""
"If man:ypserv[8] receives a request from an address that matches one of "
"these rules, it will process the request normally. If the address fails to "
"match a rule, the request will be ignored and a warning message will be "
"logged. If the [.filename]#securenets# does not exist, `ypserv` will allow "
"connections from any host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:948
msgid ""
"crossref:security[tcpwrappers,\"TCP Wrapper\"] is an alternate mechanism for "
"providing access control instead of [.filename]#securenets#. While either "
"access control mechanism adds some security, they are both vulnerable to "
"\"IP spoofing\" attacks. All NIS-related traffic should be blocked at the "
"firewall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:952
msgid ""
"Servers using [.filename]#securenets# may fail to serve legitimate NIS "
"clients with archaic TCP/IP implementations. Some of these implementations "
"set all host bits to zero when doing broadcasts or fail to observe the "
"subnet mask when calculating the broadcast address. While some of these "
"problems can be fixed by changing the client configuration, other problems "
"may force the retirement of these client systems or the abandonment of [."
"filename]#securenets#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:956
msgid ""
"The use of TCP Wrapper increases the latency of the NIS server. The "
"additional delay may be long enough to cause timeouts in client programs, "
"especially in busy networks with slow NIS servers. If one or more clients "
"suffer from latency, convert those clients into NIS slave servers and force "
"them to bind to themselves."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:957
#, no-wrap
msgid "Barring Some Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:962
msgid ""
"In this example, the `basie` system is a faculty workstation within the NIS "
"domain. The [.filename]#passwd# map on the master NIS server contains "
"accounts for both faculty and students. This section demonstrates how to "
"allow faculty logins on this system while refusing student logins."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:966
msgid ""
"To prevent specified users from logging on to a system, even if they are "
"present in the NIS database, use `vipw` to add `-_username_` with the "
"correct number of colons towards the end of [.filename]#/etc/master.passwd# "
"on the client, where _username_ is the username of a user to bar from "
"logging in. The line with the blocked user must be before the `+` line that "
"allows NIS users. In this example, `bill` is barred from logging on to "
"`basie`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:987
#, no-wrap
msgid ""
"basie# cat /etc/master.passwd\n"
"root:[password]:0:0::0:0:The super-user:/root:/bin/csh\n"
"toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh\n"
"daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin\n"
"operator:*:2:5::0:0:System &:/:/usr/sbin/nologin\n"
"bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/usr/sbin/nologin\n"
"tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin\n"
"kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin\n"
"games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin\n"
"news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin\n"
"man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin\n"
"bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin\n"
"uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico\n"
"xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/usr/sbin/nologin\n"
"pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin\n"
"nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin\n"
"-bill:::::::::\n"
"+:::::::::\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:989
#, no-wrap
msgid "basie#\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:993
#, no-wrap
msgid "Using Netgroups"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:996
msgid ""
"Barring specified users from logging on to individual systems becomes "
"unscaleable on larger networks and quickly loses the main benefit of NIS: "
"_centralized_ administration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:999
msgid ""
"Netgroups were developed to handle large, complex networks with hundreds of "
"users and machines. Their use is comparable to UNIX(R) groups, where the "
"main difference is the lack of a numeric ID and the ability to define a "
"netgroup by including both user accounts and other netgroups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1001
msgid ""
"To expand on the example used in this chapter, the NIS domain will be "
"extended to add the users and systems shown in Tables 28.2 and 28.3:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1002
#, no-wrap
msgid "Additional Users"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1006
#, no-wrap
msgid "User Name(s)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1009
#, no-wrap
msgid "`alpha`, `beta`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1011
#, no-wrap
msgid "IT department employees"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1012
#, no-wrap
msgid "`charlie`, `delta`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1014
#, no-wrap
msgid "IT department apprentices"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1015
#, no-wrap
msgid "`echo`, `foxtrott`, `golf`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1017
#, no-wrap
msgid "employees"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1018
#, no-wrap
msgid "`able`, `baker`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1019
#, no-wrap
msgid "interns"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1021
#, no-wrap
msgid "Additional Systems"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1025
#, no-wrap
msgid "Machine Name(s)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1028
#, no-wrap
msgid "`war`, `death`, `famine`, `pollution`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1030
#, no-wrap
msgid "Only IT employees are allowed to log onto these servers."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1031
#, no-wrap
msgid "`pride`, `greed`, `envy`, `wrath`, `lust`, `sloth`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1033
#, no-wrap
msgid "All members of the IT department are allowed to login onto these servers."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1034
#, no-wrap
msgid "`one`, `two`, `three`, `four`, ..."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1036
#, no-wrap
msgid "Ordinary workstations used by employees."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1037
#, no-wrap
msgid "`trashcan`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1038
#, no-wrap
msgid "A very old machine without any critical data. Even interns are allowed to use this system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1044
msgid ""
"When using netgroups to configure this scenario, each user is assigned to "
"one or more netgroups and logins are then allowed or forbidden for all "
"members of the netgroup. When adding a new machine, login restrictions must "
"be defined for all netgroups. When a new user is added, the account must be "
"added to one or more netgroups. If the NIS setup is planned carefully, only "
"one central configuration file needs modification to grant or deny access to "
"machines."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1048
msgid ""
"The first step is the initialization of the NIS`netgroup` map. In FreeBSD, "
"this map is not created by default. On the NIS master server, use an editor "
"to create a map named [.filename]#/var/yp/netgroup#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1050
msgid ""
"This example creates four netgroups to represent IT employees, IT "
"apprentices, employees, and interns:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1058
#, no-wrap
msgid ""
"IT_EMP (,alpha,test-domain) (,beta,test-domain)\n"
"IT_APP (,charlie,test-domain) (,delta,test-domain)\n"
"USERS (,echo,test-domain) (,foxtrott,test-domain) \\\n"
" (,golf,test-domain)\n"
"INTERNS (,able,test-domain) (,baker,test-domain)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1063
msgid ""
"Each entry configures a netgroup. The first column in an entry is the name "
-"of the netgroup. Each set of brackets represents either a group of one or "
-"more users or the name of another netgroup. When specifying a user, the "
+"of the netgroup. Each set of parentheses represents either a group of one "
+"or more users or the name of another netgroup. When specifying a user, the "
"three comma-delimited fields inside each group represent:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1065
msgid ""
"The name of the host(s) where the other fields representing the user are "
"valid. If a hostname is not specified, the entry is valid on all hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1066
msgid "The name of the account that belongs to this netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1067
msgid ""
"The NIS domain for the account. Accounts may be imported from other NIS "
"domains into a netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1071
msgid ""
"If a group contains multiple users, separate each user with whitespace. "
"Additionally, each field may contain wildcards. See man:netgroup[5] for "
"details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1074
msgid ""
"Netgroup names longer than 8 characters should not be used. The names are "
"case sensitive and using capital letters for netgroup names is an easy way "
"to distinguish between user, machine and netgroup names."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1077
msgid ""
"Some non-FreeBSD NIS clients cannot handle netgroups containing more than 15 "
"entries. This limit may be circumvented by creating several sub-netgroups "
"with 15 users or fewer and a real netgroup consisting of the sub-netgroups, "
"as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1084
#, no-wrap
msgid ""
"BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]\n"
"BIGGRP2 (,joe16,domain) (,joe17,domain) [...]\n"
"BIGGRP3 (,joe31,domain) (,joe32,domain)\n"
"BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1087
msgid ""
"Repeat this process if more than 225 (15 times 15) users exist within a "
"single netgroup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1089
msgid "To activate and distribute the new NIS map:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1094
#, no-wrap
msgid ""
"ellington# cd /var/yp\n"
"ellington# make\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1098
msgid ""
"This will generate the three NIS maps [.filename]#netgroup#, [."
"filename]#netgroup.byhost# and [.filename]#netgroup.byuser#. Use the map "
"key option of man:ypcat[1] to check if the new NIS maps are available:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1104
#, no-wrap
msgid ""
"ellington% ypcat -k netgroup\n"
"ellington% ypcat -k netgroup.byhost\n"
"ellington% ypcat -k netgroup.byuser\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1109
msgid ""
"The output of the first command should resemble the contents of [.filename]#/"
"var/yp/netgroup#. The second command only produces output if host-specific "
"netgroups were created. The third command is used to get the list of "
"netgroups for a user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1112
msgid ""
"To configure a client, use man:vipw[8] to specify the name of the netgroup. "
"For example, on the server named `war`, replace this line:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1119
msgid "with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1123
#, no-wrap
msgid "+@IT_EMP:::::::::\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1126
msgid ""
"This specifies that only the users defined in the netgroup `IT_EMP` will be "
"imported into this system's password database and only those users are "
"allowed to login to this system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1131
msgid ""
"This configuration also applies to the `~` function of the shell and all "
"routines which convert between user names and numerical user IDs. In other "
"words, `cd ~_user_` will not work, `ls -l` will show the numerical ID "
"instead of the username, and `find . -user joe -print` will fail with the "
"message `No such user`. To fix this, import all user entries without "
"allowing them to login into the servers. This can be achieved by adding an "
"extra line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1135
#, no-wrap
msgid "+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1138
msgid ""
"This line configures the client to import all entries but to replace the "
"shell in those entries with [.filename]#/usr/sbin/nologin#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1141
msgid ""
"Make sure that extra line is placed _after_ `+@IT_EMP:::::::::`. Otherwise, "
"all user accounts imported from NIS will have [.filename]#/usr/sbin/nologin# "
"as their login shell and no one will be able to login to the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1143
msgid ""
"To configure the less important servers, replace the old `+:::::::::` on the "
"servers with these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1149
#, no-wrap
msgid ""
"+@IT_EMP:::::::::\n"
"+@IT_APP:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1152
msgid "The corresponding lines for the workstations would be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1158
#, no-wrap
msgid ""
"+@IT_EMP:::::::::\n"
"+@USERS:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1165
msgid ""
"NIS supports the creation of netgroups from other netgroups which can be "
"useful if the policy regarding user access changes. One possibility is the "
"creation of role-based netgroups. For example, one might create a netgroup "
"called `BIGSRV` to define the login restrictions for the important servers, "
"another netgroup called `SMALLSRV` for the less important servers, and a "
"third netgroup called `USERBOX` for the workstations. Each of these "
"netgroups contains the netgroups that are allowed to login onto these "
"machines. The new entries for the NIS`netgroup` map would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1171
#, no-wrap
msgid ""
"BIGSRV IT_EMP IT_APP\n"
"SMALLSRV IT_EMP IT_APP ITINTERN\n"
"USERBOX IT_EMP ITINTERN USERS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1176
msgid ""
"This method of defining login restrictions works reasonably well when it is "
"possible to define groups of machines with identical restrictions. "
"Unfortunately, this is the exception and not the rule. Most of the time, "
"the ability to define login restrictions on a per-machine basis is required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1181
msgid ""
"Machine-specific netgroup definitions are another possibility to deal with "
"the policy changes. In this scenario, the [.filename]#/etc/master.passwd# "
"of each system contains two lines starting with \"+\". The first line adds "
"a netgroup with the accounts allowed to login onto this machine and the "
"second line adds all other accounts with [.filename]#/usr/sbin/nologin# as "
"shell. It is recommended to use the \"ALL-CAPS\" version of the hostname as "
"the name of the netgroup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1186
#, no-wrap
msgid ""
"+@BOXNAME:::::::::\n"
"+:::::::::/usr/sbin/nologin\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1191
msgid ""
"Once this task is completed on all the machines, there is no longer a need "
"to modify the local versions of [.filename]#/etc/master.passwd# ever again. "
"All further changes can be handled by modifying the NIS map. Here is an "
"example of a possible `netgroup` map for this scenario:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1229
#, no-wrap
msgid ""
"# Define groups of users first\n"
"IT_EMP (,alpha,test-domain) (,beta,test-domain)\n"
"IT_APP (,charlie,test-domain) (,delta,test-domain)\n"
"DEPT1 (,echo,test-domain) (,foxtrott,test-domain)\n"
"DEPT2 (,golf,test-domain) (,hotel,test-domain)\n"
"DEPT3 (,india,test-domain) (,juliet,test-domain)\n"
"ITINTERN (,kilo,test-domain) (,lima,test-domain)\n"
"D_INTERNS (,able,test-domain) (,baker,test-domain)\n"
"#\n"
"# Now, define some groups based on roles\n"
"USERS DEPT1 DEPT2 DEPT3\n"
"BIGSRV IT_EMP IT_APP\n"
"SMALLSRV IT_EMP IT_APP ITINTERN\n"
"USERBOX IT_EMP ITINTERN USERS\n"
"#\n"
"# And a groups for a special tasks\n"
"# Allow echo and golf to access our anti-virus-machine\n"
"SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)\n"
"#\n"
"# machine-based netgroups\n"
"# Our main servers\n"
"WAR BIGSRV\n"
"FAMINE BIGSRV\n"
"# User india needs access to this server\n"
"POLLUTION BIGSRV (,india,test-domain)\n"
"#\n"
"# This one is really important and needs more access restrictions\n"
"DEATH IT_EMP\n"
"#\n"
"# The anti-virus-machine mentioned above\n"
"ONE SECURITY\n"
"#\n"
"# Restrict a machine to a single user\n"
"TWO (,hotel,test-domain)\n"
"# [...more groups to follow]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1233
msgid ""
"It may not always be advisable to use machine-based netgroups. When "
"deploying a couple of dozen or hundreds of systems, role-based netgroups "
"instead of machine-based netgroups may be used to keep the size of the NIS "
"map within reasonable limits."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1234
#, no-wrap
msgid "Password Formats"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1239
msgid ""
"NIS requires that all hosts within an NIS domain use the same format for "
"encrypting passwords. If users have trouble authenticating on an NIS "
"client, it may be due to a differing password format. In a heterogeneous "
"network, the format must be supported by all operating systems, where DES is "
"the lowest common standard."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1241
msgid ""
"To check which format a server or client is using, look at this section of [."
"filename]#/etc/login.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1248
#, no-wrap
msgid ""
"default:\\\n"
"\t:passwd_format=des:\\\n"
"\t:copyright=/etc/COPYRIGHT:\\\n"
"\t[Further entries elided]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1253
msgid ""
"In this example, the system is using the DES format for password hashing. "
"Other possible values include `blf` for Blowfish, `md5` for MD5, `sha256` "
"and `sha512` for SHA-256 and SHA-512 respectively. For more information and "
"the up to date list of what is available on your system, consult the man:"
"crypt[3] manpage."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1255
msgid ""
"If the format on a host needs to be edited to match the one being used in "
"the NIS domain, the login capability database must be rebuilt after saving "
"the change:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1259
#, no-wrap
msgid "# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1264
msgid ""
"The format of passwords for existing user accounts will not be updated until "
"each user changes their password _after_ the login capability database is "
"rebuilt."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1267
#, no-wrap
msgid "Lightweight Directory Access Protocol (LDAP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1273
msgid ""
"The Lightweight Directory Access Protocol (LDAP) is an application layer "
"protocol used to access, modify, and authenticate objects using a "
"distributed directory information service. Think of it as a phone or record "
"book which stores several levels of hierarchical, homogeneous information. "
"It is used in Active Directory and OpenLDAP networks and allows users to "
"access to several levels of internal information utilizing a single "
"account. For example, email authentication, pulling employee contact "
"information, and internal website authentication might all make use of a "
"single user account in the LDAP server's record base."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1276
msgid ""
"This section provides a quick start guide for configuring an LDAP server on "
"a FreeBSD system. It assumes that the administrator already has a design "
"plan which includes the type of information to store, what that information "
"will be used for, which users should have access to that information, and "
"how to secure this information from unauthorized access."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1277
#, no-wrap
msgid "LDAP Terminology and Structure"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1283
msgid ""
"LDAP uses several terms which should be understood before starting the "
"configuration. All directory entries consist of a group of _attributes_. "
"Each of these attribute sets contains a unique identifier known as a "
"_Distinguished Name_ (DN) which is normally built from several other "
"attributes such as the common or _Relative Distinguished Name_ (RDN). "
"Similar to how directories have absolute and relative paths, consider a DN "
"as an absolute path and the RDN as the relative path."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1286
msgid ""
"An example LDAP entry looks like the following. This example searches for "
"the entry for the specified user account (`uid`), organizational unit "
"(`ou`), and organization (`o`):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1297
#, no-wrap
msgid ""
"% ldapsearch -xb \"uid=trhodes,ou=users,o=example.com\"\n"
"# extended LDIF\n"
"#\n"
"# LDAPv3\n"
"# base <uid=trhodes,ou=users,o=example.com> with scope subtree\n"
"# filter: (objectclass=*)\n"
"# requesting: ALL\n"
"#\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1304
#, no-wrap
msgid ""
"# trhodes, users, example.com\n"
"dn: uid=trhodes,ou=users,o=example.com\n"
"mail: trhodes@example.com\n"
"cn: Tom Rhodes\n"
"uid: trhodes\n"
"telephoneNumber: (123) 456-7890\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1308
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1582
#, no-wrap
msgid ""
"# search result\n"
"search: 2\n"
"result: 0 Success\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1311
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1585
#, no-wrap
msgid ""
"# numResponses: 2\n"
"# numEntries: 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1315
msgid ""
"This example entry shows the values for the `dn`, `mail`, `cn`, `uid`, and "
"`telephoneNumber` attributes. The cn attribute is the RDN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1317
msgid ""
"More information about LDAP and its terminology can be found at http://www."
"openldap.org/doc/admin24/intro.html[http://www.openldap.org/doc/admin24/"
"intro.html]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1319
#, no-wrap
msgid "Configuring an LDAP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1323
msgid ""
"FreeBSD does not provide a built-in LDAP server. Begin the configuration by "
"installing package:net/openldap-server[] package or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1327
#, no-wrap
msgid "# pkg install openldap-server\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1332
msgid ""
"There is a large set of default options enabled in the extref:{linux-users}"
"[package, software]. Review them by running `pkg info openldap-server`. If "
"they are not sufficient (for example if SQL support is needed), please "
"consider recompiling the port using the appropriate crossref:ports[ports-"
"using,framework]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1335
msgid ""
"The installation creates the directory [.filename]#/var/db/openldap-data# to "
"hold the data. The directory to store the certificates must be created:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1339
#, no-wrap
msgid "# mkdir /usr/local/etc/openldap/private\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1346
msgid ""
"The next phase is to configure the Certificate Authority. The following "
"commands must be executed from [.filename]#/usr/local/etc/openldap/"
"private#. This is important as the file permissions need to be restrictive "
"and users should not have access to these files. More detailed information "
"about certificates and their parameters can be found in crossref:"
"security[openssl,\"OpenSSL\"]. To create the Certificate Authority, start "
"with this command and follow the prompts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1350
#, no-wrap
msgid "# openssl req -days 365 -nodes -new -x509 -keyout ca.key -out ../ca.crt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1355
msgid ""
"The entries for the prompts may be generic _except_ for the `Common Name`. "
"This entry must be _different_ than the system hostname. If this will be a "
"self signed certificate, prefix the hostname with `CA` for Certificate "
"Authority."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1358
msgid ""
"The next task is to create a certificate signing request and a private key. "
"Input this command and follow the prompts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1362
#, no-wrap
msgid "# openssl req -days 365 -nodes -new -keyout server.key -out server.csr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1366
msgid ""
"During the certificate generation process, be sure to correctly set the "
"`Common Name` attribute. The Certificate Signing Request must be signed "
"with the Certificate Authority in order to be used as a valid certificate:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1370
#, no-wrap
msgid "# openssl x509 -req -days 365 -in server.csr -out ../server.crt -CA ../ca.crt -CAkey ca.key -CAcreateserial\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1373
msgid ""
"The final part of the certificate generation process is to generate and sign "
"the client certificates:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1378
#, no-wrap
msgid ""
"# openssl req -days 365 -nodes -new -keyout client.key -out client.csr\n"
"# openssl x509 -req -days 3650 -in client.csr -out ../client.crt -CA ../ca.crt -CAkey ca.key\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1382
msgid ""
"Remember to use the same `Common Name` attribute when prompted. When "
"finished, ensure that a total of eight (8) new files have been generated "
"through the proceeding commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1385
msgid ""
"The daemon running the OpenLDAP server is [.filename]#slapd#. Its "
"configuration is performed through [.filename]#slapd.ldif#: the old [."
"filename]#slapd.conf# has been deprecated by OpenLDAP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1392
msgid ""
"http://www.openldap.org/doc/admin24/slapdconf2.html[Configuration examples] "
"for [.filename]#slapd.ldif# are available and can also be found in [."
"filename]#/usr/local/etc/openldap/slapd.ldif.sample#. Options are "
"documented in slapd-config(5). Each section of [.filename]#slapd.ldif#, "
"like all the other LDAP attribute sets, is uniquely identified through a "
"DN. Be sure that no blank lines are left between the `dn:` statement and "
"the desired end of the section. In the following example, TLS will be used "
"to implement a secure channel. The first section represents the global "
"configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1414
#, no-wrap
msgid ""
"#\n"
"# See slapd-config(5) for details on configuration options.\n"
"# This file should NOT be world readable.\n"
"#\n"
"dn: cn=config\n"
"objectClass: olcGlobal\n"
"cn: config\n"
"#\n"
"#\n"
"# Define global ACLs to disable default read access.\n"
"#\n"
"olcArgsFile: /var/run/openldap/slapd.args\n"
"olcPidFile: /var/run/openldap/slapd.pid\n"
"olcTLSCertificateFile: /usr/local/etc/openldap/server.crt\n"
"olcTLSCertificateKeyFile: /usr/local/etc/openldap/private/server.key\n"
"olcTLSCACertificateFile: /usr/local/etc/openldap/ca.crt\n"
"#olcTLSCipherSuite: HIGH\n"
"olcTLSProtocolMin: 3.1\n"
"olcTLSVerifyClient: never\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1419
msgid ""
"The Certificate Authority, server certificate and server private key files "
"must be specified here. It is recommended to let the clients choose the "
"security cipher and omit option `olcTLSCipherSuite` (incompatible with TLS "
"clients other than [.filename]#openssl#). Option `olcTLSProtocolMin` lets "
"the server require a minimum security level: it is recommended. While "
"verification is mandatory for the server, it is not for the client: "
"`olcTLSVerifyClient: never`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1421
msgid ""
"The second section is about the backend modules and can be configured as "
"follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1437
#, no-wrap
msgid ""
"#\n"
"# Load dynamic backend modules:\n"
"#\n"
"dn: cn=module,cn=config\n"
"objectClass: olcModuleList\n"
"cn: module\n"
"olcModulepath:\t/usr/local/libexec/openldap\n"
"olcModuleload:\tback_mdb.la\n"
"#olcModuleload:\tback_bdb.la\n"
"#olcModuleload:\tback_hdb.la\n"
"#olcModuleload:\tback_ldap.la\n"
"#olcModuleload:\tback_passwd.la\n"
"#olcModuleload:\tback_shell.la\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1440
msgid ""
"The third section is devoted to load the needed `ldif` schemas to be used by "
"the databases: they are essential."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1446
#, no-wrap
msgid ""
"dn: cn=schema,cn=config\n"
"objectClass: olcSchemaConfig\n"
"cn: schema\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1451
#, no-wrap
msgid ""
"include: file:///usr/local/etc/openldap/schema/core.ldif\n"
"include: file:///usr/local/etc/openldap/schema/cosine.ldif\n"
"include: file:///usr/local/etc/openldap/schema/inetorgperson.ldif\n"
"include: file:///usr/local/etc/openldap/schema/nis.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1454
msgid "Next, the frontend configuration section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1488
#, no-wrap
msgid ""
"# Frontend settings\n"
"#\n"
"dn: olcDatabase={-1}frontend,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"objectClass: olcFrontendConfig\n"
"olcDatabase: {-1}frontend\n"
"olcAccess: to * by * read\n"
"#\n"
"# Sample global access control policy:\n"
"#\tRoot DSE: allow anyone to read it\n"
"#\tSubschema (sub)entry DSE: allow anyone to read it\n"
"#\tOther DSEs:\n"
"#\t\tAllow self write access\n"
"#\t\tAllow authenticated users read access\n"
"#\t\tAllow anonymous users to authenticate\n"
"#\n"
"#olcAccess: to dn.base=\"\" by * read\n"
"#olcAccess: to dn.base=\"cn=Subschema\" by * read\n"
"#olcAccess: to *\n"
"#\tby self write\n"
"#\tby users read\n"
"#\tby anonymous auth\n"
"#\n"
"# if no access controls are present, the default policy\n"
"# allows anyone and everyone to read anything but restricts\n"
"# updates to rootdn. (e.g., \"access to * by * read\")\n"
"#\n"
"# rootdn can always read and write EVERYTHING!\n"
"#\n"
"olcPasswordHash: {SSHA}\n"
"# {SSHA} is already the default for olcPasswordHash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1491
msgid ""
"Another section is devoted to the _configuration backend_, the only way to "
"later access the OpenLDAP server configuration is as a global super-user."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1499
#, no-wrap
msgid ""
"dn: olcDatabase={0}config,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"olcDatabase: {0}config\n"
"olcAccess: to * by * none\n"
"olcRootPW: {SSHA}iae+lrQZILpiUdf16Z9KmDmSwT77Dj4U\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1504
msgid ""
"The default administrator username is `cn=config`. Type [."
"filename]#slappasswd# in a shell, choose a password and use its hash in "
"`olcRootPW`. If this option is not specified now, before [.filename]#slapd."
"ldif# is imported, no one will be later able to modify the _global "
"configuration_ section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1506
msgid "The last section is about the database backend:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1530
#, no-wrap
msgid ""
"#######################################################################\n"
"# LMDB database definitions\n"
"#######################################################################\n"
"#\n"
"dn: olcDatabase=mdb,cn=config\n"
"objectClass: olcDatabaseConfig\n"
"objectClass: olcMdbConfig\n"
"olcDatabase: mdb\n"
"olcDbMaxSize: 1073741824\n"
"olcSuffix: dc=domain,dc=example\n"
"olcRootDN: cn=mdbadmin,dc=domain,dc=example\n"
"# Cleartext passwords, especially for the rootdn, should\n"
"# be avoided. See slappasswd(8) and slapd-config(5) for details.\n"
"# Use of strong authentication encouraged.\n"
"olcRootPW: {SSHA}X2wHvIWDk6G76CQyCMS1vDCvtICWgn0+\n"
"# The database directory MUST exist prior to running slapd AND\n"
"# should only be accessible by the slapd and slap tools.\n"
"# Mode 700 recommended.\n"
"olcDbDirectory:\t/var/db/openldap-data\n"
"# Indices to maintain\n"
"olcDbIndex: objectClass eq\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1535
msgid ""
"This database hosts the _actual contents_ of the LDAP directory. Types "
"other than `mdb` are available. Its super-user, not to be confused with the "
"global one, is configured here: a (possibly custom) username in `olcRootDN` "
"and the password hash in `olcRootPW`; [.filename]#slappasswd# can be used as "
"before."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1538
msgid ""
"This http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=tree;f=tests/"
"data/regressions/its8444;h=8a5e808e63b0de3d2bdaf2cf34fecca8577ca7fd;"
"hb=HEAD[repository] contains four examples of [.filename]#slapd.ldif#. To "
"convert an existing [.filename]#slapd.conf# into [.filename]#slapd.ldif#, "
"refer to http://www.openldap.org/doc/admin24/slapdconf2.html[this page] "
"(please note that this may introduce some unuseful options)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1541
msgid ""
"When the configuration is completed, [.filename]#slapd.ldif# must be placed "
"in an empty directory. It is recommended to create it as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1545
#, no-wrap
msgid "# mkdir /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1548
msgid "Import the configuration database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1552
#, no-wrap
msgid "# /usr/local/sbin/slapadd -n0 -F /usr/local/etc/openldap/slapd.d/ -l /usr/local/etc/openldap/slapd.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1555
msgid "Start the [.filename]#slapd# daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1559
#, no-wrap
msgid "# /usr/local/libexec/slapd -F /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1563
msgid ""
"Option `-d` can be used for debugging, as specified in slapd(8). To verify "
"that the server is running and working:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1574
#, no-wrap
msgid ""
"# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts\n"
"# extended LDIF\n"
"#\n"
"# LDAPv3\n"
"# base <> with scope baseObject\n"
"# filter: (objectclass=*)\n"
"# requesting: namingContexts\n"
"#\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1578
#, no-wrap
msgid ""
"#\n"
"dn:\n"
"namingContexts: dc=domain,dc=example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1590
msgid ""
"The server must still be trusted. If that has never been done before, "
"follow these instructions. Install the OpenSSL package or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1594
#, no-wrap
msgid "# pkg install openssl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1597
msgid ""
"From the directory where [.filename]#ca.crt# is stored (in this example, [."
"filename]#/usr/local/etc/openldap#), run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1601
#, no-wrap
msgid "# c_rehash .\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1605
msgid ""
"Both the CA and the server certificate are now correctly recognized in their "
"respective roles. To verify this, run this command from the [."
"filename]#server.crt# directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1609
#, no-wrap
msgid "# openssl verify -verbose -CApath . server.crt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1613
msgid ""
"If [.filename]#slapd# was running, restart it. As stated in [.filename]#/"
"usr/local/etc/rc.d/slapd#, to properly run [.filename]#slapd# at boot the "
"following lines must be added to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1621
#, no-wrap
msgid ""
"slapd_enable=\"YES\"\n"
"slapd_flags='-h \"ldapi://%2fvar%2frun%2fopenldap%2fldapi/\n"
"ldap://0.0.0.0/\"'\n"
"slapd_sockets=\"/var/run/openldap/ldapi\"\n"
"slapd_cn_config=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1625
msgid ""
"[.filename]#slapd# does not provide debugging at boot. Check [.filename]#/"
"var/log/debug.log#, [.filename]#dmesg -a# and [.filename]#/var/log/messages# "
"for this purpose."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1628
msgid ""
"The following example adds the group `team` and the user `john` to the "
"`domain.example` LDAP database, which is still empty. First, create the "
"file [.filename]#domain.ldif#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1637
#, no-wrap
msgid ""
"# cat domain.ldif\n"
"dn: dc=domain,dc=example\n"
"objectClass: dcObject\n"
"objectClass: organization\n"
"o: domain.example\n"
"dc: domain\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1642
#, no-wrap
msgid ""
"dn: ou=groups,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: organizationalunit\n"
"ou: groups\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1647
#, no-wrap
msgid ""
"dn: ou=users,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: organizationalunit\n"
"ou: users\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1653
#, no-wrap
msgid ""
"dn: cn=team,ou=groups,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: posixGroup\n"
"cn: team\n"
"gidNumber: 10001\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1666
#, no-wrap
msgid ""
"dn: uid=john,ou=users,dc=domain,dc=example\n"
"objectClass: top\n"
"objectClass: account\n"
"objectClass: posixAccount\n"
"objectClass: shadowAccount\n"
"cn: John McUser\n"
"uid: john\n"
"uidNumber: 10001\n"
"gidNumber: 10001\n"
"homeDirectory: /home/john/\n"
"loginShell: /usr/bin/bash\n"
"userPassword: secret\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1672
msgid ""
"See the OpenLDAP documentation for more details. Use [."
"filename]#slappasswd# to replace the plain text password `secret` with a "
"hash in `userPassword`. The path specified as `loginShell` must exist in "
"all the systems where `john` is allowed to login. Finally, use the `mdb` "
"administrator to modify the database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1676
#, no-wrap
msgid "# ldapadd -W -D \"cn=mdbadmin,dc=domain,dc=example\" -f domain.ldif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1681
msgid ""
"Modifications to the _global configuration_ section can only be performed by "
"the global super-user. For example, assume that the option "
"`olcTLSCipherSuite: HIGH:MEDIUM:SSLv3` was initially specified and must now "
"be deleted. First, create a file that contains the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1688
#, no-wrap
msgid ""
"# cat global_mod\n"
"dn: cn=config\n"
"changetype: modify\n"
"delete: olcTLSCipherSuite\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1691
msgid "Then, apply the modifications:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1695
#, no-wrap
msgid "# ldapmodify -f global_mod -x -D \"cn=config\" -W\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1700
msgid ""
"When asked, provide the password chosen in the _configuration backend_ "
"section. The username is not required: here, `cn=config` represents the DN "
"of the database section to be modified. Alternatively, use `ldapmodify` to "
"delete a single line of the database, `ldapdelete` to delete a whole entry."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1702
msgid ""
"If something goes wrong, or if the global super-user cannot access the "
"configuration backend, it is possible to delete and re-write the whole "
"configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1706
#, no-wrap
msgid "# rm -rf /usr/local/etc/openldap/slapd.d/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1710
msgid ""
"[.filename]#slapd.ldif# can then be edited and imported again. Please, "
"follow this procedure only when no other solution is available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1713
msgid ""
"This is the configuration of the server only. The same machine can also "
"host an LDAP client, with its own separate configuration."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1715
#, no-wrap
msgid "Dynamic Host Configuration Protocol (DHCP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1722
msgid ""
"The Dynamic Host Configuration Protocol (DHCP) allows a system to connect to "
"a network in order to be assigned the necessary addressing information for "
"communication on that network. FreeBSD includes the OpenBSD version of "
"`dhclient` which is used by the client to obtain the addressing "
"information. FreeBSD does not install a DHCP server, but several servers "
"are available in the FreeBSD Ports Collection. The DHCP protocol is fully "
"described in http://www.freesoft.org/CIE/RFC/2131/[RFC 2131]. Informational "
"resources are also available at http://www.isc.org/downloads/dhcp/[isc.org/"
"downloads/dhcp/]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1725
msgid ""
"This section describes how to use the built-in DHCP client. It then "
"describes how to install and configure a DHCP server."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1731
msgid ""
"In FreeBSD, the man:bpf[4] device is needed by both the DHCP server and DHCP "
"client. This device is included in the [.filename]#GENERIC# kernel that is "
"installed with FreeBSD. Users who prefer to create a custom kernel need to "
"keep this device if DHCP is used."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1733
msgid ""
"It should be noted that [.filename]#bpf# also allows privileged users to run "
"network packet sniffers on that system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1736
#, no-wrap
msgid "Configuring a DHCP Client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1740
msgid ""
"DHCP client support is included in the FreeBSD installer, making it easy to "
"configure a newly installed system to automatically receive its networking "
"addressing information from an existing DHCP server. Refer to crossref:"
"bsdinstall[bsdinstall-post,\"Accounts, Time Zone, Services and Hardening\"] "
"for examples of network configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1748
msgid ""
"When `dhclient` is executed on the client machine, it begins broadcasting "
"requests for configuration information. By default, these requests use UDP "
"port 68. The server replies on UDP port 67, giving the client an IP address "
"and other relevant network information such as a subnet mask, default "
"gateway, and DNS server addresses. This information is in the form of a "
"DHCP \"lease\" and is valid for a configurable time. This allows stale IP "
"addresses for clients no longer connected to the network to automatically be "
"reused. DHCP clients can obtain a great deal of information from the "
"server. An exhaustive list may be found in man:dhcp-options[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1751
msgid ""
"By default, when a FreeBSD system boots, its DHCP client runs in the "
"background, or _asynchronously_. Other startup scripts continue to run "
"while the DHCP process completes, which speeds up system startup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1756
msgid ""
"Background DHCP works well when the DHCP server responds quickly to the "
"client's requests. However, DHCP may take a long time to complete on some "
"systems. If network services attempt to run before DHCP has assigned the "
"network addressing information, they will fail. Using DHCP in _synchronous_ "
"mode prevents this problem as it pauses startup until the DHCP configuration "
"has completed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1758
msgid ""
"This line in [.filename]#/etc/rc.conf# is used to configure background or "
"asynchronous mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1762
#, no-wrap
msgid "ifconfig_fxp0=\"DHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1766
msgid ""
"This line may already exist if the system was configured to use DHCP during "
"installation. Replace the _fxp0_ shown in these examples with the name of "
"the interface to be dynamically configured, as described in crossref:"
"config[config-network-setup,“Setting Up Network Interface Cards”]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1768
msgid ""
"To instead configure the system to use synchronous mode, and to pause during "
"startup while DHCP completes, use \"`SYNCDHCP`\":"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1772
#, no-wrap
msgid "ifconfig_fxp0=\"SYNCDHCP\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1776
msgid ""
"Additional client options are available. Search for `dhclient` in man:rc."
"conf[5] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1778
msgid "The DHCP client uses the following files:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1780
msgid "[.filename]#/etc/dhclient.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1784
msgid ""
"The configuration file used by `dhclient`. Typically, this file contains "
"only comments as the defaults are suitable for most clients. This "
"configuration file is described in man:dhclient.conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1785
msgid "[.filename]#/sbin/dhclient#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1787
msgid ""
"More information about the command itself can be found in man:dhclient[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1788
msgid "[.filename]#/sbin/dhclient-script#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1791
msgid ""
"The FreeBSD-specific DHCP client configuration script. It is described in "
"man:dhclient-script[8], but should not need any user modification to "
"function properly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1792
msgid "[.filename]#/var/db/dhclient.leases.interface#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1794
msgid ""
"The DHCP client keeps a database of valid leases in this file, which is "
"written as a log and is described in man:dhclient.leases[5]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1797
#, no-wrap
msgid "Installing and Configuring a DHCP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1801
msgid ""
"This section demonstrates how to configure a FreeBSD system to act as a DHCP "
"server using the Internet Systems Consortium (ISC) implementation of the "
"DHCP server. This implementation and its documentation can be installed "
"using the package:net/isc-dhcp44-server[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1804
msgid ""
"The installation of package:net/isc-dhcp44-server[] installs a sample "
"configuration file. Copy [.filename]#/usr/local/etc/dhcpd.conf.example# to "
"[.filename]#/usr/local/etc/dhcpd.conf# and make any edits to this new file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1807
msgid ""
"The configuration file is comprised of declarations for subnets and hosts "
"which define the information that is provided to DHCP clients. For example, "
"these lines configure the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1813
#, no-wrap
msgid ""
"option domain-name \"example.org\";<.>\n"
"option domain-name-servers ns1.example.org;<.>\n"
"option subnet-mask 255.255.255.0;<.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1817
#, no-wrap
msgid ""
"default-lease-time 600;<.>\n"
"max-lease-time 72400;<.>\n"
"ddns-update-style none;<.>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1822
#, no-wrap
msgid ""
"subnet 10.254.239.0 netmask 255.255.255.224 {\n"
" range 10.254.239.10 10.254.239.20;<.>\n"
" option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;<.>\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1827
#, no-wrap
msgid ""
"host fantasia {\n"
" hardware ethernet 08:00:07:26:c0:a5;<.>\n"
" fixed-address fantasia.fugue.com;<.>\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1830
msgid ""
"This option specifies the default search domain that will be provided to "
"clients. Refer to man:resolv.conf[5] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1831
msgid ""
"This option specifies a comma separated list of DNS servers that the client "
"should use. They can be listed by their Fully Qualified Domain Names (FQDN), "
"as seen in the example, or by their IP addresses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1832
msgid "The subnet mask that will be provided to clients."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1833
msgid ""
"The default lease expiry time in seconds. A client can be configured to "
"override this value."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1834
msgid ""
"The maximum allowed length of time, in seconds, for a lease. Should a client "
"request a longer lease, a lease will still be issued, but it will only be "
"valid for `max-lease-time`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1835
msgid ""
"The default of `none` disables dynamic DNS updates. Changing this to "
"`interim` configures the DHCP server to update a DNS server whenever it "
"hands out a lease so that the DNS server knows which IP addresses are "
"associated with which computers in the network. Do not change the default "
"setting unless the DNS server has been configured to support dynamic DNS."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1836
msgid ""
"This line creates a pool of available IP addresses which are reserved for "
"allocation to DHCP clients. The range of addresses must be valid for the "
"network or subnet specified in the previous line."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1837
msgid ""
"Declares the default gateway that is valid for the network or subnet "
"specified before the opening `{` bracket."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1838
msgid ""
"Specifies the hardware MAC address of a client so that the DHCP server can "
"recognize the client when it makes a request."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1839
msgid ""
"Specifies that this host should always be given the same IP address. Using "
"the hostname is correct, since the DHCP server will resolve the hostname "
"before returning the lease information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1842
msgid ""
"This configuration file supports many more options. Refer to dhcpd.conf(5), "
"installed with the server, for details and examples."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1844
msgid ""
"Once the configuration of [.filename]#dhcpd.conf# is complete, enable the "
"DHCP server in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1849
#, no-wrap
msgid ""
"dhcpd_enable=\"YES\"\n"
"dhcpd_ifaces=\"dc0\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1852
msgid ""
"Replace the `dc0` with the interface (or interfaces, separated by "
"whitespace) that the DHCP server should listen on for DHCP client requests."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1854
msgid "Start the server by issuing the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1858
#, no-wrap
msgid "# service isc-dhcpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1861
msgid ""
"Any future changes to the configuration of the server will require the dhcpd "
"service to be stopped and then started using man:service[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1864
msgid ""
"The DHCP server uses the following files. Note that the manual pages are "
"installed with the server software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1866
msgid "[.filename]#/usr/local/sbin/dhcpd#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1868
msgid "More information about the dhcpd server can be found in dhcpd(8)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1869
msgid "[.filename]#/usr/local/etc/dhcpd.conf#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1872
msgid ""
"The server configuration file needs to contain all the information that "
"should be provided to clients, along with information regarding the "
"operation of the server. This configuration file is described in dhcpd."
"conf(5)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1873
msgid "[.filename]#/var/db/dhcpd.leases#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1876
msgid ""
"The DHCP server keeps a database of leases it has issued in this file, which "
"is written as a log. Refer to dhcpd.leases(5), which gives a slightly "
"longer description."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1877
msgid "[.filename]#/usr/local/sbin/dhcrelay#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1881
msgid ""
"This daemon is used in advanced environments where one DHCP server forwards "
"a request from a client to another DHCP server on a separate network. If "
"this functionality is required, install the package:net/isc-dhcp44-relay[] "
"package or port. The installation includes dhcrelay(8) which provides more "
"detail."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1884
#, no-wrap
msgid "Domain Name System (DNS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1889
msgid ""
"Domain Name System (DNS) is the protocol through which domain names are "
"mapped to IP addresses, and vice versa. DNS is coordinated across the "
"Internet through a somewhat complex system of authoritative root, Top Level "
"Domain (TLD), and other smaller-scale name servers, which host and cache "
"individual domain information. It is not necessary to run a name server to "
"perform DNS lookups on a system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1891
msgid "The following table describes some of the terms associated with DNS:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1892
#, no-wrap
msgid "DNS Terminology"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1898
#, no-wrap
msgid "Definition"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1899
#, no-wrap
msgid "Forward DNS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1901
#, no-wrap
msgid "Mapping of hostnames to IP addresses."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1902
#, no-wrap
msgid "Origin"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1904
#, no-wrap
msgid "Refers to the domain covered in a particular zone file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1905
#, no-wrap
msgid "Resolver"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1907
#, no-wrap
msgid "A system process through which a machine queries a name server for zone information."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1908
#, no-wrap
msgid "Reverse DNS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1910
#, no-wrap
msgid "Mapping of IP addresses to hostnames."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1911
#, no-wrap
msgid "Root zone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1913
#, no-wrap
msgid "The beginning of the Internet zone hierarchy. All zones fall under the root zone, similar to how all files in a file system fall under the root directory."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1914
#, no-wrap
msgid "Zone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1915
#, no-wrap
msgid "An individual domain, subdomain, or portion of the DNS administered by the same authority."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1918
msgid "Examples of zones:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1920
msgid "`.` is how the root zone is usually referred to in documentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1921
msgid "`org.` is a Top Level Domain (TLD) under the root zone."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1922
msgid "`example.org.` is a zone under the `org.`TLD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1923
msgid ""
"`1.168.192.in-addr.arpa` is a zone referencing all IP addresses which fall "
"under the `192.168.1.*`IP address space."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1927
msgid ""
"As one can see, the more specific part of a hostname appears to its left. "
"For example, `example.org.` is more specific than `org.`, as `org.` is more "
"specific than the root zone. The layout of each part of a hostname is much "
"like a file system: the [.filename]#/dev# directory falls within the root, "
"and so on."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1928
#, no-wrap
msgid "Reasons to Run a Name Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1931
msgid ""
"Name servers generally come in two forms: authoritative name servers, and "
"caching (also known as resolving) name servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1933
msgid "An authoritative name server is needed when:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1935
msgid ""
"One wants to serve DNS information to the world, replying authoritatively to "
"queries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1936
msgid ""
"A domain, such as `example.org`, is registered and IP addresses need to be "
"assigned to hostnames under it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1937
msgid "An IP address block requires reverse DNS entries (IP to hostname)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1938
msgid "A backup or second name server, called a slave, will reply to queries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1940
msgid "A caching name server is needed when:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1942
msgid ""
"A local DNS server may cache and respond more quickly than querying an "
"outside name server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1946
msgid ""
"When one queries for `www.FreeBSD.org`, the resolver usually queries the "
"uplink ISP's name server, and retrieves the reply. With a local, caching "
"DNS server, the query only has to be made once to the outside world by the "
"caching DNS server. Additional queries will not have to go outside the "
"local network, since the information is cached locally."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1947
#, no-wrap
msgid "DNS Server Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1952
msgid ""
"Unbound is provided in the FreeBSD base system. By default, it will provide "
"DNS resolution to the local machine only. While the base system package can "
"be configured to provide resolution services beyond the local machine, it is "
"recommended that such requirements be addressed by installing Unbound from "
"the FreeBSD Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1954
msgid "To enable Unbound, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1958
#, no-wrap
msgid "local_unbound_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1961
msgid ""
"Any existing nameservers in [.filename]#/etc/resolv.conf# will be configured "
"as forwarders in the new Unbound configuration."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1967
msgid ""
"If any of the listed nameservers do not support DNSSEC, local DNS resolution "
"will fail. Be sure to test each nameserver and remove any that fail the "
"test. The following command will show the trust tree or a failure for a "
"nameserver running on `192.168.1.1`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1971
#, no-wrap
msgid "% drill -S FreeBSD.org @192.168.1.1\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1975
msgid "Once each nameserver is confirmed to support DNSSEC, start Unbound:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1979
#, no-wrap
msgid "# service local_unbound onestart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1983
msgid ""
"This will take care of updating [.filename]#/etc/resolv.conf# so that "
"queries for DNSSEC secured domains will now work. For example, run the "
"following to validate the FreeBSD.org DNSSEC trust tree:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:1989
#, no-wrap
msgid ""
"% drill -S FreeBSD.org\n"
";; Number of trusted keys: 1\n"
";; Chasing: freebsd.org. A\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2005
#, no-wrap
msgid ""
"DNSSEC Trust tree:\n"
"freebsd.org. (A)\n"
"|---freebsd.org. (DNSKEY keytag: 36786 alg: 8 flags: 256)\n"
" |---freebsd.org. (DNSKEY keytag: 32659 alg: 8 flags: 257)\n"
" |---freebsd.org. (DS keytag: 32659 digest type: 2)\n"
" |---org. (DNSKEY keytag: 49587 alg: 7 flags: 256)\n"
" |---org. (DNSKEY keytag: 9795 alg: 7 flags: 257)\n"
" |---org. (DNSKEY keytag: 21366 alg: 7 flags: 257)\n"
" |---org. (DS keytag: 21366 digest type: 1)\n"
" | |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)\n"
" | |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)\n"
" |---org. (DS keytag: 21366 digest type: 2)\n"
" |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)\n"
" |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)\n"
";; Chase successful\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2009
#, no-wrap
msgid "Apache HTTP Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2013
msgid ""
"The open source Apache HTTP Server is the most widely used web server. "
"FreeBSD does not install this web server by default, but it can be installed "
"from the package:www/apache24[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2016
msgid ""
"This section summarizes how to configure and start version 2._x_ of the "
"Apache HTTP Server on FreeBSD. For more detailed information about Apache 2."
"X and its configuration directives, refer to http://httpd.apache.org/[httpd."
"apache.org]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2017
#, no-wrap
msgid "Configuring and Starting Apache"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2022
msgid ""
"In FreeBSD, the main Apache HTTP Server configuration file is installed as [."
"filename]#/usr/local/etc/apache2x/httpd.conf#, where _x_ represents the "
-"version number. This ASCII text file begins comment lines with a `#`. The "
-"most frequently modified directives are:"
+"version number. This ASCII text file begins comment lines with a `+#+`. "
+"The most frequently modified directives are:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2023
#, no-wrap
msgid "`ServerRoot \"/usr/local\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2026
msgid ""
"Specifies the default directory hierarchy for the Apache installation. "
"Binaries are stored in the [.filename]#bin# and [.filename]#sbin# "
"subdirectories of the server root and configuration files are stored in the "
"[.filename]#etc/apache2x# subdirectory."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2027
#, no-wrap
msgid "`ServerAdmin you@example.com`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2030
msgid ""
"Change this to the email address to receive problems with the server. This "
"address also appears on some server-generated pages, such as error documents."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2031
#, no-wrap
msgid "`ServerName www.example.com:80`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2036
msgid ""
"Allows an administrator to set a hostname which is sent back to clients for "
"the server. For example, `www` can be used instead of the actual hostname. "
"If the system does not have a registered DNS name, enter its IP address "
"instead. If the server will listen on an alternate report, change `80` to "
"the alternate port number."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2037
#, no-wrap
msgid "`DocumentRoot \"/usr/local/www/apache2_x_/data\"`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2040
msgid ""
"The directory where documents will be served from. By default, all requests "
"are taken from this directory, but symbolic links and aliases may be used to "
"point to other locations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2044
msgid ""
"It is always a good idea to make a backup copy of the default Apache "
"configuration file before making changes. When the configuration of Apache "
"is complete, save the file and verify the configuration using `apachectl`. "
"Running `apachectl configtest` should return `Syntax OK`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2046
msgid ""
"To launch Apache at system startup, add the following line to [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2050
#, no-wrap
msgid "apache24_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2053
msgid ""
"If Apache should be started with non-default options, the following line may "
"be added to [.filename]#/etc/rc.conf# to specify the needed flags:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2057
#, no-wrap
msgid "apache24_flags=\"\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2060
msgid "If apachectl does not report configuration errors, start `httpd` now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2064
#, no-wrap
msgid "# service apache24 start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2068
msgid ""
"The `httpd` service can be tested by entering `http://_localhost_` in a web "
"browser, replacing _localhost_ with the fully-qualified domain name of the "
"machine running `httpd`. The default web page that is displayed is [."
"filename]#/usr/local/www/apache24/data/index.html#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2070
msgid ""
"The Apache configuration can be tested for errors after making subsequent "
"configuration changes while `httpd` is running using the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2074
#, no-wrap
msgid "# service apache24 configtest\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2079
msgid ""
"It is important to note that `configtest` is not an man:rc[8] standard, and "
"should not be expected to work for all startup scripts."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2081
#, no-wrap
msgid "Virtual Hosting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2087
msgid ""
"Virtual hosting allows multiple websites to run on one Apache server. The "
"virtual hosts can be _IP-based_ or _name-based_. IP-based virtual hosting "
"uses a different IP address for each website. Name-based virtual hosting "
"uses the clients HTTP/1.1 headers to figure out the hostname, which allows "
"the websites to share the same IP address."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2090
msgid ""
"To setup Apache to use name-based virtual hosting, add a `VirtualHost` block "
"for each website. For example, for the webserver named `www.domain.tld` "
"with a virtual domain of `www.someotherdomain.tld`, add the following "
"entries to [.filename]#httpd.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2097
#, no-wrap
msgid ""
"<VirtualHost *>\n"
" ServerName www.domain.tld\n"
" DocumentRoot /www/domain.tld\n"
"</VirtualHost>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2102
#, no-wrap
msgid ""
"<VirtualHost *>\n"
" ServerName www.someotherdomain.tld\n"
" DocumentRoot /www/someotherdomain.tld\n"
"</VirtualHost>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2105
msgid ""
"For each virtual host, replace the values for `ServerName` and "
"`DocumentRoot` with the values to be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2107
msgid ""
"For more information about setting up virtual hosts, consult the official "
"Apache documentation at: http://httpd.apache.org/docs/vhosts/[http://httpd."
"apache.org/docs/vhosts/]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2108
#, no-wrap
msgid "Apache Modules"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2112
msgid ""
"Apache uses modules to augment the functionality provided by the basic "
"server. Refer to http://httpd.apache.org/docs/current/mod/[http://httpd."
"apache.org/docs/current/mod/] for a complete listing of and the "
"configuration details for the available modules."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2117
msgid ""
"In FreeBSD, some modules can be compiled with the package:www/apache24[] "
"port. Type `make config` within [.filename]#/usr/ports/www/apache24# to see "
"which modules are available and which are enabled by default. If the module "
"is not compiled with the port, the FreeBSD Ports Collection provides an easy "
"way to install many modules. This section describes three of the most "
"commonly used modules."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2118
#, no-wrap
msgid "SSL support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2125
msgid ""
"At one in point in time, support for SSL inside of Apache required a "
"secondary module called [.filename]#mod_ssl#. This is no longer the case "
"and the default install of Apache comes with SSL built into the web server. "
"An example of how to enable support for SSL websites is available in the "
"installed file, [.filename]#httpd-ssl.conf# inside of the [.filename]#/usr/"
"local/etc/apache24/extra# directory Inside this directory is also a sample "
"file called named [.filename]#ssl.conf-sample#. It is recommended that both "
"files be evaluated to properly set up secure websites in the Apache web "
"server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2127
msgid ""
"After the configuration of SSL is complete, the following line must be "
"uncommented in the main [.filename]#http.conf# to activate the changes on "
"the next restart or reload of Apache:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2131
#, no-wrap
msgid "#Include etc/apache24/extra/httpd-ssl.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2138
msgid ""
"SSL version two and version three have known vulnerability issues. It is "
"highly recommended TLS version 1.2 and 1.3 be enabled in place of the older "
"SSL options. This can be accomplished by setting the following options in "
"the [.filename]#ssl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2145
#, no-wrap
msgid ""
"SSLProtocol all -SSLv3 -SSLv2 +TLSv1.2 +TLSv1.3\n"
"SSLProxyProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2148
msgid ""
"To complete the configuration of SSL in the web server, uncomment the "
"following line to ensure that the configuration will be pulled into Apache "
"during restart or reload:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2153
#, no-wrap
msgid ""
"# Secure (SSL/TLS) connections\n"
"Include etc/apache24/extra/httpd-ssl.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2156
msgid ""
"The following lines must also be uncommented in the [.filename]#httpd.conf# "
"to fully support SSL in Apache:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2162
#, no-wrap
msgid ""
"LoadModule authn_socache_module libexec/apache24/mod_authn_socache.so\n"
"LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so\n"
"LoadModule ssl_module libexec/apache24/mod_ssl.so\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2166
msgid ""
"The next step is to work with a certificate authority to have the "
"appropriate certificates installed on the system. This will set up a chain "
"of trust for the site and prevent any warnings of self-signed certificates."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2167
#, no-wrap
msgid "[.filename]#mod_perl#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2171
msgid ""
"The [.filename]#mod_perl# module makes it possible to write Apache modules "
"in Perl. In addition, the persistent interpreter embedded in the server "
"avoids the overhead of starting an external interpreter and the penalty of "
"Perl start-up time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2174
msgid ""
"The [.filename]#mod_perl# can be installed using the package:www/mod_perl2[] "
"package or port. Documentation for using this module can be found at http://"
"perl.apache.org/docs/2.0/index.html[http://perl.apache.org/docs/2.0/index."
"html]."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2175
#, no-wrap
msgid "[.filename]#mod_php#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2179
msgid ""
"_PHP: Hypertext Preprocessor_ (PHP) is a general-purpose scripting language "
"that is especially suited for web development. Capable of being embedded "
"into HTML, its syntax draws upon C, Java(TM), and Perl with the intention of "
"allowing web developers to write dynamically generated webpages quickly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2181
msgid ""
"Support for PHP for Apache and any other feature written in the language, "
"can be added by installing the appropriate port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2183
msgid "For all supported versions, search the package database using `pkg`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2187
#, no-wrap
msgid "# pkg search php\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2192
msgid ""
"A list will be displayed including the versions and additional features they "
"provide. The components are completely modular, meaning features are "
"enabled by installing the appropriate port. To install PHP version 7.4 for "
"Apache, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2196
#, no-wrap
msgid "# pkg install mod_php74\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2199
msgid ""
"If any dependency packages need to be installed, they will be installed as "
"well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2202
msgid ""
"By default, PHP will not be enabled. The following lines will need to be "
"added to the Apache configuration file located in [.filename]#/usr/local/etc/"
"apache24# to make it active:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2211
#, no-wrap
msgid ""
"<FilesMatch \"\\.php$\">\n"
" SetHandler application/x-httpd-php\n"
"</FilesMatch>\n"
"<FilesMatch \"\\.phps$\">\n"
" SetHandler application/x-httpd-php-source\n"
"</FilesMatch>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2214
msgid ""
"In addition, the `DirectoryIndex` in the configuration file will also need "
"to be updated and Apache will either need to be restarted or reloaded for "
"the changes to take effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2217
msgid ""
"Support for many of the PHP features may also be installed by using `pkg`. "
"For example, to install support for XML or SSL, install their respective "
"ports:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2221
#, no-wrap
msgid "# pkg install php74-xml php74-openssl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2224
msgid ""
"As before, the Apache configuration will need to be reloaded for the changes "
"to take effect, even in cases where it was just a module install."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2226
msgid ""
"To perform a graceful restart to reload the configuration, issue the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2230
#, no-wrap
msgid "# apachectl graceful\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2234
msgid ""
"Once the install is complete, there are two methods of obtaining the "
"installed PHP support modules and the environmental information of the "
"build. The first is to install the full PHP binary and running the command "
"to gain the information:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2238
#, no-wrap
msgid "# pkg install php74\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2244
#, no-wrap
msgid "# php -i |less\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2247
msgid ""
"It is necessary to pass the output to a pager, such as the `more` or `less` "
"to easier digest the amount of output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2251
msgid ""
"Finally, to make any changes to the global configuration of PHP there is a "
"well documented file installed into [.filename]#/usr/local/etc/php.ini#. At "
"the time of install, this file will not exist because there are two versions "
"to choose from, one is [.filename]#php.ini-development# and the other is [."
"filename]#php.ini-production#. These are starting points to assist "
"administrators in their deployment."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2252
#, no-wrap
msgid "HTTP2 Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2257
msgid ""
"Apache support for the HTTP2 protocol is included by default when installing "
"the port with `pkg`. The new version of HTTP includes many improvements "
"over the previous version, including utilizing a single connection to a "
"website, reducing overall roundtrips of TCP connections. Also, packet "
"header data is compressed and HTTP2 requires encryption by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2260
msgid ""
"When Apache is configured to only use HTTP2, web browsers will require "
"secure, encrypted HTTPS connections. When Apache is configured to use both "
"versions, HTTP1.1 will be considered a fall back option if any issues arise "
"during the connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2263
msgid ""
"While this change does require administrators to make changes, they are "
"positive and equate to a more secure Internet for everyone. The changes are "
"only required for sites not currently implementing SSL and TLS."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2268
msgid ""
"This configuration depends on the previous sections, including TLS support. "
"It is recommended those instructions be followed before continuing with this "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2271
msgid ""
"Start the process by enabling the http2 module by uncommenting the line in [."
"filename]#/usr/local/etc/apache24/httpd.conf# and replace the mpm_prefork "
"module with mpm_event as the former does not support HTTP2."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2276
#, no-wrap
msgid ""
"LoadModule http2_module libexec/apache24/mod_http2.so\n"
"LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2284
msgid ""
"There is a separate [.filename]#mod_http2# port that is available. It "
"exists to deliver security and bug fixes quicker than the module installed "
"with the bundled [.filename]#apache24# port. It is not required for HTTP2 "
"support but is available. When installed, the [.filename]#mod_h2.so# should "
"be used in place of [.filename]#mod_http2.so# in the Apache configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2288
msgid ""
"There are two methods to implement HTTP2 in Apache; one way is globally for "
"all sites and each VirtualHost running on the system. To enable HTTP2 "
"globally, add the following line under the ServerName directive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2292
#, no-wrap
msgid "Protocols h2 http/1.1\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2297
msgid ""
"To enable HTTP2 over plaintext, use h2h2chttp/1.1 in the [.filename]#httpd."
"conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2301
msgid ""
"Having the h2c here will allow plaintext HTTP2 data to pass on the system "
"but is not recommended. In addition, using the http/1.1 here will allow "
"fallback to the HTTP1.1 version of the protocol should it be needed by the "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2303
msgid ""
"To enable HTTP2 for individual VirtualHosts, add the same line within the "
"VirtualHost directive in either [.filename]#httpd.conf# or [.filename]#httpd-"
"ssl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2305
msgid ""
"Reload the configuration using the `apachectl`[parameter]#reload# command "
"and test the configuration either by using either of the following methods "
"after visiting one of the hosted pages:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2309
#, no-wrap
msgid "# grep \"HTTP/2.0\" /var/log/httpd-access.log\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2312
msgid "This should return something similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2319
#, no-wrap
msgid ""
"192.168.1.205 - - [18/Oct/2020:18:34:36 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.2.205 - - [18/Oct/2020:19:19:57 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.0.205 - - [18/Oct/2020:19:20:52 -0400] \"GET / HTTP/2.0\" 304 -\n"
"192.0.2.205 - - [18/Oct/2020:19:23:10 -0400] \"GET / HTTP/2.0\" 304 -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2322
msgid ""
"The other method is using the web browser's built in site debugger or "
"`tcpdump`; however, using either method is beyond the scope of this document."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2325
msgid ""
"Support for HTTP2 reverse proxy connections by using the [."
"filename]#mod_proxy_http2.so# module. When configuring the ProxyPass or "
"RewriteRules [P] statements, they should use h2:// for the connection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2326
#, no-wrap
msgid "Dynamic Websites"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2330
msgid ""
"In addition to mod_perl and mod_php, other languages are available for "
"creating dynamic web content. These include Django and Ruby on Rails."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2331
#, no-wrap
msgid "Django"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2337
msgid ""
"Django is a BSD-licensed framework designed to allow developers to write "
"high performance, elegant web applications quickly. It provides an object-"
"relational mapper so that data types are developed as Python objects. A "
"rich dynamic database-access API is provided for those objects without the "
"developer ever having to write SQL. It also provides an extensible template "
"system so that the logic of the application is separated from the HTML "
"presentation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2341
msgid ""
"Django depends on [.filename]#mod_python#, and an SQL database engine. In "
"FreeBSD, the package:www/py-django[] port automatically installs [."
"filename]#mod_python# and supports the PostgreSQL, MySQL, or SQLite "
"databases, with the default being SQLite. To change the database engine, "
"type `make config` within [.filename]#/usr/ports/www/py-django#, then "
"install the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2344
msgid ""
"Once Django is installed, the application will need a project directory "
"along with the Apache configuration in order to use the embedded Python "
"interpreter. This interpreter is used to call the application for specific "
"URLs on the site."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2346
msgid ""
"To configure Apache to pass requests for certain URLs to the web "
"application, add the following to [.filename]#httpd.conf#, specifying the "
"full path to the project directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2357
#, no-wrap
msgid ""
"<Location \"/\">\n"
" SetHandler python-program\n"
" PythonPath \"['/dir/to/the/django/packages/'] + sys.path\"\n"
" PythonHandler django.core.handlers.modpython\n"
" SetEnv DJANGO_SETTINGS_MODULE mysite.settings\n"
" PythonAutoReload On\n"
" PythonDebug On\n"
"</Location>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2360
msgid ""
"Refer to https://docs.djangoproject.com[https://docs.djangoproject.com] for "
"more information on how to use Django."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2361
#, no-wrap
msgid "Ruby on Rails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2366
msgid ""
"Ruby on Rails is another open source web framework that provides a full "
"development stack. It is optimized to make web developers more productive "
"and capable of writing powerful applications quickly. On FreeBSD, it can be "
"installed using the package:www/rubygem-rails[] package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2368
msgid ""
"Refer to http://guides.rubyonrails.org[http://guides.rubyonrails.org] for "
"more information on how to use Ruby on Rails."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2370
#, no-wrap
msgid "File Transfer Protocol (FTP)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2374
msgid ""
"The File Transfer Protocol (FTP) provides users with a simple way to "
"transfer files to and from an FTP server. FreeBSD includes FTP server "
"software, ftpd, in the base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2378
msgid ""
"FreeBSD provides several configuration files for controlling access to the "
"FTP server. This section summarizes these files. Refer to man:ftpd[8] for "
"more details about the built-in FTP server."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2379
#, no-wrap
msgid "Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2385
msgid ""
"The most important configuration step is deciding which accounts will be "
"allowed access to the FTP server. A FreeBSD system has a number of system "
"accounts which should not be allowed FTP access. The list of users "
"disallowed any FTP access can be found in [.filename]#/etc/ftpusers#. By "
"default, it includes system accounts. Additional users that should not be "
"allowed access to FTP can be added."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2389
msgid ""
"In some cases it may be desirable to restrict the access of some users "
"without preventing them completely from using FTP. This can be accomplished "
"be creating [.filename]#/etc/ftpchroot# as described in man:ftpchroot[5]. "
"This file lists users and groups subject to FTP access restrictions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2394
msgid ""
"To enable anonymous FTP access to the server, create a user named `ftp` on "
"the FreeBSD system. Users will then be able to log on to the FTP server "
"with a username of `ftp` or `anonymous`. When prompted for the password, "
"any input will be accepted, but by convention, an email address should be "
"used as the password. The FTP server will call man:chroot[2] when an "
"anonymous user logs in, to restrict access to only the home directory of the "
"`ftp` user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2399
msgid ""
"There are two text files that can be created to specify welcome messages to "
"be displayed to FTP clients. The contents of [.filename]#/etc/ftpwelcome# "
"will be displayed to users before they reach the login prompt. After a "
"successful login, the contents of [.filename]#/etc/ftpmotd# will be "
"displayed. Note that the path to this file is relative to the login "
"environment, so the contents of [.filename]#~ftp/etc/ftpmotd# would be "
"displayed for anonymous users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2401
msgid ""
"Once the FTP server has been configured, set the appropriate variable in [."
"filename]#/etc/rc.conf# to start the service during boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2405
#, no-wrap
msgid "ftpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2408
msgid "To start the service now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2412
#, no-wrap
msgid "# service ftpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2415
msgid "Test the connection to the FTP server by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2419
#, no-wrap
msgid "% ftp localhost\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2424
msgid ""
"The ftpd daemon uses man:syslog[3] to log messages. By default, the system "
"log daemon will write messages related to FTP in [.filename]#/var/log/"
"xferlog#. The location of the FTP log can be modified by changing the "
"following line in [.filename]#/etc/syslog.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2428
#, no-wrap
msgid "ftp.info /var/log/xferlog\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2437
msgid ""
"Be aware of the potential problems involved with running an anonymous FTP "
"server. In particular, think twice about allowing anonymous users to upload "
"files. It may turn out that the FTP site becomes a forum for the trade of "
"unlicensed commercial software or worse. If anonymous FTP uploads are "
"required, then verify the permissions so that these files cannot be read by "
"other anonymous users until they have been reviewed by an administrator."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2440
#, no-wrap
msgid "File and Print Services for Microsoft(R) Windows(R) Clients (Samba)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2447
msgid ""
"Samba is a popular open source software package that provides file and print "
"services using the SMB/CIFS protocol. This protocol is built into "
"Microsoft(R) Windows(R) systems. It can be added to non-Microsoft(R) "
"Windows(R) systems by installing the Samba client libraries. The protocol "
"allows clients to access shared data and printers. These shares can be "
"mapped as a local disk drive and shared printers can be used as if they were "
"local printers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2450
msgid ""
"On FreeBSD, the Samba client libraries can be installed using the package:"
"net/samba413[] port or package. The client provides the ability for a "
"FreeBSD system to access SMB/CIFS shares in a Microsoft(R) Windows(R) "
"network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2453
msgid ""
"A FreeBSD system can also be configured to act as a Samba server by "
"installing the same package:net/samba413[] port or package. This allows the "
"administrator to create SMB/CIFS shares on the FreeBSD system which can be "
"accessed by clients running Microsoft(R) Windows(R) or the Samba client "
"libraries."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2454
#, no-wrap
msgid "Server Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2458
msgid ""
"Samba is configured in [.filename]#/usr/local/etc/smb4.conf#. This file "
"must be created before Samba can be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2461
msgid ""
"A simple [.filename]#smb4.conf# to share directories and printers with "
"Windows(R) clients in a workgroup is shown here. For more complex setups "
"involving LDAP or Active Directory, it is easier to use man:samba-tool[8] to "
"create the initial [.filename]#smb4.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2471
#, no-wrap
msgid ""
"[global]\n"
"workgroup = WORKGROUP\n"
"server string = Samba Server Version %v\n"
"netbios name = ExampleMachine\n"
"wins support = Yes\n"
"security = user\n"
"passdb backend = tdbsam\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2483
#, no-wrap
msgid ""
"# Example: share /usr/src accessible only to 'developer' user\n"
"[src]\n"
"path = /usr/src\n"
"valid users = developer\n"
"writable = yes\n"
"browsable = yes\n"
"read only = no\n"
"guest ok = no\n"
"public = no\n"
"create mask = 0666\n"
"directory mask = 0755\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2486
#, no-wrap
msgid "Global Settings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2489
msgid ""
"Settings that describe the network are added in [.filename]#/usr/local/etc/"
"smb4.conf#:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2490
#, no-wrap
msgid "`workgroup`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2492
msgid "The name of the workgroup to be served."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2493
#, no-wrap
msgid "`netbios name`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2496
msgid ""
"The NetBIOS name by which a Samba server is known. By default, it is the "
"same as the first component of the host's DNS name."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2497
#, no-wrap
msgid "`server string`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2499
msgid ""
"The string that will be displayed in the output of `net view` and some other "
"networking tools that seek to display descriptive text about the server."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2500
#, no-wrap
msgid "`wins support`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2503
msgid ""
"Whether Samba will act as a WINS server. Do not enable support for WINS on "
"more than one server on the network."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2505
#, no-wrap
msgid "Security Settings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2509
msgid ""
"The most important settings in [.filename]#/usr/local/etc/smb4.conf# are the "
"security model and the backend password format. These directives control "
"the options:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2510
#, no-wrap
msgid "`security`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2514
msgid ""
"The most common settings are `security = share` and `security = user`. If "
"the clients use usernames that are the same as their usernames on the "
"FreeBSD machine, user level security should be used. This is the default "
"security policy and it requires clients to first log on before they can "
"access shared resources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2517
msgid ""
"In share level security, clients do not need to log onto the server with a "
"valid username and password before attempting to connect to a shared "
"resource. This was the default security model for older versions of Samba."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2518
#, no-wrap
msgid "`passdb backend`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2524
msgid ""
"Samba has several different backend authentication models. Clients may be "
"authenticated with LDAP, NIS+, an SQL database, or a modified password "
"file. The recommended authentication method, `tdbsam`, is ideal for simple "
"networks and is covered here. For larger or more complex networks, "
"`ldapsam` is recommended. `smbpasswd` was the former default and is now "
"obsolete."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2525
#, no-wrap
msgid "Samba Users"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2529
msgid ""
"FreeBSD user accounts must be mapped to the `SambaSAMAccount` database for "
"Windows(R) clients to access the share. Map existing FreeBSD user accounts "
"using man:pdbedit[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2533
#, no-wrap
msgid "# pdbedit -a username\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2537
msgid ""
"This section has only mentioned the most commonly used settings. Refer to "
"the https://wiki.samba.org[Official Samba Wiki] for additional information "
"about the available configuration options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2538
#, no-wrap
msgid "Starting Samba"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2541
msgid ""
"To enable Samba at boot time, add the following line to [.filename]#/etc/rc."
"conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2545
#, no-wrap
msgid "samba_server_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2548
msgid "To start Samba now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2555
#, no-wrap
msgid ""
"# service samba_server start\n"
"Performing sanity check on Samba configuration: OK\n"
"Starting nmbd.\n"
"Starting smbd.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2560
msgid ""
"Samba consists of three separate daemons. Both the nmbd and smbd daemons "
"are started by `samba_enable`. If winbind name resolution is also required, "
"set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2564
#, no-wrap
msgid "winbindd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2567
msgid "Samba can be stopped at any time by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2571
#, no-wrap
msgid "# service samba_server stop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2575
msgid ""
"Samba is a complex software suite with functionality that allows broad "
"integration with Microsoft(R) Windows(R) networks. For more information "
"about functionality beyond the basic configuration described here, refer to "
"https://www.samba.org[https://www.samba.org]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2577
#, no-wrap
msgid "Clock Synchronization with NTP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2583
msgid ""
"Over time, a computer's clock is prone to drift. This is problematic as "
"many network services require the computers on a network to share the same "
"accurate time. Accurate time is also needed to ensure that file timestamps "
"stay consistent. The Network Time Protocol (NTP) is one way to provide "
"clock accuracy in a network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2585
msgid ""
"FreeBSD includes man:ntpd[8] which can be configured to query other NTP "
"servers to synchronize the clock on that machine or to provide time services "
"to other computers in the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2588
msgid ""
"This section describes how to configure ntpd on FreeBSD. Further "
"documentation can be found in [.filename]#/usr/share/doc/ntp/# in HTML "
"format."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2589
#, no-wrap
msgid "NTP Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2593
msgid ""
"On FreeBSD, the built-in ntpd can be used to synchronize a system's clock. "
"ntpd is configured using man:rc.conf[5] variables and [.filename]#/etc/ntp."
"conf#, as detailed in the following sections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2596
msgid ""
"ntpd communicates with its network peers using UDP packets. Any firewalls "
"between your machine and its NTP peers must be configured to allow UDP "
"packets in and out on port 123."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2597
#, no-wrap
msgid "The [.filename]#/etc/ntp.conf# file"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2607
msgid ""
"ntpd reads [.filename]#/etc/ntp.conf# to determine which NTP servers to "
"query. Choosing several NTP servers is recommended in case one of the "
"servers becomes unreachable or its clock proves unreliable. As ntpd "
"receives responses, it favors reliable servers over the less reliable ones. "
"The servers which are queried can be local to the network, provided by an "
"ISP, or selected from an http://support.ntp.org/bin/view/Servers/"
"WebHome[ online list of publicly accessible NTP servers]. When choosing a "
"public NTP server, select one that is geographically close and review its "
"usage policy. The `pool` configuration keyword selects one or more servers "
"from a pool of servers. An http://support.ntp.org/bin/view/Servers/"
"NTPPoolServers[ online list of publicly accessible NTP pools] is available, "
"organized by geographic area. In addition, FreeBSD provides a project-"
"sponsored pool, `0.freebsd.pool.ntp.org`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2608
#, no-wrap
msgid "Sample [.filename]#/etc/ntp.conf#"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2613
msgid ""
"This is a simple example of an [.filename]#ntp.conf# file. It can safely be "
"used as-is; it contains the recommended `restrict` options for operation on "
"a publicly-accessible network connection."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2621
#, no-wrap
msgid ""
"# Disallow ntpq control/query access. Allow peers to be added only\n"
"# based on pool and server statements in this file.\n"
"restrict default limited kod nomodify notrap noquery nopeer\n"
"restrict source limited kod nomodify notrap noquery\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2625
#, no-wrap
msgid ""
"# Allow unrestricted access from localhost for queries and control.\n"
"restrict 127.0.0.1\n"
"restrict ::1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2628
#, no-wrap
msgid ""
"# Add a specific server.\n"
"server ntplocal.example.com iburst\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2632
#, no-wrap
msgid ""
"# Add FreeBSD pool servers until 3-6 good servers are available.\n"
"tos minclock 3 maxclock 6\n"
"pool 0.freebsd.pool.ntp.org iburst\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2635
#, no-wrap
msgid ""
"# Use a local leap-seconds file.\n"
"leapfile \"/var/db/ntpd.leap-seconds.list\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2641
msgid ""
"The format of this file is described in man:ntp.conf[5]. The descriptions "
"below provide a quick overview of just the keywords used in the sample file "
"above."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2647
msgid ""
"By default, an NTP server is accessible to any network host. The `restrict` "
"keyword controls which systems can access the server. Multiple `restrict` "
"entries are supported, each one refining the restrictions given in previous "
"statements. The values shown in the example grant the local system full "
"query and control access, while allowing remote systems only the ability to "
"query the time. For more details, refer to the `Access Control Support` "
"subsection of man:ntp.conf[5]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2653
msgid ""
"The `server` keyword specifies a single server to query. The file can "
"contain multiple server keywords, with one server listed on each line. The "
"`pool` keyword specifies a pool of servers. ntpd will add one or more "
"servers from this pool as needed to reach the number of peers specified "
"using the `tos minclock` value. The `iburst` keyword directs ntpd to "
"perform a burst of eight quick packet exchanges with a server when contact "
"is first established, to help quickly synchronize system time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2657
msgid ""
"The `leapfile` keyword specifies the location of a file containing "
"information about leap seconds. The file is updated automatically by man:"
"periodic[8]. The file location specified by this keyword must match the "
"location set in the `ntp_db_leapfile` variable in [.filename]#/etc/rc.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2658
#, no-wrap
msgid "NTP entries in [.filename]#/etc/rc.conf#"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2662
msgid ""
"Set `ntpd_enable=YES` to start ntpd at boot time. Once `ntpd_enable=YES` "
"has been added to [.filename]#/etc/rc.conf#, ntpd can be started immediately "
"without rebooting the system by typing:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2666
#, no-wrap
msgid "# service ntpd start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2670
msgid ""
"Only `ntpd_enable` must be set to use ntpd. The [.filename]#rc.conf# "
"variables listed below may also be set as needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2674
msgid ""
"Set `ntpd_sync_on_start=YES` to allow ntpd to step the clock any amount, one "
"time at startup. Normally ntpd will log an error message and exit if the "
"clock is off by more than 1000 seconds. This option is especially useful on "
"systems without a battery-backed realtime clock."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2676
msgid ""
"Set `ntpd_oomprotect=YES` to protect the ntpd daemon from being killed by "
"the system attempting to recover from an Out Of Memory (OOM) condition."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2678
msgid ""
"Set `ntpd_config=` to the location of an alternate [.filename]#ntp.conf# "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2680
msgid ""
"Set `ntpd_flags=` to contain any other ntpd flags as needed, but avoid using "
"these flags which are managed internally by [.filename]#/etc/rc.d/ntpd#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2682
msgid "`-p` (pid file location)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2683
msgid "`-c` (set `ntpd_config=` instead)"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2685
#, no-wrap
msgid "ntpd and the unpriveleged `ntpd` user"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2692
msgid ""
"ntpd on FreeBSD can start and run as an unpriveleged user. Doing so "
"requires the man:mac_ntpd[4] policy module. The [.filename]#/etc/rc.d/ntpd# "
"startup script first examines the NTP configuration. If possible, it loads "
"the `mac_ntpd` module, then starts ntpd as unpriveleged user `ntpd` (user id "
"123). To avoid problems with file and directory access, the startup script "
"will not automatically start ntpd as `ntpd` when the configuration contains "
"any file-related options."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2694
msgid ""
"The presence of any of the following in `ntpd_flags` requires manual "
"configuration as described below to run as the `ntpd` user:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2696
msgid "-f or --driftfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2697
msgid "-i or --jaildir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2698
msgid "-k or --keyfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2699
msgid "-l or --logfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2700
msgid "-s or --statsdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2702
msgid ""
"The presence of any of the following keywords in [.filename]#ntp.conf# "
"requires manual configuration as described below to run as the `ntpd` user:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2704
msgid "crypto"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2705
msgid "driftfile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2706
msgid "key"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2707
msgid "logdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2708
msgid "statsdir"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2710
msgid "To manually configure ntpd to run as user `ntpd` you must:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2712
msgid ""
"Ensure that the `ntpd` user has access to all the files and directories "
"specified in the configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2713
msgid ""
"Arrange for the `mac_ntpd` module to be loaded or compiled into the kernel. "
"See man:mac_ntpd[4] for details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2714
msgid "Set `ntpd_user=\"ntpd\"` in [.filename]#/etc/rc.conf#"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2715
#, no-wrap
msgid "Using NTP with a PPP Connection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2720
msgid ""
"ntpd does not need a permanent connection to the Internet to function "
"properly. However, if a PPP connection is configured to dial out on demand, "
"NTP traffic should be prevented from triggering a dial out or keeping the "
"connection alive. This can be configured with `filter` directives in [."
"filename]#/etc/ppp/ppp.conf#. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2731
#, no-wrap
msgid ""
"set filter dial 0 deny udp src eq 123\n"
"# Prevent NTP traffic from initiating dial out\n"
"set filter dial 1 permit 0 0\n"
"set filter alive 0 deny udp src eq 123\n"
"# Prevent incoming NTP traffic from keeping the connection open\n"
"set filter alive 1 deny udp dst eq 123\n"
"# Prevent outgoing NTP traffic from keeping the connection open\n"
"set filter alive 2 permit 0/0 0/0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2734
msgid ""
"For more details, refer to the `PACKET FILTERING` section in man:ppp[8] and "
"the examples in [.filename]#/usr/share/examples/ppp/#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2738
msgid ""
"Some Internet access providers block low-numbered ports, preventing NTP from "
"functioning since replies never reach the machine."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2741
#, no-wrap
msgid "iSCSI Initiator and Target Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2745
msgid ""
"iSCSI is a way to share storage over a network. Unlike NFS, which works at "
"the file system level, iSCSI works at the block device level."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2749
msgid ""
"In iSCSI terminology, the system that shares the storage is known as the "
"_target_. The storage can be a physical disk, or an area representing "
"multiple disks or a portion of a physical disk. For example, if the disk(s) "
"are formatted with ZFS, a zvol can be created to use as the iSCSI storage."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2753
msgid ""
"The clients which access the iSCSI storage are called _initiators_. To "
"initiators, the storage available through iSCSI appears as a raw, "
"unformatted disk known as a LUN. Device nodes for the disk appear in [."
"filename]#/dev/# and the device must be separately formatted and mounted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2756
msgid ""
"FreeBSD provides a native, kernel-based iSCSI target and initiator. This "
"section describes how to configure a FreeBSD system as a target or an "
"initiator."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2758
#, no-wrap
msgid "Configuring an iSCSI Target"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2761
msgid ""
"To configure an iSCSI target, create the [.filename]#/etc/ctl.conf# "
"configuration file, add a line to [.filename]#/etc/rc.conf# to make sure the "
"man:ctld[8] daemon is automatically started at boot, and then start the "
"daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2764
msgid ""
"The following is an example of a simple [.filename]#/etc/ctl.conf# "
"configuration file. Refer to man:ctl.conf[5] for a more complete "
"description of this file's available options."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2772
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2850
#, no-wrap
msgid ""
"portal-group pg0 {\n"
"\tdiscovery-auth-group no-authentication\n"
"\tlisten 0.0.0.0\n"
"\tlisten [::]\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2776
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tauth-group no-authentication\n"
"\tportal-group pg0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2782
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2880
#, no-wrap
msgid ""
"\tlun 0 {\n"
"\t\tpath /data/target0-0\n"
"\t\tsize 4G\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2788
msgid ""
"The first entry defines the `pg0` portal group. Portal groups define which "
"network addresses the man:ctld[8] daemon will listen on. The `discovery-"
"auth-group no-authentication` entry indicates that any initiator is allowed "
"to perform iSCSI target discovery without authentication. Lines three and "
"four configure man:ctld[8] to listen on all IPv4 (`listen 0.0.0.0`) and IPv6 "
"(`listen [::]`) addresses on the default port of 3260."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2791
msgid ""
"It is not necessary to define a portal group as there is a built-in portal "
"group called `default`. In this case, the difference between `default` and "
"`pg0` is that with `default`, target discovery is always denied, while with "
"`pg0`, it is always allowed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2799
msgid ""
"The second entry defines a single target. Target has two possible meanings: "
"a machine serving iSCSI or a named group of LUNs. This example uses the "
"latter meaning, where `iqn.2012-06.com.example:target0` is the target name. "
"This target name is suitable for testing purposes. For actual use, change "
"`com.example` to the real domain name, reversed. The `2012-06` represents "
"the year and month of acquiring control of that domain name, and `target0` "
"can be any value. Any number of targets can be defined in this "
"configuration file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2801
msgid ""
"The `auth-group no-authentication` line allows all initiators to connect to "
"the specified target and `portal-group pg0` makes the target reachable "
"through the `pg0` portal group."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2809
msgid ""
"The next section defines the LUN. To the initiator, each LUN will be "
"visible as a separate disk device. Multiple LUNs can be defined for each "
"target. Each LUN is identified by a number, where LUN 0 is mandatory. The "
"`path /data/target0-0` line defines the full path to a file or zvol backing "
"the LUN. That path must exist before starting man:ctld[8]. The second line "
"is optional and specifies the size of the LUN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2811
msgid ""
"Next, to make sure the man:ctld[8] daemon is started at boot, add this line "
"to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2815
#, no-wrap
msgid "ctld_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2818
msgid "To start man:ctld[8] now, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2822
#, no-wrap
msgid "# service ctld start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2826
msgid ""
"As the man:ctld[8] daemon is started, it reads [.filename]#/etc/ctl.conf#. "
"If this file is edited after the daemon starts, use this command so that the "
"changes take effect immediately:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2830
#, no-wrap
msgid "# service ctld reload\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2833
#, no-wrap
msgid "Authentication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2837
msgid ""
"The previous example is inherently insecure as it uses no authentication, "
"granting anyone full access to all targets. To require a username and "
"password to access targets, modify the configuration as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2844
#, no-wrap
msgid ""
"auth-group ag0 {\n"
"\tchap username1 secretsecret\n"
"\tchap username2 anothersecret\n"
"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2859
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tauth-group ag0\n"
"\tportal-group pg0\n"
"\tlun 0 {\n"
"\t\tpath /data/target0-0\n"
"\t\tsize 4G\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2865
msgid ""
"The `auth-group` section defines username and password pairs. An initiator "
"trying to connect to `iqn.2012-06.com.example:target0` must first specify a "
"defined username and secret. However, target discovery is still permitted "
"without authentication. To require target discovery authentication, set "
"`discovery-auth-group` to a defined `auth-group` name instead of `no-"
"authentication`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2868
msgid ""
"It is common to define a single exported target for every initiator. As a "
"shorthand for the syntax above, the username and password can be specified "
"directly in the target entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2874
#, no-wrap
msgid ""
"target iqn.2012-06.com.example:target0 {\n"
"\tportal-group pg0\n"
"\tchap username1 secretsecret\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2884
#, no-wrap
msgid "Configuring an iSCSI Initiator"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2890
msgid ""
"The iSCSI initiator described in this section is supported starting with "
"FreeBSD 10.0-RELEASE. To use the iSCSI initiator available in older "
"versions, refer to man:iscontrol[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2895
msgid ""
"The iSCSI initiator requires that the man:iscsid[8] daemon is running. This "
"daemon does not use a configuration file. To start it automatically at "
"boot, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2899
#, no-wrap
msgid "iscsid_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2902
msgid "To start man:iscsid[8] now, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2906
#, no-wrap
msgid "# service iscsid start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2910
msgid ""
"Connecting to a target can be done with or without an [.filename]#/etc/iscsi."
"conf# configuration file. This section demonstrates both types of "
"connections."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2911
#, no-wrap
msgid "Connecting to a Target Without a Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2914
msgid ""
"To connect an initiator to a single target, specify the IP address of the "
"portal and the name of the target:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2918
#, no-wrap
msgid "# iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2922
msgid ""
"To verify if the connection succeeded, run `iscsictl` without any "
"arguments. The output should look similar to this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2927
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Connected: da0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2931
msgid ""
"In this example, the iSCSI session was successfully established, with [."
"filename]#/dev/da0# representing the attached LUN. If the `iqn.2012-06.com."
"example:target0` target exports more than one LUN, multiple device nodes "
"will be shown in that section of the output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2935
#, no-wrap
msgid "Connected: da0 da1 da2.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2939
msgid ""
"Any errors will be reported in the output, as well as the system logs. For "
"example, this message usually means that the man:iscsid[8] daemon is not "
"running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2944
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Waiting for iscsid(8)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2947
msgid ""
"The following message suggests a networking problem, such as a wrong IP "
"address or port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2952
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.11 Connection refused\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2955
msgid "This message means that the specified target name is wrong:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2960
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Not found\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2963
msgid "This message means that the target requires authentication:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2968
#, no-wrap
msgid ""
"Target name Target portal State\n"
"iqn.2012-06.com.example:target0 10.10.10.10 Authentication failed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2971
msgid "To specify a CHAP username and secret, use this syntax:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2975
#, no-wrap
msgid "# iscsictl -A -p 10.10.10.10 -t iqn.2012-06.com.example:target0 -u user -s secretsecret\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2978
#, no-wrap
msgid "Connecting to a Target with a Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2981
msgid ""
"To connect using a configuration file, create [.filename]#/etc/iscsi.conf# "
"with contents like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2991
#, no-wrap
msgid ""
"t0 {\n"
"\tTargetAddress = 10.10.10.10\n"
"\tTargetName = iqn.2012-06.com.example:target0\n"
"\tAuthMethod = CHAP\n"
"\tchapIName = user\n"
"\tchapSecret = secretsecret\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:2998
msgid ""
"The `t0` specifies a nickname for the configuration file section. It will "
"be used by the initiator to specify which configuration to use. The other "
"lines specify the parameters to use during connection. The `TargetAddress` "
"and `TargetName` are mandatory, whereas the other options are optional. In "
"this example, the CHAP username and secret are shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3000
msgid "To connect to the defined target, specify the nickname:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3004
#, no-wrap
msgid "# iscsictl -An t0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3007
msgid ""
"Alternately, to connect to all targets defined in the configuration file, "
"use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3011
#, no-wrap
msgid "# iscsictl -Aa\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3014
msgid ""
"To make the initiator automatically connect to all targets in [.filename]#/"
"etc/iscsi.conf#, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/network-servers/_index.adoc:3019
#, no-wrap
msgid ""
"iscsictl_enable=\"YES\"\n"
"iscsictl_flags=\"-Aa\"\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/parti.po b/documentation/content/en/books/handbook/parti.po
index 8770e9df87..db10606772 100644
--- a/documentation/content/en/books/handbook/parti.po
+++ b/documentation/content/en/books/handbook/parti.po
@@ -1,72 +1,77 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-01-08 11:34-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/parti.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/parti.adoc:11
#, no-wrap
msgid "Getting Started"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:15
msgid ""
"This part of the handbook is for users and administrators who are new to "
"FreeBSD. These chapters:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:17
msgid "Introduce FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:18
msgid "Guide readers through the installation process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:19
msgid "Teach UNIX(R) basics and fundamentals."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:20
msgid ""
"Show how to install the wealth of third party applications available for "
"FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:21
msgid ""
"Introduce X, the UNIX(R) windowing system, and detail how to configure a "
"desktop environment that makes users more productive."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/parti.adoc:22
+msgid "Introduce Wayland, a new display server for UNIX(R)."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/parti.adoc:23
msgid ""
"The number of forward references in the text have been kept to a minimum so "
"that this section can be read from front to back with minimal page flipping."
msgstr ""
diff --git a/documentation/content/en/books/handbook/pgpkeys/_index.po b/documentation/content/en/books/handbook/pgpkeys/_index.po
index b808f686dc..617ddc4cc3 100644
--- a/documentation/content/en/books/handbook/pgpkeys/_index.po
+++ b/documentation/content/en/books/handbook/pgpkeys/_index.po
@@ -1,87 +1,81 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-02-01 09:20-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:1
#, no-wrap
msgid "List of OpenPGP keys of the FreeBSD officers are shown here"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:1
#, no-wrap
msgid "Part V. Appendices"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:1
#, no-wrap
msgid "Appendix D. OpenPGP Keys"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:15
#, no-wrap
msgid "OpenPGP Keys"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:60
msgid ""
"The OpenPGP keys of the `FreeBSD.org` officers are shown here. These keys "
"can be used to verify a signature or send encrypted email to one of the "
"officers. A full list of FreeBSD OpenPGP keys is available in the extref:"
"{pgpkeys}[PGP Keys] article. The complete keyring can be downloaded at link:"
"https://docs.FreeBSD.org/pgpkeys/pgpkeys.txt[pgpkeyring.txt]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:62
#, no-wrap
msgid "Officers"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:64
#, no-wrap
msgid "{security-officer-name} `<{security-officer-email}>`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:67
#, no-wrap
-msgid "{secteam-secretary-name} `<{secteam-secretary-email}>`"
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:70
-#, no-wrap
msgid "{core-secretary-name} `<{core-secretary-email}>`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:73
+#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:70
#, no-wrap
msgid "{portmgr-secretary-name} `<{portmgr-secretary-email}>`"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:76
+#: documentation/content/en/books/handbook/pgpkeys/_index.adoc:73
#, no-wrap
msgid "`{doceng-secretary-email}`"
msgstr ""
diff --git a/documentation/content/en/books/handbook/ports/_index.po b/documentation/content/en/books/handbook/ports/_index.po
index 2d40728a4d..13c2b9f50c 100644
--- a/documentation/content/en/books/handbook/ports/_index.po
+++ b/documentation/content/en/books/handbook/ports/_index.po
@@ -1,2554 +1,2556 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/ports/_index.adoc:1
#, no-wrap
msgid "FreeBSD provides two complementary technologies for installing third-party software: the FreeBSD Ports Collection, for installing from source, and packages, for installing from pre-built binaries"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/ports/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/ports/_index.adoc:1
#, no-wrap
msgid "Chapter 4. Installing Applications: Packages and Ports"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/ports/_index.adoc:15
#, no-wrap
msgid "Installing Applications: Packages and Ports"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:59
msgid ""
"FreeBSD is bundled with a rich collection of system tools as part of the "
"base system. In addition, FreeBSD provides two complementary technologies "
"for installing third-party software: the FreeBSD Ports Collection, for "
"installing from source, and packages, for installing from pre-built "
"binaries. Either method may be used to install software from local media or "
"from the network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:61
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:63
msgid "The difference between binary packages and ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:64
msgid "How to find third-party software that has been ported to FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:65
msgid "How to manage binary packages using pkg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:66
msgid ""
"How to build third-party software from source using the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:67
msgid ""
"How to find the files installed with the application for post-installation "
"configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ports/_index.adoc:68
msgid "What to do if a software installation fails."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ports/_index.adoc:70
#, no-wrap
msgid "Overview of Software Installation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:73
-msgid ""
-"The typical steps for installing third-party software on a UNIX(R) system "
-"include:"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:76
-msgid ""
-"Find and download the software, which might be distributed in source code "
-"format or as a binary."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:77
-msgid ""
-"Unpack the software from its distribution format. This is typically a "
-"tarball compressed with a program such as man:compress[1], man:gzip[1], man:"
-"bzip2[1] or man:xz[1]."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:78
-msgid ""
-"Locate the documentation in [.filename]#INSTALL#, [.filename]#README# or "
-"some file in a [.filename]#doc/# subdirectory and read up on how to install "
-"the software."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:79
-msgid ""
-"If the software was distributed in source format, compile it. This may "
-"involve editing a [.filename]#Makefile# or running a `configure` script."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:80
-msgid "Test and install the software."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:83
+#: documentation/content/en/books/handbook/ports/_index.adoc:74
msgid ""
"A FreeBSD _port_ is a collection of files designed to automate the process "
"of compiling an application from source code. The files that comprise a "
"port contain all the necessary information to automatically download, "
"extract, patch, compile, and install the application."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:85
+#: documentation/content/en/books/handbook/ports/_index.adoc:76
msgid ""
"If the software has not already been adapted and tested on FreeBSD, the "
"source code might need editing in order for it to install and run properly."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:88
+#: documentation/content/en/books/handbook/ports/_index.adoc:79
msgid ""
"However, over link:https://www.FreeBSD.org/ports/[{numports}] third-party "
"applications have already been ported to FreeBSD. When feasible, these "
"applications are made available for download as pre-compiled _packages_."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:90
+#: documentation/content/en/books/handbook/ports/_index.adoc:81
msgid ""
"Packages can be manipulated with the FreeBSD package management commands."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:93
+#: documentation/content/en/books/handbook/ports/_index.adoc:84
msgid ""
"Both packages and ports understand dependencies. If a package or port is "
"used to install an application and a dependent library is not already "
"installed, the library will automatically be installed first."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:96
+#: documentation/content/en/books/handbook/ports/_index.adoc:87
msgid ""
"A FreeBSD package contains pre-compiled copies of all the commands for an "
"application, as well as any configuration files and documentation. A "
"package can be manipulated with the man:pkg[8] commands, such as `pkg "
"install`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:99
+#: documentation/content/en/books/handbook/ports/_index.adoc:90
msgid ""
"While the two technologies are similar, packages and ports each have their "
"own strengths. Select the technology that meets your requirements for "
"installing a particular application."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/ports/_index.adoc:100
+#: documentation/content/en/books/handbook/ports/_index.adoc:91
#, no-wrap
msgid "Package Benefits"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:102
+#: documentation/content/en/books/handbook/ports/_index.adoc:93
msgid ""
"A compressed package tarball is typically smaller than the compressed "
"tarball containing the source code for the application."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:103
+#: documentation/content/en/books/handbook/ports/_index.adoc:94
msgid ""
"Packages do not require compilation time. For large applications, such as "
-"Mozilla, KDE, or GNOME, this can be important on a slow system."
+"Firefox, KDE Plasma, or GNOME, this can be important on a slow system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:104
+#: documentation/content/en/books/handbook/ports/_index.adoc:95
msgid ""
"Packages do not require any understanding of the process involved in "
"compiling software on FreeBSD."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/ports/_index.adoc:105
+#: documentation/content/en/books/handbook/ports/_index.adoc:96
#, no-wrap
msgid "Port Benefits"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:107
+#: documentation/content/en/books/handbook/ports/_index.adoc:98
msgid ""
"Packages are normally compiled with conservative options because they have "
"to run on the maximum number of systems. By compiling from the port, one can "
"change the compilation options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:108
+#: documentation/content/en/books/handbook/ports/_index.adoc:99
msgid ""
"Some applications have compile-time options relating to which features are "
-"installed. For example, Apache can be configured with a wide variety of "
+"installed. For example, NGINX(R) can be configured with a wide variety of "
"different built-in options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:110
+#: documentation/content/en/books/handbook/ports/_index.adoc:101
msgid ""
"In some cases, multiple packages will exist for the same application to "
-"specify certain settings. For example, Ghostscript is available as a [."
-"filename]#ghostscript# package and a [.filename]#ghostscript-nox11# package, "
-"depending on whether or not Xorg is installed. Creating multiple packages "
-"rapidly becomes impossible if an application has more than one or two "
-"different compile-time options."
+"specify certain settings. For example, NGINX(R) is available as a `nginx` "
+"package and a `nginx-lite` package, depending on whether or not Xorg is "
+"installed. Creating multiple packages rapidly becomes impossible if an "
+"application has more than one or two different compile-time options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:111
+#: documentation/content/en/books/handbook/ports/_index.adoc:102
msgid ""
"The licensing conditions of some software forbid binary distribution. Such "
"software must be distributed as source code which must be compiled by the "
"end-user."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:112
+#: documentation/content/en/books/handbook/ports/_index.adoc:103
msgid ""
"Some people do not trust binary distributions or prefer to read through "
"source code in order to look for potential problems."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:113
+#: documentation/content/en/books/handbook/ports/_index.adoc:104
msgid "Source code is needed in order to apply custom patches."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:115
+#: documentation/content/en/books/handbook/ports/_index.adoc:106
msgid ""
"To keep track of updated ports, subscribe to the {freebsd-ports} and the "
"{freebsd-ports-bugs}."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:120
+#: documentation/content/en/books/handbook/ports/_index.adoc:110
msgid ""
"Before installing any application, check https://vuxml.freebsd.org/[] for "
"security issues related to the application or type `pkg audit -F` to check "
"all installed applications for known vulnerabilities."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:123
+#: documentation/content/en/books/handbook/ports/_index.adoc:113
msgid ""
"The remainder of this chapter explains how to use packages and ports to "
"install and manage third-party software on FreeBSD."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:125
+#: documentation/content/en/books/handbook/ports/_index.adoc:115
#, no-wrap
msgid "Finding Software"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:129
+#: documentation/content/en/books/handbook/ports/_index.adoc:119
msgid ""
"FreeBSD's list of available applications is growing all the time. There are "
"a number of ways to find software to install:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:131
+#: documentation/content/en/books/handbook/ports/_index.adoc:121
msgid ""
"The FreeBSD web site maintains an up-to-date searchable list of all the "
-"available applications, at link:https://www.FreeBSD.org/ports/[https://www."
-"FreeBSD.org/ports/]. The ports can be searched by application name or by "
-"software category."
+"available applications, at link:https://www.FreeBSD.org/ports/[Ports "
+"Portal]. The ports can be searched by application name or by software "
+"category."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:132
+#: documentation/content/en/books/handbook/ports/_index.adoc:122
msgid ""
-"Dan Langille maintains http://www.FreshPorts.org/[FreshPorts.org] which "
+"Dan Langille maintains https://www.freshports.org/[FreshPorts] which "
"provides a comprehensive search utility and also tracks changes to the "
"applications in the Ports Collection. Registered users can create a "
"customized watch list in order to receive an automated email when their "
"watched ports are updated."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:133
+#: documentation/content/en/books/handbook/ports/_index.adoc:123
msgid ""
"If finding a particular application becomes challenging, try searching a "
-"site like http://www.sourceforge.net/[SourceForge.net] or http://www.github."
-"com/[GitHub.com] then check back at the link:https://www.FreeBSD.org/ports/"
-"[FreeBSD site] to see if the application has been ported."
+"site like https://sourceforge.net/[SourceForge] or https://github.com/"
+"[GitHub] then check back at the link:https://www.FreeBSD.org/ports/[Ports "
+"Portal] to see if the application has been ported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:134
-msgid "To search the binary package repository for an application:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:124
+msgid ""
+"Search the binary package repository for an application using the man:pkg[8] "
+"command"
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:149
+#. type: Title ==
+#: documentation/content/en/books/handbook/ports/_index.adoc:126
#, no-wrap
-msgid ""
-"# pkg search subversion\n"
-"git-subversion-1.9.2\n"
-"java-subversion-1.8.8_2\n"
-"p5-subversion-1.8.8_2\n"
-"py27-hgsubversion-1.6\n"
-"py27-subversion-1.8.8_2\n"
-"ruby-subversion-1.8.8_2\n"
-"subversion-1.8.8_2\n"
-"subversion-book-4515\n"
-"subversion-static-1.8.8_2\n"
-"subversion16-1.6.23_4\n"
-"subversion17-1.7.16_2\n"
+msgid "Using pkg for Binary Package Management"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:157
+#: documentation/content/en/books/handbook/ports/_index.adoc:129
msgid ""
-"Package names include the version number and, in the case of ports based on "
-"python, the version number of the version of python the package was built "
-"with. Some ports also have multiple versions available. In the case of "
-"Subversion, there are different versions available, as well as different "
-"compile options. In this case, the statically linked version of "
-"Subversion. When indicating which package to install, it is best to specify "
-"the application by the port origin, which is the path in the ports tree. "
-"Repeat the `pkg search` with `-o` to list the origin of each package:"
+"man:pkg[8] provides an interface for manipulating\tpackages: registering, "
+"adding, removing and upgrading packages."
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:172
-#, no-wrap
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:131
msgid ""
-"# pkg search -o subversion\n"
-"devel/git-subversion\n"
-"java/java-subversion\n"
-"devel/p5-subversion\n"
-"devel/py-hgsubversion\n"
-"devel/py-subversion\n"
-"devel/ruby-subversion\n"
-"devel/subversion16\n"
-"devel/subversion17\n"
-"devel/subversion\n"
-"devel/subversion-book\n"
-"devel/subversion-static\n"
+"For sites wishing to only use prebuilt binary packages from the FreeBSD "
+"mirrors, managing packages with man:pkg[8] can be sufficient."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:176
+#: documentation/content/en/books/handbook/ports/_index.adoc:133
msgid ""
-"Searching by shell globs, regular expressions, exact match, by description, "
-"or any other field in the repository database is also supported by `pkg "
-"search`. After installing package:ports-mgmt/pkg[] or package:ports-mgmt/"
-"pkg-devel[], see man:pkg-search[8] for more details."
+"However, for those sites building from source a separate <<ports-upgrading-"
+"tools, port management tool>> will be needed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:177
+#: documentation/content/en/books/handbook/ports/_index.adoc:136
msgid ""
-"If the Ports Collection is already installed, there are several methods to "
-"query the local version of the ports tree. To find out which category a port "
-"is in, type `whereis _file_`, where _file_ is the program to be installed:"
+"Since man:pkg[8] only works with binary packages, it is not a replacement "
+"for such tools. Those tools can be used to install software from both "
+"binary packages and the Ports Collection, while man:pkg[8] installs only "
+"binary packages."
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:182
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:138
#, no-wrap
-msgid ""
-"# whereis lsof\n"
-"lsof: /usr/ports/sysutils/lsof\n"
+msgid "Getting Started with pkg"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:185
-msgid "Alternately, an man:echo[1] statement can be used:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:190
-#, no-wrap
+#: documentation/content/en/books/handbook/ports/_index.adoc:142
msgid ""
-"# echo /usr/ports/*/*lsof*\n"
-"/usr/ports/sysutils/lsof\n"
+"All supported versions of FreeBSD now contain `/usr/sbin/pkg` a.k.a man:"
+"pkg[7]. This is a small placeholder that has just the minimum functionality "
+"required to install the real man:pkg[8]."
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:193
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:146
msgid ""
-"Note that this will also return any matched files downloaded into the [."
-"filename]#/usr/ports/distfiles# directory."
+"An Internet working connection is required for the bootstrap process to "
+"succeed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:194
-msgid ""
-"Another way to find software is by using the Ports Collection's built-in "
-"search mechanism. To use the search feature, cd to [.filename]#/usr/ports# "
-"then run `make search name=program-name` where _program-name_ is the name of "
-"the software. For example, to search for `lsof`:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:149
+msgid "Run man:pkg[8] command line:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:206
+#: documentation/content/en/books/handbook/ports/_index.adoc:153
#, no-wrap
-msgid ""
-"# cd /usr/ports\n"
-"# make search name=lsof\n"
-"Port: lsof-4.88.d,8\n"
-"Path: /usr/ports/sysutils/lsof\n"
-"Info: Lists information about open files (similar to fstat(1))\n"
-"Maint: ler@lerctr.org\n"
-"Index: sysutils\n"
-"B-deps:\n"
-"R-deps:\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:213
-msgid ""
-"The built-in search mechanism uses a file of index information. If a "
-"message indicates that the [.filename]#INDEX# is required, run `make "
-"fetchindex` to download the current index file. With the [.filename]#INDEX# "
-"present, `make search` will be able to perform the requested search."
+msgid "# pkg\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:216
-msgid "The \"Path:\" line indicates where to find the port."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:218
-msgid "To receive less information, use the `quicksearch` feature:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:156
+#: documentation/content/en/books/handbook/ports/_index.adoc:256
+#: documentation/content/en/books/handbook/ports/_index.adoc:288
+#: documentation/content/en/books/handbook/ports/_index.adoc:323
+#: documentation/content/en/books/handbook/ports/_index.adoc:350
+#: documentation/content/en/books/handbook/ports/_index.adoc:395
+#: documentation/content/en/books/handbook/ports/_index.adoc:450
+#: documentation/content/en/books/handbook/ports/_index.adoc:477
+#: documentation/content/en/books/handbook/ports/_index.adoc:507
+#: documentation/content/en/books/handbook/ports/_index.adoc:532
+#: documentation/content/en/books/handbook/ports/_index.adoc:550
+msgid "The output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:226
+#: documentation/content/en/books/handbook/ports/_index.adoc:161
#, no-wrap
msgid ""
-"# cd /usr/ports\n"
-"# make quicksearch name=lsof\n"
-"Port: lsof-4.88.d,8\n"
-"Path: /usr/ports/sysutils/lsof\n"
-"Info: Lists information about open files (similar to fstat(1))\n"
+"The package management tool is not yet installed on your system.\n"
+"Do you want to fetch and install it not? [y/N]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:230
+#: documentation/content/en/books/handbook/ports/_index.adoc:164
msgid ""
-"For more in-depth searching, use `make search key=_string_` or `make "
-"quicksearch key=_string_`, where _string_ is some text to search for. The "
-"text can be in comments, descriptions, or dependencies in order to find "
-"ports which relate to a particular subject when the name of the program is "
-"unknown."
+"man:pkg[7] will intercept the command, and if you confirm that is your "
+"intention, download the man:pkg[8] tarball, install man:pkg[8] from it, "
+"bootstrap the local package database and then proceed to run the command you "
+"originally requested."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:233
+#: documentation/content/en/books/handbook/ports/_index.adoc:166
msgid ""
-"When using `search` or `quicksearch`, the search string is case-"
-"insensitive. Searching for \"LSOF\" will yield the same results as "
-"searching for \"lsof\"."
-msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:235
-#, no-wrap
-msgid "Using pkg for Binary Package Management"
+"More recent versions of man:pkg[7] understand `pkg -N` as a test to see if "
+"man:pkg[8] is installed without triggering the installation, and conversely, "
+"pkg bootstrap[-f] to install man:pkg[8] (or force it to be reinstalled) "
+"without performing any other actions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:238
+#: documentation/content/en/books/handbook/ports/_index.adoc:169
msgid ""
-"pkg is the next generation replacement for the traditional FreeBSD package "
-"management tools, offering many features that make dealing with binary "
-"packages faster and easier."
+"Usage information for pkg is available in the man:pkg[8] manual page or by "
+"running `pkg` without additional arguments. Additional pkg configuration "
+"options are described in man:pkg.conf[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:240
+#: documentation/content/en/books/handbook/ports/_index.adoc:171
msgid ""
-"For sites wishing to only use prebuilt binary packages from the FreeBSD "
-"mirrors, managing packages with pkg can be sufficient."
+"Each pkg command argument is documented in a command-specific manual page."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:242
+#: documentation/content/en/books/handbook/ports/_index.adoc:173
msgid ""
-"However, for those sites building from source or using their own "
-"repositories, a separate <<ports-upgrading-tools,port management tool>> will "
-"be needed."
+"To read the manual page for `pkg install`, for example, run this command:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:177
+#, no-wrap
+msgid "# pkg help install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:245
+#: documentation/content/en/books/handbook/ports/_index.adoc:182
msgid ""
-"Since pkg only works with binary packages, it is not a replacement for such "
-"tools. Those tools can be used to install software from both binary "
-"packages and the Ports Collection, while pkg installs only binary packages."
+"The rest of this section demonstrates common binary package management tasks "
+"which can be performed using man:pkg[8]. Each demonstrated command provides "
+"many switches to customize its use. Refer to a command's help or man page "
+"for details and more examples."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:247
+#: documentation/content/en/books/handbook/ports/_index.adoc:184
#, no-wrap
-msgid "Getting Started with pkg"
+msgid "Quarterly and Latest Ports Branches"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:251
-msgid ""
-"FreeBSD includes a bootstrap utility which can be used to download and "
-"install pkg and its manual pages. This utility is designed to work with "
-"versions of FreeBSD starting with 10._X_."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:257
+#: documentation/content/en/books/handbook/ports/_index.adoc:193
msgid ""
-"Not all FreeBSD versions and architectures support this bootstrap process. "
-"The current list is at https://pkg.freebsd.org/[]. For other cases, pkg "
-"must instead be installed from the Ports Collection or as a binary package."
+"The `Quarterly` branch provides users with a more predictable and stable "
+"experience for port and package installation and upgrades. This is done "
+"essentially by only allowing non-feature updates. Quarterly branches aim to "
+"receive security fixes (that may be version updates, or backports of "
+"commits), bug fixes and ports compliance or framework changes. The "
+"Quarterly branch is cut from HEAD at the beginning of every (yearly) quarter "
+"in January, April, July, and October. Branches are named according to the "
+"year (YYYY) and quarter (Q1-4) they are created in. For example, the "
+"quarterly branch created in January 2023, is named 2023Q1. And the `Latest` "
+"branch provides the latest versions of the packages to the users."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:260
-msgid "To bootstrap the system, run:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:195
+msgid "To switch from quarterly to latest run the following commands:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:264
+#: documentation/content/en/books/handbook/ports/_index.adoc:200
#, no-wrap
-msgid "# /usr/sbin/pkg\n"
+msgid ""
+"# mkdir -p /usr/local/etc/pkg/repos\n"
+"# cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:267
+#: documentation/content/en/books/handbook/ports/_index.adoc:203
msgid ""
-"You must have a working Internet connection for the bootstrap process to "
-"succeed."
+"Edit the file `/usr/local/etc/pkg/repos/FreeBSD.conf` and change the string "
+"_quarterly_ to _latest_ in the `url:` line."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:269
-msgid "Otherwise, to install the port, run:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:205
+msgid "The result should be similar to the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:275
+#: documentation/content/en/books/handbook/ports/_index.adoc:215
#, no-wrap
msgid ""
-"# cd /usr/ports/ports-mgmt/pkg\n"
-"# make\n"
-"# make install clean\n"
+"FreeBSD: {\n"
+" url: \"pkg+http://pkg.FreeBSD.org/${ABI}/latest\",\n"
+" mirror_type: \"srv\",\n"
+" signature_type: \"fingerprints\",\n"
+" fingerprints: \"/usr/share/keys/pkg\",\n"
+" enabled: yes\n"
+"}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:280
+#: documentation/content/en/books/handbook/ports/_index.adoc:218
msgid ""
-"When upgrading an existing system that originally used the older pkg_* "
-"tools, the database must be converted to the new format, so that the new "
-"tools are aware of the already installed packages. Once pkg has been "
-"installed, the package database must be converted from the traditional "
-"format to the new format by running this command:"
+"And finally run this command to update from the new (latest) repository "
+"metadata."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:284
+#: documentation/content/en/books/handbook/ports/_index.adoc:222
#, no-wrap
-msgid "# pkg2ng\n"
+msgid "# pkg update -f\n"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:289
-msgid ""
-"This step is not required for new installations that do not yet have any "
-"third-party software installed."
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:225
+#, no-wrap
+msgid "Configure pkg"
msgstr ""
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:295
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:229
msgid ""
-"This step is not reversible. Once the package database has been converted "
-"to the pkg format, the traditional `pkg_*` tools should no longer be used."
+"man:pkg.conf[5] is the system-wide configuration file used by the\tman:"
+"pkg[8] tools. The default location of this file is `/usr/local/etc/pkg."
+"conf`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:303
+#: documentation/content/en/books/handbook/ports/_index.adoc:234
msgid ""
-"The package database conversion may emit errors as the contents are "
-"converted to the new version. Generally, these errors can be safely "
-"ignored. However, a list of software that was not successfully converted is "
-"shown after `pkg2ng` finishes. These applications must be manually "
-"reinstalled."
+"FreeBSD does not need to have a `pkg.conf` file. Many installations will "
+"work well with no `pkg.conf` at all or with an empty `pkg.conf` (other than "
+"comment lines)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:307
-msgid ""
-"To ensure that the Ports Collection registers new software with pkg instead "
-"of the traditional packages database, FreeBSD versions earlier than 10._X_ "
-"require this line in [.filename]#/etc/make.conf#:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:311
-#, no-wrap
-msgid "WITH_PKGNG= yes\n"
+#: documentation/content/en/books/handbook/ports/_index.adoc:237
+msgid "Lines in the file beginning with a \"#\" are\tcomments and are ignored."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:315
+#: documentation/content/en/books/handbook/ports/_index.adoc:240
msgid ""
-"By default, pkg uses the binary packages from the FreeBSD package mirrors "
-"(the _repository_). For information about building a custom package "
-"repository, see <<ports-poudriere>>."
+"The file is in UCL format. For more information on the syntax of man:"
+"libucl[3], please visit the link:https://github.com/vstakhov/libucl[official "
+"UCL website]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:317
-msgid "Additional pkg configuration options are described in man:pkg.conf[5]."
+#: documentation/content/en/books/handbook/ports/_index.adoc:242
+msgid ""
+"The following types of options are recognized - boolean, string and list "
+"options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:319
+#: documentation/content/en/books/handbook/ports/_index.adoc:244
msgid ""
-"Usage information for pkg is available in the man:pkg[8] manual page or by "
-"running `pkg` without additional arguments."
+"A boolean option is marked as enabled if one of the following values is "
+"specified in the configuration file - YES, TRUE and ON."
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:246
+#, no-wrap
+msgid "Searching Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:322
-msgid ""
-"Each pkg command argument is documented in a command-specific manual page. "
-"To read the manual page for `pkg install`, for example, run either of these "
-"commands:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:249
+msgid "To search a package man:pkg-search[8] can be used:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:326
+#: documentation/content/en/books/handbook/ports/_index.adoc:253
#, no-wrap
-msgid "# pkg help install\n"
+msgid "# pkg search nginx\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:331
+#: documentation/content/en/books/handbook/ports/_index.adoc:273
#, no-wrap
-msgid "# man pkg-install\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:336
msgid ""
-"The rest of this section demonstrates common binary package management tasks "
-"which can be performed using pkg. Each demonstrated command provides many "
-"switches to customize its use. Refer to a command's help or man page for "
-"details and more examples."
+"modsecurity3-nginx-1.0.3 Instruction detection and prevention engine / nginx Wrapper\n"
+"nginx-1.22.1_2,3 Robust and small WWW server\n"
+"nginx-devel-1.23.2_4 Robust and small WWW server\n"
+"nginx-full-1.22.1_1,3 Robust and small WWW server (full package)\n"
+"nginx-lite-1.22.1,3 Robust and small WWW server (lite package)\n"
+"nginx-naxsi-1.22.1,3 Robust and small WWW server (plus NAXSI)\n"
+"nginx-prometheus-exporter-0.10.0_7 Prometheus exporter for NGINX and NGINX Plus stats\n"
+"nginx-ultimate-bad-bot-blocker-4.2020.03.2005_1 Nginx bad bot and other things blocker\n"
+"nginx-vts-exporter-0.10.7_7 Server that scraps NGINX vts stats and export them via HTTP\n"
+"p5-Nginx-ReadBody-0.07_1 Nginx embeded perl module to read and evaluate a request body\n"
+"p5-Nginx-Simple-0.07_1 Perl 5 module for easy to use interface for Nginx Perl Module\n"
+"p5-Test-Nginx-0.30 Testing modules for Nginx C module development\n"
+"py39-certbot-nginx-2.0.0 NGINX plugin for Certbot\n"
+"rubygem-passenger-nginx-6.0.15 Modules for running Ruby on Rails and Rack applications\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:338
+#: documentation/content/en/books/handbook/ports/_index.adoc:276
#, no-wrap
-msgid "Quarterly and Latest Ports Branches"
+msgid "Installing and Fetching Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:347
+#: documentation/content/en/books/handbook/ports/_index.adoc:281
msgid ""
-"The `Quarterly` branch provides users with a more predictable and stable "
-"experience for port and package installation and upgrades. This is done "
-"essentially by only allowing non-feature updates. Quarterly branches aim to "
-"receive security fixes (that may be version updates, or backports of "
-"commits), bug fixes and ports compliance or framework changes. The "
-"Quarterly branch is cut from HEAD at the beginning of every (yearly) quarter "
-"in January, April, July, and October. Branches are named according to the "
-"year (YYYY) and quarter (Q1-4) they are created in. For example, the "
-"quarterly branch created in January 2016, is named 2016Q1. And the `Latest` "
-"branch provides the latest versions of the packages to the users."
+"To install a binary package man:pkg-install[8] can be used. This command "
+"uses repository data to determine which version of the software to install "
+"and if it has any uninstalled dependencies. For example, to install curl:"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:349
-msgid "To switch from quarterly to latest run the following commands:"
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:285
+#, no-wrap
+msgid "# pkg install curl\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:354
+#: documentation/content/en/books/handbook/ports/_index.adoc:295
#, no-wrap
msgid ""
-"# mkdir -p /usr/local/etc/pkg/repos\n"
-"# cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf\n"
+"Updating FreeBSD repository catalogue...\n"
+"FreeBSD repository is up to date.\n"
+"All repositories are up to date.\n"
+"The following 9 package(s) will be affected (of 0 checked):\n"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:357
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:306
+#, no-wrap
msgid ""
-"Edit the file [.filename]#/usr/local/etc/pkg/repos/FreeBSD.conf# and change "
-"the string _quarterly_ to _latest_ in the `url:` line."
+"New packages to be INSTALLED:\n"
+" ca_root_nss: 3.83\n"
+" curl: 7.86.0\n"
+" gettext-runtime: 0.21\n"
+" indexinfo: 0.3.1\n"
+" libidn2: 2.3.3\n"
+" libnghttp2: 1.48.0\n"
+" libpsl: 0.21.1_4\n"
+" libssh2: 1.10.0.3\n"
+" libunistring: 1.0\n"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:359
-msgid "The result should be similar to the following:"
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:308
+#, no-wrap
+msgid "Number of packages to be installed: 9\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:369
+#: documentation/content/en/books/handbook/ports/_index.adoc:311
#, no-wrap
msgid ""
-"FreeBSD: {\n"
-" url: \"pkg+http://pkg.FreeBSD.org/${ABI}/latest\",\n"
-" mirror_type: \"srv\",\n"
-" signature_type: \"fingerprints\",\n"
-" fingerprints: \"/usr/share/keys/pkg\",\n"
-" enabled: yes\n"
-"}\n"
+"The process will require 11 MiB more space.\n"
+"3 MiB to be downloaded\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:313
+#, no-wrap
+msgid "Proceed with this action? [y/N]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:372
+#: documentation/content/en/books/handbook/ports/_index.adoc:316
msgid ""
-"And finally run this command to update from the new (latest) repository "
-"metadata."
+"The new package and any additional packages that were installed as "
+"dependencies can be seen in the installed packages list:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:376
+#: documentation/content/en/books/handbook/ports/_index.adoc:320
#, no-wrap
-msgid "# pkg update -f\n"
+msgid "# pkg info\n"
msgstr ""
-#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:379
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:336
#, no-wrap
-msgid "Obtaining Information About Installed Packages"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:383
msgid ""
-"Information about the packages installed on a system can be viewed by "
-"running `pkg info` which, when run without any switches, will list the "
-"package version for either all installed packages or the specified package."
+"ca_root_nss-3.83 Root certificate bundle from the Mozilla Project\n"
+"curl-7.86.0 Command line tool and library for transferring data with URLs\n"
+"gettext-runtime-0.21.1 GNU gettext runtime libraries and programs\n"
+"indexinfo-0.3.1 Utility to regenerate the GNU info page index\n"
+"libidn2-2.3.3 Implementation of IDNA2008 internationalized domain names\n"
+"libnghttp2-1.48.0 HTTP/2.0 C Library\n"
+"libpsl-0.21.1_6 C library to handle the Public Suffix List\n"
+"libssh2-1.10.0.3 Library implementing the SSH2 protocol\n"
+"libunistring-1.0 Unicode string library\n"
+"pkg-1.18.4 Package manager\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:385
-msgid "For example, to see which version of pkg is installed, run:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:340
+msgid ""
+"To fetch a package and install it later or in another place use man:pkg-"
+"fetch[8]. For example, to download `nginx-lite`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:390
+#: documentation/content/en/books/handbook/ports/_index.adoc:344
#, no-wrap
-msgid ""
-"# pkg info pkg\n"
-"pkg-1.1.4_1\n"
+msgid "# pkg fetch -d -o /usr/home/user/packages/ nginx-lite\n"
msgstr ""
-#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:393
-#, no-wrap
-msgid "Installing and Removing Packages"
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:347
+msgid "`-d`: used to fetch all the dependencies"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:396
-msgid ""
-"To install a binary package use the following command, where _packagename_ "
-"is the name of the package to install:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:348
+msgid "`-o`: used to specify the download directory"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:400
+#: documentation/content/en/books/handbook/ports/_index.adoc:357
#, no-wrap
-msgid "# pkg install packagename\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:404
msgid ""
-"This command uses repository data to determine which version of the software "
-"to install and if it has any uninstalled dependencies. For example, to "
-"install curl:"
+"Updating FreeBSD repository catalogue...\n"
+"FreeBSD repository is up to date.\n"
+"All repositories are up to date.\n"
+"The following packages will be fetched:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:410
+#: documentation/content/en/books/handbook/ports/_index.adoc:361
#, no-wrap
msgid ""
-"# pkg install curl\n"
-"Updating repository catalogue\n"
-"/usr/local/tmp/All/curl-7.31.0_1.txz 100% of 1181 kB 1380 kBps 00m01s\n"
+"New packages to be FETCHED:\n"
+" nginx-lite: 1.22.1,3 (342 KiB: 22.20% of the 2 MiB to download)\n"
+" pcre: 8.45_3 (1 MiB: 77.80% of the 2 MiB to download)\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:412
+#: documentation/content/en/books/handbook/ports/_index.adoc:363
#, no-wrap
-msgid "/usr/local/tmp/All/ca_root_nss-3.15.1_1.txz 100% of 288 kB 1700 kBps 00m00s\n"
+msgid "Number of packages to be fetched: 2\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:415
+#: documentation/content/en/books/handbook/ports/_index.adoc:366
#, no-wrap
msgid ""
-"Updating repository catalogue\n"
-"The following 2 packages will be installed:\n"
+"The process will require 2 MiB more space.\n"
+"2 MiB to be downloaded.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:418
+#: documentation/content/en/books/handbook/ports/_index.adoc:368
#, no-wrap
-msgid ""
-" Installing ca_root_nss: 3.15.1_1\n"
-" Installing curl: 7.31.0_1\n"
+msgid "Proceed with fetching packages? [y/N]:\n"
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:420
-#, no-wrap
-msgid "The installation will require 3 MB more space\n"
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:371
+msgid ""
+"To install the downloaded packages man:pkg-install[8] can be used as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:422
+#: documentation/content/en/books/handbook/ports/_index.adoc:375
#, no-wrap
-msgid "0 B to be downloaded\n"
+msgid "# cd /usr/home/user/packages/\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:428
+#: documentation/content/en/books/handbook/ports/_index.adoc:380
#, no-wrap
-msgid ""
-"Proceed with installing packages [y/N]: y\n"
-"Checking integrity... done\n"
-"[1/2] Installing ca_root_nss-3.15.1_1... done\n"
-"[2/2] Installing curl-7.31.0_1... done\n"
-"Cleaning up cache files...Done\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:431
-msgid ""
-"The new package and any additional packages that were installed as "
-"dependencies can be seen in the installed packages list:"
+msgid "# pkg install nginx-lite-1.22.1,3.pkg\n"
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:438
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:383
#, no-wrap
-msgid ""
-"# pkg info\n"
-"ca_root_nss-3.15.1_1\tThe root certificate bundle from the Mozilla Project\n"
-"curl-7.31.0_1\tNon-interactive tool to get files from FTP, GOPHER, HTTP(S) servers\n"
-"pkg-1.1.4_6\tNew generation package manager\n"
+msgid "Obtaining Information About Installed Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:442
+#: documentation/content/en/books/handbook/ports/_index.adoc:386
msgid ""
-"Packages that are no longer needed can be removed with `pkg delete`. For "
-"example:"
+"Information about the packages installed on a system can be viewed by "
+"running man:pkg-info[8] which, when run without any switches, will list the "
+"package version for either all installed packages or the specified package."
msgstr ""
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:447
-#, no-wrap
-msgid ""
-"# pkg delete curl\n"
-"The following packages will be deleted:\n"
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:388
+msgid "For example, to see which version of pkg is installed, run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:449
+#: documentation/content/en/books/handbook/ports/_index.adoc:392
#, no-wrap
-msgid "\tcurl-7.31.0_1\n"
+msgid "# pkg info pkg\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:451
+#: documentation/content/en/books/handbook/ports/_index.adoc:421
#, no-wrap
-msgid "The deletion will free 3 MB\n"
+msgid ""
+"pkg-1.19.0\n"
+"Name : pkg\n"
+"Version : 1.19.0\n"
+"Installed on : Sat Dec 17 11:05:28 2022 CET\n"
+"Origin : ports-mgmt/pkg\n"
+"Architecture : FreeBSD:13:amd64\n"
+"Prefix : /usr/local\n"
+"Categories : ports-mgmt\n"
+"Licenses : BSD2CLAUSE\n"
+"Maintainer : pkg@FreeBSD.org\n"
+"WWW : https://github.com/freebsd/pkg\n"
+"Comment : Package manager\n"
+"Options :\n"
+" DOCS : on\n"
+"Shared Libs provided:\n"
+" libpkg.so.4\n"
+"Annotations :\n"
+" FreeBSD_version: 1301000\n"
+" repo_type : binary\n"
+" repository : FreeBSD\n"
+"Flat size : 33.2MiB\n"
+"Description :\n"
+"Package management tool\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:454
+#: documentation/content/en/books/handbook/ports/_index.adoc:423
#, no-wrap
-msgid ""
-"Proceed with deleting packages [y/N]: y\n"
-"[1/1] Deleting curl-7.31.0_1... done\n"
+msgid "WWW: https://github.com/freebsd/pkg\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:457
+#: documentation/content/en/books/handbook/ports/_index.adoc:426
#, no-wrap
msgid "Upgrading Installed Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:460
-msgid "Installed packages can be upgraded to their latest versions by running:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:429
+msgid ""
+"Installed packages can be upgraded to their latest versions using man:pkg-"
+"upgrade[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:464
+#: documentation/content/en/books/handbook/ports/_index.adoc:433
#, no-wrap
msgid "# pkg upgrade\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:467
+#: documentation/content/en/books/handbook/ports/_index.adoc:436
msgid ""
"This command will compare the installed versions with those available in the "
"repository catalogue and upgrade them from the repository."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:469
+#: documentation/content/en/books/handbook/ports/_index.adoc:438
#, no-wrap
msgid "Auditing Installed Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:474
+#: documentation/content/en/books/handbook/ports/_index.adoc:443
msgid ""
"Software vulnerabilities are regularly discovered in third-party "
"applications. To address this, pkg includes a built-in auditing mechanism. "
"To determine if there are any known vulnerabilities for the software "
-"installed on the system, run:"
+"installed on the system, use man:pkg-audit[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:478
+#: documentation/content/en/books/handbook/ports/_index.adoc:447
#, no-wrap
msgid "# pkg audit -F\n"
msgstr ""
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:462
+#, no-wrap
+msgid ""
+"Fetching vuln.xml.xz: 100% 976 KiB 499.5kB/s 00:02 \n"
+"chromium-108.0.5359.98 is vulnerable:\n"
+" chromium -- multiple vulnerabilities\n"
+" CVE: CVE-2022-4440\n"
+" CVE: CVE-2022-4439\n"
+" CVE: CVE-2022-4438\n"
+" CVE: CVE-2022-4437\n"
+" CVE: CVE-2022-4436\n"
+" WWW: https://vuxml.FreeBSD.org/freebsd/83eb9374-7b97-11ed-be8f-3065ec8fd3ec.html\n"
+msgstr ""
+
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:481
+#: documentation/content/en/books/handbook/ports/_index.adoc:465
#, no-wrap
-msgid "Automatically Removing Unused Packages"
+msgid "Removing Packages"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:468
+msgid ""
+"Packages that are no longer needed can be removed with man:pkg-delete[8]."
msgstr ""
#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:470
+msgid "For example:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:474
+#, no-wrap
+msgid "# pkg delete curl\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:482
+#, no-wrap
+msgid ""
+"Checking integrity... done (0 conflicting)\n"
+"Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):\n"
+msgstr ""
+
+#. type: delimited block . 4
#: documentation/content/en/books/handbook/ports/_index.adoc:485
+#, no-wrap
+msgid ""
+"Installed packages to be REMOVED:\n"
+" curl :7.86.0\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:487
+#: documentation/content/en/books/handbook/ports/_index.adoc:517
+#, no-wrap
+msgid "Number of packages to be removed: 1\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:489
+#, no-wrap
+msgid "The operation will free 4 MiB.\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:493
+#, no-wrap
+msgid ""
+"Proceed with deinstallation packages? [y/N]: y\n"
+"[1/1] Deinstalling curl-7.86.0...\n"
+"[1/1] Deleting files for curl-7.86.0: 100%\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:496
+#, no-wrap
+msgid "Automatically Removing Unused Packages"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:500
msgid ""
"Removing a package may leave behind dependencies which are no longer "
"required. Unneeded packages that were installed as dependencies (leaf "
-"packages) can be automatically detected and removed using:"
+"packages) can be automatically detected and removed using man:pkg-"
+"autoremove[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:491
+#: documentation/content/en/books/handbook/ports/_index.adoc:504
#, no-wrap
-msgid ""
-"# pkg autoremove\n"
-"Packages to be autoremoved:\n"
-"\tca_root_nss-3.15.1_1\n"
+msgid "# pkg autoremove\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:493
+#: documentation/content/en/books/handbook/ports/_index.adoc:512
#, no-wrap
-msgid "The autoremoval will free 723 kB\n"
+msgid ""
+"Checking integrity... done (0 conflicting)\n"
+"Deinstallation has been requested for the following 1 packages:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:496
+#: documentation/content/en/books/handbook/ports/_index.adoc:515
#, no-wrap
msgid ""
-"Proceed with autoremoval of packages [y/N]: y\n"
-"Deinstalling ca_root_nss-3.15.1_1... done\n"
+"Installed packages to be REMOVED:\n"
+" ca_root_nss-3.83\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:519
+#, no-wrap
+msgid "The operation will free 723 KiB.\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:521
+#, no-wrap
+msgid "Proceed with deinstalling packages? [y/N]: \n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:500
+#: documentation/content/en/books/handbook/ports/_index.adoc:525
msgid ""
"Packages installed as dependencies are called _automatic_ packages. Non-"
"automatic packages, i.e the packages that were explicity installed not as a "
"dependency to another package, can be listed using:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:507
+#: documentation/content/en/books/handbook/ports/_index.adoc:529
+#, no-wrap
+msgid "# pkg prime-list\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:538
#, no-wrap
msgid ""
-"# pkg prime-list\n"
"nginx\n"
"openvpn\n"
"sudo\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:512
+#: documentation/content/en/books/handbook/ports/_index.adoc:543
msgid ""
-"`pkg prime-list` is an alias command declared in [.filename]#/usr/local/etc/"
-"pkg.conf#. There are many others that can be used to query the package "
-"database of the system. For instance, command `pkg prime-origins` can be "
-"used to get the origin port directory of the list mentioned above:"
+"`pkg prime-list` is an alias command declared in `/usr/local/etc/pkg.conf`. "
+"There are many others that can be used to query the package database of the "
+"system. For instance, command `pkg prime-origins` can be used to get the "
+"origin port directory of the list mentioned above:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:519
+#: documentation/content/en/books/handbook/ports/_index.adoc:547
+#, no-wrap
+msgid "# pkg prime-origins\n"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:556
#, no-wrap
msgid ""
-"# pkg prime-origins\n"
"www/nginx\n"
"security/openvpn\n"
"security/sudo\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:522
+#: documentation/content/en/books/handbook/ports/_index.adoc:559
msgid ""
"This list can be used to rebuild all packages installed on a system using "
"build tools such as package:ports-mgmt/poudriere[] or package:ports-mgmt/"
"synth[]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:524
+#: documentation/content/en/books/handbook/ports/_index.adoc:561
msgid "Marking an installed package as automatic can be done using:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:528
+#: documentation/content/en/books/handbook/ports/_index.adoc:565
#, no-wrap
msgid "# pkg set -A 1 devel/cmake\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:531
+#: documentation/content/en/books/handbook/ports/_index.adoc:568
msgid ""
"Once a package is a leaf package and is marked as automatic, it gets "
"selected by `pkg autoremove`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:533
+#: documentation/content/en/books/handbook/ports/_index.adoc:570
msgid "Marking an installed package as _not_ automatic can be done using:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:537
+#: documentation/content/en/books/handbook/ports/_index.adoc:574
#, no-wrap
msgid "# pkg set -A 0 devel/cmake\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:540
+#: documentation/content/en/books/handbook/ports/_index.adoc:577
#, no-wrap
msgid "Restoring the Package Database"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:544
+#: documentation/content/en/books/handbook/ports/_index.adoc:581
msgid ""
"Unlike the traditional package management system, pkg includes its own "
"package database backup mechanism. This functionality is enabled by default."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:548
+#: documentation/content/en/books/handbook/ports/_index.adoc:585
msgid ""
"To disable the periodic script from backing up the package database, set "
"`daily_backup_pkgdb_enable=\"NO\"` in man:periodic.conf[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:552
+#: documentation/content/en/books/handbook/ports/_index.adoc:589
msgid ""
"To restore the contents of a previous package database backup, run the "
"following command replacing _/path/to/pkg.sql_ with the location of the "
"backup:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:556
+#: documentation/content/en/books/handbook/ports/_index.adoc:593
#, no-wrap
msgid "# pkg backup -r /path/to/pkg.sql\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:561
+#: documentation/content/en/books/handbook/ports/_index.adoc:598
msgid ""
"If restoring a backup taken by the periodic script, it must be decompressed "
"prior to being restored."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:565
+#: documentation/content/en/books/handbook/ports/_index.adoc:602
msgid ""
"To run a manual backup of the pkg database, run the following command, "
"replacing _/path/to/pkg.sql_ with a suitable file name and location:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:569
+#: documentation/content/en/books/handbook/ports/_index.adoc:606
#, no-wrap
msgid "# pkg backup -d /path/to/pkg.sql\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:572
+#: documentation/content/en/books/handbook/ports/_index.adoc:609
#, no-wrap
msgid "Removing Stale Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:577
+#: documentation/content/en/books/handbook/ports/_index.adoc:614
msgid ""
"By default, pkg stores binary packages in a cache directory defined by "
"`PKG_CACHEDIR` in man:pkg.conf[5]. Only copies of the latest installed "
"packages are kept. Older versions of pkg kept all previous packages. To "
"remove these outdated binary packages, run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:581
+#: documentation/content/en/books/handbook/ports/_index.adoc:618
#, no-wrap
msgid "# pkg clean\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:584
+#: documentation/content/en/books/handbook/ports/_index.adoc:621
msgid "The entire cache may be cleared by running:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:588
+#: documentation/content/en/books/handbook/ports/_index.adoc:625
#, no-wrap
msgid "# pkg clean -a\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:591
+#: documentation/content/en/books/handbook/ports/_index.adoc:628
#, no-wrap
-msgid "Modifying Package Metadata"
+msgid "Locking and Unlocking Packages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:596
+#: documentation/content/en/books/handbook/ports/_index.adoc:634
msgid ""
-"Software within the FreeBSD Ports Collection can undergo major version "
-"number changes. To address this, pkg has a built-in command to update "
-"package origins. This can be useful, for example, if package:lang/php5[] is "
-"renamed to package:lang/php53[] so that package:lang/php5[] can now "
-"represent version `5.4`."
+"man:pkg-lock[8] is used to lock packages against reinstallation, "
+"modification or deletion. man:pkg-unlock[8] unlocks the named packages. "
+"Either variant only has an effect on currently installed packages. "
+"Consequently it is impossible to block installation of a new package by "
+"using this mechanism, unless such an installation implies updating a locked "
+"package."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:598
-msgid "To change the package origin for the above example, run:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:636
+msgid "For example, to lock `nginx-lite`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:602
+#: documentation/content/en/books/handbook/ports/_index.adoc:640
#, no-wrap
-msgid "# pkg set -o lang/php5:lang/php53\n"
+msgid "# pkg lock nginx-lite\n"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:643
+msgid "And to unlock `nginx-lite`:"
+msgstr ""
+
+#. type: delimited block . 4
+#: documentation/content/en/books/handbook/ports/_index.adoc:647
+#, no-wrap
+msgid "# pkg unlock nginx-lite\n"
+msgstr ""
+
+#. type: Title ===
+#: documentation/content/en/books/handbook/ports/_index.adoc:650
+#, no-wrap
+msgid "Modifying Package Metadata"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:605
+#: documentation/content/en/books/handbook/ports/_index.adoc:655
msgid ""
-"As another example, to update package:lang/ruby18[] to package:lang/"
-"ruby19[], run:"
+"Software within the FreeBSD Ports Collection can undergo major version "
+"number changes. To address this, pkg has a built-in command to update "
+"package origins. This can be useful, for example, if package:lang/python3[] "
+"is renamed to package:lang/python311[] so that package:lang/python3[] can "
+"now represent version `3.11`."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/ports/_index.adoc:657
+msgid "To change the package origin for the above example, run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:609
+#: documentation/content/en/books/handbook/ports/_index.adoc:661
#, no-wrap
-msgid "# pkg set -o lang/ruby18:lang/ruby19\n"
+msgid "# pkg set -o lang/python3:lang/python311\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:612
+#: documentation/content/en/books/handbook/ports/_index.adoc:664
msgid ""
-"As a final example, to change the origin of the [.filename]#libglut# shared "
-"libraries from package:graphics/libglut[] to package:graphics/freeglut[], "
-"run:"
+"As another example, to update package:lang/ruby31[] to package:lang/"
+"ruby32[], run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:616
+#: documentation/content/en/books/handbook/ports/_index.adoc:668
#, no-wrap
-msgid "# pkg set -o graphics/libglut:graphics/freeglut\n"
+msgid "# pkg set -o lang/ruby31:lang/ruby32\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:622
+#: documentation/content/en/books/handbook/ports/_index.adoc:674
msgid ""
"When changing package origins, it is important to reinstall packages that "
"are dependent on the package with the modified origin. To force a "
"reinstallation of dependent packages, run:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:626
+#: documentation/content/en/books/handbook/ports/_index.adoc:678
#, no-wrap
-msgid "# pkg install -Rf graphics/freeglut\n"
+msgid "# pkg install -Rf lang/ruby32\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:631
+#: documentation/content/en/books/handbook/ports/_index.adoc:682
#, no-wrap
msgid "Using the Ports Collection"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:635
+#: documentation/content/en/books/handbook/ports/_index.adoc:686
msgid ""
-"The Ports Collection is a set of [.filename]##Makefile##s, patches, and "
-"description files. Each set of these files is used to compile and install "
-"an individual application on FreeBSD, and is called a _port_."
+"The Ports Collection is a set of `Makefiles`, patches, and description "
+"files. Each set of these files is used to compile and install an individual "
+"application on FreeBSD, and is called a _port_."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:637
+#: documentation/content/en/books/handbook/ports/_index.adoc:688
msgid ""
-"By default, the Ports Collection itself is stored as a subdirectory of [."
-"filename]#/usr/ports#."
+"By default, the Ports Collection itself is stored as a subdirectory of `/usr/"
+"ports`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:644
+#: documentation/content/en/books/handbook/ports/_index.adoc:695
msgid ""
"Before installing and using the Ports Collection, please be aware that it is "
"generally ill-advised to use the Ports Collection in conjunction with the "
"binary packages provided via pkg to install software. pkg, by default, "
"tracks quarterly branch-releases of the ports tree and not HEAD. "
"Dependencies could be different for a port in HEAD compared to its "
"counterpart in a quarterly branch release and this could result in conflicts "
"between dependencies installed by pkg and those from the Ports Collection. "
"If the Ports Collection and pkg must be used in conjunction, then be sure "
"that your Ports Collection and pkg are on the same branch release of the "
"ports tree."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:650
+#: documentation/content/en/books/handbook/ports/_index.adoc:701
msgid ""
"The Ports Collection contains directories for software categories. Inside "
"each category are subdirectories for individual applications. Each "
"application subdirectory contains a set of files that tells FreeBSD how to "
"compile and install that program, called a _ports skeleton_. Each port "
"skeleton includes these files and directories:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:652
-msgid ""
-"[.filename]#Makefile#: contains statements that specify how the application "
-"should be compiled and where its components should be installed."
+#: documentation/content/en/books/handbook/ports/_index.adoc:703
+#, no-wrap
+msgid "*Makefile*: contains statements that specify how the application should be compiled and where its components should be installed.\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:653
-msgid ""
-"[.filename]#distinfo#: contains the names and checksums of the files that "
-"must be downloaded to build the port."
+#: documentation/content/en/books/handbook/ports/_index.adoc:704
+#, no-wrap
+msgid "*distinfo*: contains the names and checksums of the files that must be downloaded to build the port.\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:654
-msgid ""
-"[.filename]#files/#: this directory contains any patches needed for the "
-"program to compile and install on FreeBSD. This directory may also contain "
-"other files used to build the port."
+#: documentation/content/en/books/handbook/ports/_index.adoc:705
+#, no-wrap
+msgid "*files/*: this directory contains any patches needed for the program to compile and install on FreeBSD. This directory may also contain other files used to build the port.\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:655
-msgid ""
-"[.filename]#pkg-descr#: provides a more detailed description of the program."
+#: documentation/content/en/books/handbook/ports/_index.adoc:706
+#, no-wrap
+msgid "*pkg-descr*: provides a more detailed description of the program.\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:656
-msgid ""
-"[.filename]#pkg-plist#: a list of all the files that will be installed by "
-"the port. It also tells the ports system which files to remove upon "
-"deinstallation."
+#: documentation/content/en/books/handbook/ports/_index.adoc:707
+#, no-wrap
+msgid "*pkg-plist*: a list of all the files that will be installed by the port. It also tells the ports system which files to remove upon deinstallation.\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:659
+#: documentation/content/en/books/handbook/ports/_index.adoc:710
msgid ""
-"Some ports include [.filename]#pkg-message# or other files to handle special "
+"Some ports include `pkg-message` or other files to handle special "
"situations. For more details on these files, and on ports in general, refer "
"to the extref:{porters-handbook}[FreeBSD Porter's Handbook]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:662
+#: documentation/content/en/books/handbook/ports/_index.adoc:713
msgid ""
-"The port does not include the actual source code, also known as a [."
-"filename]#distfile#. The extract portion of building a port will "
-"automatically save the downloaded source to [.filename]#/usr/ports/"
-"distfiles#."
+"The port does not include the actual source code, also known as a "
+"`distfile`. The extract portion of building a port will automatically save "
+"the downloaded source to `/usr/ports/distfiles`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:664
+#: documentation/content/en/books/handbook/ports/_index.adoc:715
#, no-wrap
msgid "Installing the Ports Collection"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:668
+#: documentation/content/en/books/handbook/ports/_index.adoc:719
msgid ""
"Before an application can be compiled using a port, the Ports Collection "
"must first be installed. If it was not installed during the installation of "
"FreeBSD, use one of the following methods to install it:"
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:673
+#: documentation/content/en/books/handbook/ports/_index.adoc:724
#, no-wrap
msgid "*Procedure: Git Method*\n"
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:677
+#: documentation/content/en/books/handbook/ports/_index.adoc:728
msgid ""
"If more control over the ports tree is needed or if local changes need to be "
"maintained, or if running FreeBSD-CURRENT, Git can be used to obtain the "
"Ports Collection. Refer to extref:{committers-guide}[the Git Primer, git-"
"primer] for a detailed description of Git."
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:679
+#: documentation/content/en/books/handbook/ports/_index.adoc:730
msgid ""
"Git must be installed before it can be used to check out the ports tree. If "
"a copy of the ports tree is already present, install Git like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:684
+#: documentation/content/en/books/handbook/ports/_index.adoc:735
#, no-wrap
msgid ""
"# cd /usr/ports/devel/git\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:687
+#: documentation/content/en/books/handbook/ports/_index.adoc:738
msgid ""
"If the ports tree is not available, or pkg is being used to manage packages, "
"Git can be installed as a package:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:691
+#: documentation/content/en/books/handbook/ports/_index.adoc:742
#, no-wrap
msgid "# pkg install git\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:694
+#: documentation/content/en/books/handbook/ports/_index.adoc:745
msgid "Check out a copy of the HEAD branch of the ports tree:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:698
+#: documentation/content/en/books/handbook/ports/_index.adoc:749
#, no-wrap
msgid "# git clone https://git.FreeBSD.org/ports.git /usr/ports\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:701
+#: documentation/content/en/books/handbook/ports/_index.adoc:752
msgid "Or, check out a copy of a quarterly branch:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:705
+#: documentation/content/en/books/handbook/ports/_index.adoc:756
#, no-wrap
msgid "# git clone https://git.FreeBSD.org/ports.git -b 2020Q3 /usr/ports\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:708
-msgid ""
-"As needed, update [.filename]#/usr/ports# after the initial Git checkout:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:759
+msgid "As needed, update `/usr/ports` after the initial Git checkout:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:712
+#: documentation/content/en/books/handbook/ports/_index.adoc:763
#, no-wrap
msgid "# git -C /usr/ports pull\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:715
-msgid ""
-"As needed, switch [.filename]#/usr/ports# to a different quarterly branch:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:766
+msgid "As needed, switch `/usr/ports` to a different quarterly branch:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:719
+#: documentation/content/en/books/handbook/ports/_index.adoc:770
#, no-wrap
msgid "# git -C /usr/ports switch 2020Q4\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:722
+#: documentation/content/en/books/handbook/ports/_index.adoc:773
#, no-wrap
msgid "Installing Ports"
msgstr ""
#. type: delimited block * 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:726
+#: documentation/content/en/books/handbook/ports/_index.adoc:777
msgid ""
"This section provides basic instructions on using the Ports Collection to "
"install or remove software. The detailed description of available `make` "
"targets and environment variables is available in man:ports[7]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:734
+#: documentation/content/en/books/handbook/ports/_index.adoc:785
msgid ""
"Before compiling any port, be sure to update the Ports Collection as "
"described in the previous section. Since the installation of any third-"
"party software can introduce security vulnerabilities, it is recommended to "
"first check https://vuxml.freebsd.org/[] for known security issues related "
-"to the port. Alternately, run `pkg audit -F` before installing a new port. "
-"This command can be configured to automatically perform a security audit and "
-"an update of the vulnerability database during the daily security system "
-"check. For more information, refer to man:pkg-audit[8] and man:periodic[8]."
+"to the port. Alternatively, run `pkg audit -F` before installing a new "
+"port. This command can be configured to automatically perform a security "
+"audit and an update of the vulnerability database during the daily security "
+"system check. For more information, refer to man:pkg-audit[8] and man:"
+"periodic[8]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:738
+#: documentation/content/en/books/handbook/ports/_index.adoc:789
msgid ""
"Using the Ports Collection assumes a working Internet connection. It also "
"requires superuser privilege."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:741
+#: documentation/content/en/books/handbook/ports/_index.adoc:792
msgid ""
"To compile and install the port, change to the directory of the port to be "
"installed, then type `make install` at the prompt. Messages will indicate "
"the progress:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:763
+#: documentation/content/en/books/handbook/ports/_index.adoc:814
#, no-wrap
msgid ""
"# cd /usr/ports/sysutils/lsof\n"
"# make install\n"
">> lsof_4.88D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
">> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.\n"
"===> Extracting for lsof-4.88\n"
"...\n"
"[extraction output snipped]\n"
"...\n"
">> Checksum OK for lsof_4.88D.freebsd.tar.gz.\n"
"===> Patching for lsof-4.88.d,8\n"
"===> Applying FreeBSD patches for lsof-4.88.d,8\n"
"===> Configuring for lsof-4.88.d,8\n"
"...\n"
"[configure output snipped]\n"
"...\n"
"===> Building for lsof-4.88.d,8\n"
"...\n"
"[compilation output snipped]\n"
"...\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:776
+#: documentation/content/en/books/handbook/ports/_index.adoc:827
#, no-wrap
msgid ""
"===> Installing for lsof-4.88.d,8\n"
"...\n"
"[installation output snipped]\n"
"...\n"
"===> Generating temporary packing list\n"
"===> Compressing manual pages for lsof-4.88.d,8\n"
"===> Registering installation for lsof-4.88.d,8\n"
"===> SECURITY NOTE:\n"
" This port has installed the following binaries which execute with\n"
" increased privileges.\n"
"/usr/local/sbin/lsof\n"
"#\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:780
+#: documentation/content/en/books/handbook/ports/_index.adoc:831
msgid ""
"Since `lsof` is a program that runs with increased privileges, a security "
"warning is displayed as it is installed. Once the installation is complete, "
"the prompt will be returned."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:785
+#: documentation/content/en/books/handbook/ports/_index.adoc:836
msgid ""
"Some shells keep a cache of the commands that are available in the "
"directories listed in the `PATH` environment variable, to speed up lookup "
"operations for the executable file of these commands. Users of the `tcsh` "
"shell should type `rehash` so that a newly installed command can be used "
"without specifying its full path. Use `hash -r` instead for the `sh` "
"shell. Refer to the documentation for the shell for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:788
+#: documentation/content/en/books/handbook/ports/_index.adoc:839
msgid ""
"During installation, a working subdirectory is created which contains all "
"the temporary files used during compilation. Removing this directory saves "
"disk space and minimizes the chance of problems later when upgrading to the "
"newer version of the port:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:794
+#: documentation/content/en/books/handbook/ports/_index.adoc:845
#, no-wrap
msgid ""
"# make clean\n"
"===> Cleaning for lsof-88.d,8\n"
"#\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:799
+#: documentation/content/en/books/handbook/ports/_index.adoc:850
msgid ""
"To save this extra step, instead use `make install clean` when compiling the "
"port."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/ports/_index.adoc:801
+#: documentation/content/en/books/handbook/ports/_index.adoc:852
#, no-wrap
msgid "Customizing Ports Installation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:809
+#: documentation/content/en/books/handbook/ports/_index.adoc:860
msgid ""
"Some ports provide build options which can be used to enable or disable "
"application components, provide security options, or allow for other "
-"customizations. Examples include package:www/firefox[], package:security/"
-"gpgme[], and package:mail/sylpheed-claws[]. If the port depends upon other "
-"ports which have configurable options, it may pause several times for user "
-"interaction as the default behavior is to prompt the user to select options "
-"from a menu. To avoid this and do all of the configuration in one batch, "
-"run `make config-recursive` within the port skeleton. Then, run `make "
-"install [clean]` to compile and install the port."
+"customizations. Examples include package:www/firefox[] and package:security/"
+"gpgme[]. If the port depends upon other ports which have configurable "
+"options, it may pause several times for user interaction as the default "
+"behavior is to prompt the user to select options from a menu. To avoid this "
+"and do all of the configuration in one batch, run `make config-recursive` "
+"within the port skeleton. Then, run `make install [clean]` to compile and "
+"install the port."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:815
+#: documentation/content/en/books/handbook/ports/_index.adoc:866
msgid ""
"When using `config-recursive`, the list of ports to configure are gathered "
"by the `all-depends-list` target. It is recommended to run `make config-"
"recursive` until all dependent ports options have been defined, and ports "
"options screens no longer appear, to be certain that all dependency options "
"have been configured."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:822
+#: documentation/content/en/books/handbook/ports/_index.adoc:873
msgid ""
"There are several ways to revisit a port's build options menu in order to "
"add, remove, or change these options after a port has been built. One "
"method is to `cd` into the directory containing the port and type `make "
"config`. Another option is to use `make showconfig`. Another option is to "
"execute `make rmconfig` which will remove all selected options and allow you "
"to start over. All of these options, and others, are explained in great "
"detail in man:ports[7]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:826
+#: documentation/content/en/books/handbook/ports/_index.adoc:877
msgid ""
"The ports system uses man:fetch[1] to download the source files, which "
"supports various environment variables. The `FTP_PASSIVE_MODE`, "
"`FTP_PROXY`, and `FTP_PASSWORD` variables may need to be set if the FreeBSD "
"system is behind a firewall or FTP/HTTP proxy. See man:fetch[3] for the "
"complete list of supported variables."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:831
+#: documentation/content/en/books/handbook/ports/_index.adoc:882
msgid ""
"For users who cannot be connected to the Internet all the time, `make fetch` "
-"can be run within [.filename]#/usr/ports#, to fetch all distfiles, or within "
-"a category, such as [.filename]#/usr/ports/net#, or within the specific port "
-"skeleton. Note that if a port has any dependencies, running this command in "
-"a category or ports skeleton will _not_ fetch the distfiles of ports from "
-"another category. Instead, use `make fetch-recursive` to also fetch the "
-"distfiles for all the dependencies of a port."
+"can be run within `/usr/ports`, to fetch all distfiles, or within a "
+"category, such as `/usr/ports/net`, or within the specific port skeleton. "
+"Note that if a port has any dependencies, running this command in a category "
+"or ports skeleton will _not_ fetch the distfiles of ports from another "
+"category. Instead, use `make fetch-recursive` to also fetch the distfiles "
+"for all the dependencies of a port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:834
+#: documentation/content/en/books/handbook/ports/_index.adoc:885
msgid ""
"In rare cases, such as when an organization has a local distfiles "
"repository, the `MASTER_SITES` variable can be used to override the download "
-"locations specified in the [.filename]#Makefile#. When using, specify the "
-"alternate location:"
+"locations specified in the `Makefile`. When using, specify the alternate "
+"location:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:840
+#: documentation/content/en/books/handbook/ports/_index.adoc:891
#, no-wrap
msgid ""
"# cd /usr/ports/directory\n"
"# make MASTER_SITE_OVERRIDE= \\\n"
"ftp://ftp.organization.org/pub/FreeBSD/ports/distfiles/ fetch\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:843
+#: documentation/content/en/books/handbook/ports/_index.adoc:894
msgid ""
"The `WRKDIRPREFIX` and `PREFIX` variables can override the default working "
"and target directories. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:847
+#: documentation/content/en/books/handbook/ports/_index.adoc:898
#, no-wrap
msgid "# make WRKDIRPREFIX=/usr/home/example/ports install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:850
+#: documentation/content/en/books/handbook/ports/_index.adoc:901
msgid ""
-"will compile the port in [.filename]#/usr/home/example/ports# and install "
-"everything under [.filename]#/usr/local#."
+"will compile the port in `/usr/home/example/ports` and install everything "
+"under `/usr/local`."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:854
+#: documentation/content/en/books/handbook/ports/_index.adoc:905
#, no-wrap
msgid "# make PREFIX=/usr/home/example/local install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:857
+#: documentation/content/en/books/handbook/ports/_index.adoc:908
msgid ""
-"will compile the port in [.filename]#/usr/ports# and install it in [."
-"filename]#/usr/home/example/local#. And:"
+"will compile the port in `/usr/ports` and install it in `/usr/home/example/"
+"local`. And:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:861
+#: documentation/content/en/books/handbook/ports/_index.adoc:912
#, no-wrap
msgid "# make WRKDIRPREFIX=../ports PREFIX=../local install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:864
+#: documentation/content/en/books/handbook/ports/_index.adoc:915
msgid "will combine the two."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:867
+#: documentation/content/en/books/handbook/ports/_index.adoc:918
msgid ""
"These can also be set as environmental variables. Refer to the manual page "
"for your shell for instructions on how to set an environmental variable."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:869
+#: documentation/content/en/books/handbook/ports/_index.adoc:920
#, no-wrap
msgid "Removing Installed Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:873
+#: documentation/content/en/books/handbook/ports/_index.adoc:924
msgid ""
"Installed ports can be uninstalled using `pkg delete`. Examples for using "
"this command can be found in the man:pkg-delete[8] manual page."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:875
-msgid "Alternately, `make deinstall` can be run in the port's directory:"
+#: documentation/content/en/books/handbook/ports/_index.adoc:926
+msgid "Alternately, `make deinstall` can be run in the port\\'s directory:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:883
+#: documentation/content/en/books/handbook/ports/_index.adoc:934
#, no-wrap
msgid ""
"# cd /usr/ports/sysutils/lsof\n"
"# make deinstall\n"
"===> Deinstalling for sysutils/lsof\n"
"===> Deinstalling\n"
"Deinstallation has been requested for the following 1 packages:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:885
+#: documentation/content/en/books/handbook/ports/_index.adoc:936
#, no-wrap
msgid "\tlsof-4.88.d,8\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:888
+#: documentation/content/en/books/handbook/ports/_index.adoc:939
#, no-wrap
msgid ""
"The deinstallation will free 229 kB\n"
"[1/1] Deleting lsof-4.88.d,8... done\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:893
+#: documentation/content/en/books/handbook/ports/_index.adoc:944
msgid ""
"It is recommended to read the messages as the port is uninstalled. If the "
"port has any applications that depend upon it, this information will be "
"displayed but the uninstallation will proceed. In such cases, it may be "
"better to reinstall the application in order to prevent broken dependencies."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:895
+#: documentation/content/en/books/handbook/ports/_index.adoc:946
#, no-wrap
msgid "Upgrading Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:899
+#: documentation/content/en/books/handbook/ports/_index.adoc:950
msgid ""
"Over time, newer versions of software become available in the Ports "
"Collection. This section describes how to determine which software can be "
"upgraded and how to perform the upgrade."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:903
+#: documentation/content/en/books/handbook/ports/_index.adoc:954
msgid ""
"To determine if newer versions of installed ports are available, ensure that "
"the latest version of the ports tree is installed, using the updating "
-"command described in <<ports-using-git-method, “Git Method”>>. On FreeBSD "
-"10 and later, or if the system has been converted to pkg, the following "
-"command will list the installed ports which are out of date:"
+"command described in <<ports-using-git-method, \"Git Method\">>. The "
+"following command will list the installed ports which are out of date:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:907
+#: documentation/content/en/books/handbook/ports/_index.adoc:958
#, no-wrap
msgid "# pkg version -l \"<\"\n"
msgstr ""
-#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:910
-msgid ""
-"For FreeBSD 9._X_ and lower, the following command will list the installed "
-"ports that are out of date:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:914
-#, no-wrap
-msgid "# pkg_version -l \"<\"\n"
-msgstr ""
-
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:921
+#: documentation/content/en/books/handbook/ports/_index.adoc:965
msgid ""
-"Before attempting an upgrade, read [.filename]#/usr/ports/UPDATING# from the "
-"top of the file to the date closest to the last time ports were upgraded or "
-"the system was installed. This file describes various issues and additional "
-"steps users may encounter and need to perform when updating a port, "
-"including such things as file format changes, changes in locations of "
-"configuration files, or any incompatibilities with previous versions. Make "
-"note of any instructions which match any of the ports that need upgrading "
-"and follow these instructions when performing the upgrade."
+"Before attempting an upgrade, read `/usr/ports/UPDATING` from the top of the "
+"file to the date closest to the last time ports were upgraded or the system "
+"was installed. This file describes various issues and additional steps "
+"users may encounter and need to perform when updating a port, including such "
+"things as file format changes, changes in locations of configuration files, "
+"or any incompatibilities with previous versions. Make note of any "
+"instructions which match any of the ports that need upgrading and follow "
+"these instructions when performing the upgrade."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/ports/_index.adoc:924
+#: documentation/content/en/books/handbook/ports/_index.adoc:968
#, no-wrap
msgid "Tools to Upgrade and Manage Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:928
+#: documentation/content/en/books/handbook/ports/_index.adoc:972
msgid ""
"The Ports Collection contains several utilities to perform the actual "
"upgrade. Each has its strengths and weaknesses."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:931
+#: documentation/content/en/books/handbook/ports/_index.adoc:975
msgid ""
"Historically, most installations used either Portmaster or Portupgrade. "
"Synth is a newer alternative."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:936
+#: documentation/content/en/books/handbook/ports/_index.adoc:980
msgid ""
"The choice of which tool is best for a particular system is up to the system "
"administrator. It is recommended practice to back up your data before using "
"any of these tools."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/ports/_index.adoc:939
+#: documentation/content/en/books/handbook/ports/_index.adoc:983
#, no-wrap
msgid "Upgrading Ports Using Portmaster"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:944
+#: documentation/content/en/books/handbook/ports/_index.adoc:988
msgid ""
"package:ports-mgmt/portmaster[] is a very small utility for upgrading "
"installed ports. It is designed to use the tools installed with the FreeBSD "
"base system without depending on other ports or databases. To install this "
"utility as a port:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:949
+#: documentation/content/en/books/handbook/ports/_index.adoc:993
#, no-wrap
msgid ""
"# cd /usr/ports/ports-mgmt/portmaster\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:952
+#: documentation/content/en/books/handbook/ports/_index.adoc:996
msgid "Portmaster defines four categories of ports:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:954
+#: documentation/content/en/books/handbook/ports/_index.adoc:998
msgid ""
"Root port: has no dependencies and is not a dependency of any other ports."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:955
+#: documentation/content/en/books/handbook/ports/_index.adoc:999
msgid "Trunk port: has no dependencies, but other ports depend upon it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:956
+#: documentation/content/en/books/handbook/ports/_index.adoc:1000
msgid "Branch port: has dependencies and other ports depend upon it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:957
+#: documentation/content/en/books/handbook/ports/_index.adoc:1001
msgid "Leaf port: has dependencies but no other ports depend upon it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:959
+#: documentation/content/en/books/handbook/ports/_index.adoc:1003
msgid "To list these categories and search for updates:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:980
+#: documentation/content/en/books/handbook/ports/_index.adoc:1024
#, no-wrap
msgid ""
"# portmaster -L\n"
"===>>> Root ports (No dependencies, not depended on)\n"
"===>>> ispell-3.2.06_18\n"
"===>>> screen-4.0.3\n"
" ===>>> New version available: screen-4.0.3_1\n"
"===>>> tcpflow-0.21_1\n"
"===>>> 7 root ports\n"
"...\n"
"===>>> Branch ports (Have dependencies, are depended on)\n"
"===>>> apache22-2.2.3\n"
" ===>>> New version available: apache22-2.2.8\n"
"...\n"
"===>>> Leaf ports (Have dependencies, not depended on)\n"
"===>>> automake-1.9.6_2\n"
"===>>> bash-3.1.17\n"
" ===>>> New version available: bash-3.2.33\n"
"...\n"
"===>>> 32 leaf ports\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:983
+#: documentation/content/en/books/handbook/ports/_index.adoc:1027
#, no-wrap
msgid ""
"===>>> 137 total installed ports\n"
" ===>>> 83 have new versions available\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:986
+#: documentation/content/en/books/handbook/ports/_index.adoc:1030
msgid "This command is used to upgrade all outdated ports:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:990
+#: documentation/content/en/books/handbook/ports/_index.adoc:1034
#, no-wrap
msgid "# portmaster -a\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1000
+#: documentation/content/en/books/handbook/ports/_index.adoc:1044
msgid ""
"By default, Portmaster makes a backup package before deleting the existing "
"port. If the installation of the new version is successful, Portmaster "
"deletes the backup. Using `-b` instructs Portmaster not to automatically "
"delete the backup. Adding `-i` starts Portmaster in interactive mode, "
"prompting for confirmation before upgrading each port. Many other options "
"are available. Read through the manual page for man:portmaster[8] for "
"details regarding their usage."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1003
+#: documentation/content/en/books/handbook/ports/_index.adoc:1047
msgid ""
"If errors are encountered during the upgrade process, add `-f` to upgrade "
"and rebuild all ports:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1007
+#: documentation/content/en/books/handbook/ports/_index.adoc:1051
#, no-wrap
msgid "# portmaster -af\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1011
+#: documentation/content/en/books/handbook/ports/_index.adoc:1055
msgid ""
"Portmaster can also be used to install new ports on the system, upgrading "
"all dependencies before building and installing the new port. To use this "
"function, specify the location of the port in the Ports Collection:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1015
+#: documentation/content/en/books/handbook/ports/_index.adoc:1059
#, no-wrap
msgid "# portmaster shells/bash\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1018
+#: documentation/content/en/books/handbook/ports/_index.adoc:1062
msgid ""
-"More information about package:ports-mgmt/portmaster[] may be found in its [."
-"filename]#pkg-descr#."
+"More information about package:ports-mgmt/portmaster[] may be found in its "
+"`pkg-descr`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/ports/_index.adoc:1020
+#: documentation/content/en/books/handbook/ports/_index.adoc:1064
#, no-wrap
msgid "Upgrading Ports Using Portupgrade"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1025
+#: documentation/content/en/books/handbook/ports/_index.adoc:1069
msgid ""
"package:ports-mgmt/portupgrade[] is another utility that can be used to "
"upgrade ports. It installs a suite of applications which can be used to "
"manage ports. However, it is dependent upon Ruby. To install the port:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1030
+#: documentation/content/en/books/handbook/ports/_index.adoc:1074
#, no-wrap
msgid ""
"# cd /usr/ports/ports-mgmt/portupgrade\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1033
+#: documentation/content/en/books/handbook/ports/_index.adoc:1077
msgid ""
"Before performing an upgrade using this utility, it is recommended to scan "
"the list of installed ports using `pkgdb -F` and to fix all the "
"inconsistencies it reports."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1036
+#: documentation/content/en/books/handbook/ports/_index.adoc:1080
msgid ""
"To upgrade all the outdated ports installed on the system, use `portupgrade -"
"a`. Alternately, include `-i` to be asked for confirmation of every "
"individual upgrade:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1040
+#: documentation/content/en/books/handbook/ports/_index.adoc:1084
#, no-wrap
msgid "# portupgrade -ai\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1044
+#: documentation/content/en/books/handbook/ports/_index.adoc:1088
msgid ""
"To upgrade only a specified application instead of all available ports, use "
"`portupgrade _pkgname_`. It is very important to include `-R` to first "
"upgrade all the ports required by the given application:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1048
+#: documentation/content/en/books/handbook/ports/_index.adoc:1092
#, no-wrap
msgid "# portupgrade -R firefox\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1055
+#: documentation/content/en/books/handbook/ports/_index.adoc:1099
msgid ""
"If `-P` is included, Portupgrade searches for available packages in the "
"local directories listed in `PKG_PATH`. If none are available locally, it "
"then fetches packages from a remote site. If packages can not be found "
"locally or fetched remotely, Portupgrade will use ports. To avoid using "
"ports entirely, specify `-PP`. This last set of options tells Portupgrade "
"to abort if no packages are available:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1059
+#: documentation/content/en/books/handbook/ports/_index.adoc:1103
#, no-wrap
msgid "# portupgrade -PP gnome3\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1063
+#: documentation/content/en/books/handbook/ports/_index.adoc:1107
msgid ""
"To just fetch the port distfiles, or packages, if `-P` is specified, without "
"building or installing anything, use `-F`. For further information on all "
"of the available switches, refer to the manual page for `portupgrade`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1065
+#: documentation/content/en/books/handbook/ports/_index.adoc:1109
msgid ""
"More information about package:ports-mgmt/portupgrade[] may be found in its "
-"[.filename]#pkg-descr#."
+"`pkg-descr`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:1067
+#: documentation/content/en/books/handbook/ports/_index.adoc:1111
#, no-wrap
msgid "Ports and Disk Space"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1073
+#: documentation/content/en/books/handbook/ports/_index.adoc:1117
msgid ""
"Using the Ports Collection will use up disk space over time. After building "
"and installing a port, running `make clean` within the ports skeleton will "
-"clean up the temporary [.filename]#work# directory. If Portmaster is used "
-"to install a port, it will automatically remove this directory unless `-K` "
-"is specified. If Portupgrade is installed, this command will remove all [."
-"filename]#work# directories found within the local copy of the Ports "
-"Collection:"
+"clean up the temporary `work` directory. If Portmaster is used to install a "
+"port, it will automatically remove this directory unless `-K` is specified. "
+"If Portupgrade is installed, this command will remove all `work` directories "
+"found within the local copy of the Ports Collection:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1077
+#: documentation/content/en/books/handbook/ports/_index.adoc:1121
#, no-wrap
msgid "# portsclean -C\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1081
+#: documentation/content/en/books/handbook/ports/_index.adoc:1125
msgid ""
-"In addition, outdated source distribution files accumulate in [.filename]#/"
-"usr/ports/distfiles# over time. To use Portupgrade to delete all the "
-"distfiles that are no longer referenced by any ports:"
+"In addition, outdated source distribution files accumulate in `/usr/ports/"
+"distfiles` over time. To use Portupgrade to delete all the distfiles that "
+"are no longer referenced by any ports:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1085
+#: documentation/content/en/books/handbook/ports/_index.adoc:1129
#, no-wrap
msgid "# portsclean -D\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1088
+#: documentation/content/en/books/handbook/ports/_index.adoc:1132
msgid ""
"Portupgrade can remove all distfiles not referenced by any port currently "
"installed on the system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1092
+#: documentation/content/en/books/handbook/ports/_index.adoc:1136
#, no-wrap
msgid "# portsclean -DD\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1095
+#: documentation/content/en/books/handbook/ports/_index.adoc:1139
msgid "If Portmaster is installed, use:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1099
+#: documentation/content/en/books/handbook/ports/_index.adoc:1143
#, no-wrap
msgid "# portmaster --clean-distfiles\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1102
+#: documentation/content/en/books/handbook/ports/_index.adoc:1146
msgid ""
"By default, this command is interactive and prompts the user to confirm if a "
"distfile should be deleted."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1104
+#: documentation/content/en/books/handbook/ports/_index.adoc:1148
msgid ""
"In addition to these commands, package:ports-mgmt/pkg_cutleaves[] automates "
"the task of removing installed ports that are no longer needed."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:1106
+#: documentation/content/en/books/handbook/ports/_index.adoc:1150
#, no-wrap
msgid "Building Packages with Poudriere"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1113
+#: documentation/content/en/books/handbook/ports/_index.adoc:1157
msgid ""
"Poudriere is a `BSD`-licensed utility for creating and testing FreeBSD "
"packages. It uses FreeBSD jails to set up isolated compilation "
"environments. These jails can be used to build packages for versions of "
"FreeBSD that are different from the system on which it is installed, and "
"also to build packages for i386 if the host is an amd64 system. Once the "
"packages are built, they are in a layout identical to the official mirrors. "
"These packages are usable by man:pkg[8] and other package management tools."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1118
+#: documentation/content/en/books/handbook/ports/_index.adoc:1162
msgid ""
"Poudriere is installed using the package:ports-mgmt/poudriere[] package or "
-"port. The installation includes a sample configuration file [.filename]#/"
-"usr/local/etc/poudriere.conf.sample#. Copy this file to [.filename]#/usr/"
-"local/etc/poudriere.conf#. Edit the copied file to suit the local "
-"configuration."
+"port. The installation includes a sample configuration file `/usr/local/etc/"
+"poudriere.conf.sample`. Copy this file to `/usr/local/etc/poudriere.conf`. "
+"Edit the copied file to suit the local configuration."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1124
+#: documentation/content/en/books/handbook/ports/_index.adoc:1168
msgid ""
"While `ZFS` is not required on the system running poudriere, it is "
-"beneficial. When `ZFS` is used, `ZPOOL` must be specified in [.filename]#/"
-"usr/local/etc/poudriere.conf# and `FREEBSD_HOST` should be set to a nearby "
-"mirror. Defining `CCACHE_DIR` enables the use of package:devel/ccache[] to "
-"cache compilation and reduce build times for frequently-compiled code. It "
-"may be convenient to put poudriere datasets in an isolated tree mounted at [."
-"filename]#/poudriere#. Defaults for the other configuration values are "
-"adequate."
+"beneficial. When `ZFS` is used, `ZPOOL` must be specified in `/usr/local/"
+"etc/poudriere.conf` and `FREEBSD_HOST` should be set to a nearby mirror. "
+"Defining `CCACHE_DIR` enables the use of package:devel/ccache[] to cache "
+"compilation and reduce build times for frequently-compiled code. It may be "
+"convenient to put poudriere datasets in an isolated tree mounted at `/"
+"poudriere`. Defaults for the other configuration values are adequate."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1128
+#: documentation/content/en/books/handbook/ports/_index.adoc:1172
msgid ""
"The number of processor cores detected is used to define how many builds "
"will run in parallel. Supply enough virtual memory, either with `RAM` or "
"swap space. If virtual memory runs out, the compilation jails will stop and "
"be torn down, resulting in weird error messages."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:1130
+#: documentation/content/en/books/handbook/ports/_index.adoc:1174
#, no-wrap
msgid "Initialize Jails and Port Trees"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1136
+#: documentation/content/en/books/handbook/ports/_index.adoc:1180
msgid ""
"After configuration, initialize poudriere so that it installs a jail with "
"the required FreeBSD tree and a ports tree. Specify a name for the jail "
"using `-j` and the FreeBSD version with `-v`. On systems running FreeBSD/"
"amd64, the architecture can be set with `-a` to either `i386` or `amd64`. "
"The default is the architecture shown by `uname`."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1183
+#: documentation/content/en/books/handbook/ports/_index.adoc:1227
#, no-wrap
msgid ""
"# poudriere jail -c -j 13amd64 -v 13.1-RELEASE\n"
"[00:00:00] Creating 13amd64 fs at /poudriere/jails/13amd64... done\n"
"[00:00:00] Using pre-distributed MANIFEST for FreeBSD 13.1-RELEASE amd64\n"
"[00:00:00] Fetching base for FreeBSD 13.1-RELEASE amd64\n"
"/poudriere/jails/13amd64/fromftp/base.txz 125 MB 4110 kBps 31s\n"
"[00:00:33] Extracting base... done\n"
"[00:00:54] Fetching src for FreeBSD 13.1-RELEASE amd64\n"
"/poudriere/jails/13amd64/fromftp/src.txz 154 MB 4178 kBps 38s\n"
"[00:01:33] Extracting src... done\n"
"[00:02:31] Fetching lib32 for FreeBSD 13.1-RELEASE amd64\n"
"/poudriere/jails/13amd64/fromftp/lib32.txz 24 MB 3969 kBps 06s\n"
"[00:02:38] Extracting lib32... done\n"
"[00:02:42] Cleaning up... done\n"
"[00:02:42] Recording filesystem state for clean... done\n"
"[00:02:42] Upgrading using ftp\n"
"/etc/resolv.conf -> /poudriere/jails/13amd64/etc/resolv.conf\n"
"Looking up update.FreeBSD.org mirrors... 3 mirrors found.\n"
"Fetching public key from update4.freebsd.org... done.\n"
"Fetching metadata signature for 13.1-RELEASE from update4.freebsd.org... done.\n"
"Fetching metadata index... done.\n"
"Fetching 2 metadata files... done.\n"
"Inspecting system... done.\n"
"Preparing to download files... done.\n"
"Fetching 124 patches.....10....20....30....40....50....60....70....80....90....100....110....120.. done.\n"
"Applying patches... done.\n"
"Fetching 6 files... done.\n"
"The following files will be added as part of updating to\n"
"13.1-RELEASE-p1:\n"
"/usr/src/contrib/unbound/.github\n"
"/usr/src/contrib/unbound/.github/FUNDING.yml\n"
"/usr/src/contrib/unbound/contrib/drop2rpz\n"
"/usr/src/contrib/unbound/contrib/unbound_portable.service.in\n"
"/usr/src/contrib/unbound/services/rpz.c\n"
"/usr/src/contrib/unbound/services/rpz.h\n"
"/usr/src/lib/libc/tests/gen/spawnp_enoexec.sh\n"
"The following files will be updated as part of updating to\n"
"13.1-RELEASE-p1:\n"
"[…]\n"
"Installing updates...Scanning //usr/share/certs/blacklisted for certificates...\n"
"Scanning //usr/share/certs/trusted for certificates...\n"
" done.\n"
"13.1-RELEASE-p1\n"
"[00:04:06] Recording filesystem state for clean... done\n"
"[00:04:07] Jail 13amd64 13.1-RELEASE-p1 amd64 is ready to be used\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1190
+#: documentation/content/en/books/handbook/ports/_index.adoc:1234
#, no-wrap
msgid ""
"# poudriere ports -c -p local -m git+https\n"
"[00:00:00] Creating local fs at /poudriere/ports/local... done\n"
"[00:00:00] Checking out the ports tree... done\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1195
+#: documentation/content/en/books/handbook/ports/_index.adoc:1239
msgid ""
"On a single computer, poudriere can build ports with multiple "
"configurations, in multiple jails, and from different port trees. Custom "
"configurations for these combinations are called _sets_. See the "
"CUSTOMIZATION section of man:poudriere[8] for details after package:ports-"
"mgmt/poudriere[] or package:ports-mgmt/poudriere-devel[] is installed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1199
+#: documentation/content/en/books/handbook/ports/_index.adoc:1243
msgid ""
"The basic configuration shown here puts a single jail-, port-, and set-"
-"specific [.filename]#make.conf# in [.filename]#/usr/local/etc/poudriere.d#. "
-"The filename in this example is created by combining the jail name, port "
-"name, and set name: [.filename]#13amd64-local-workstation-make.conf#. The "
-"system [.filename]#make.conf# and this new file are combined at build time "
-"to create the [.filename]#make.conf# used by the build jail."
+"specific `make.conf` in `/usr/local/etc/poudriere.d`. The filename in this "
+"example is created by combining the jail name, port name, and set name: "
+"`13amd64-local-workstation-make.conf`. The system `make.conf` and this new "
+"file are combined at build time to create the `make.conf` used by the build "
+"jail."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1201
+#: documentation/content/en/books/handbook/ports/_index.adoc:1245
msgid ""
-"Packages to be built are entered in [.filename]#13amd64-local-workstation-"
-"pkglist#:"
+"Packages to be built are entered in `13amd64-local-workstation-pkglist`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1208
+#: documentation/content/en/books/handbook/ports/_index.adoc:1252
#, no-wrap
msgid ""
"editors/emacs\n"
"devel/git\n"
"ports-mgmt/pkg\n"
"...\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1211
+#: documentation/content/en/books/handbook/ports/_index.adoc:1255
msgid "Options and dependencies for the specified ports are configured:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1215
+#: documentation/content/en/books/handbook/ports/_index.adoc:1259
#, no-wrap
msgid "# poudriere options -j 13amd64 -p local -z workstation -f 13amd64-local-workstation-pkglist\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1218
+#: documentation/content/en/books/handbook/ports/_index.adoc:1262
msgid "Finally, packages are built and a package repository is created:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1222
+#: documentation/content/en/books/handbook/ports/_index.adoc:1266
#, no-wrap
msgid "# poudriere bulk -j 13amd64 -p local -z workstation -f 13amd64-local-workstation-pkglist\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1226
+#: documentation/content/en/books/handbook/ports/_index.adoc:1270
msgid ""
"While running, pressing kbd:[Ctrl+t] displays the current state of the "
-"build. Poudriere also builds files in [.filename]#/poudriere/logs/bulk/"
-"jailname# that can be used with a web server to display build information."
+"build. Poudriere also builds files in `/poudriere/logs/bulk/jailname` that "
+"can be used with a web server to display build information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1228
+#: documentation/content/en/books/handbook/ports/_index.adoc:1272
msgid ""
"After completion, the new packages are now available for installation from "
"the poudriere repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1230
+#: documentation/content/en/books/handbook/ports/_index.adoc:1274
msgid ""
"For more information on using poudriere, see man:poudriere[8] and the main "
"web site, https://github.com/freebsd/poudriere/wiki[]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/ports/_index.adoc:1231
+#: documentation/content/en/books/handbook/ports/_index.adoc:1275
#, no-wrap
msgid "Configuring pkg Clients to Use a Poudriere Repository"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1236
+#: documentation/content/en/books/handbook/ports/_index.adoc:1280
msgid ""
"While it is possible to use both a custom repository along side of the "
"official repository, sometimes it is useful to disable the official "
"repository. This is done by creating a configuration file that overrides "
-"and disables the official configuration file. Create [.filename]#/usr/local/"
-"etc/pkg/repos/FreeBSD.conf# that contains the following:"
+"and disables the official configuration file. Create `/usr/local/etc/pkg/"
+"repos/FreeBSD.conf` that contains the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1242
+#: documentation/content/en/books/handbook/ports/_index.adoc:1286
#, no-wrap
msgid ""
"FreeBSD: {\n"
"\tenabled: no\n"
"}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1246
+#: documentation/content/en/books/handbook/ports/_index.adoc:1290
msgid ""
"Usually it is easiest to serve a poudriere repository to the client machines "
"via HTTP. Set up a webserver to serve up the package directory, for "
-"instance: [.filename]#/usr/local/poudriere/data/packages/13amd64#, where [."
-"filename]#13amd64# is the name of the build."
+"instance: `/usr/local/poudriere/data/packages/13amd64`, where `13amd64` is "
+"the name of the build."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1249
+#: documentation/content/en/books/handbook/ports/_index.adoc:1293
msgid ""
"If the URL to the package repository is: `http://pkg.example.com/13amd64`, "
-"then the repository configuration file in [.filename]#/usr/local/etc/pkg/"
-"repos/custom.conf# would look like:"
+"then the repository configuration file in `/usr/local/etc/pkg/repos/custom."
+"conf` would look like:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1256
+#: documentation/content/en/books/handbook/ports/_index.adoc:1300
#, no-wrap
msgid ""
"custom: {\n"
"\turl: \"http://pkg.example.com/13amd64\",\n"
"\tenabled: yes,\n"
"}\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:1259
+#: documentation/content/en/books/handbook/ports/_index.adoc:1303
#, no-wrap
msgid "Post-Installation Considerations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1263
+#: documentation/content/en/books/handbook/ports/_index.adoc:1307
msgid ""
"Regardless of whether the software was installed from a binary package or "
"port, most third-party applications require some level of configuration "
"after installation. The following commands and locations can be used to "
"help determine what was installed with the application."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1265
+#: documentation/content/en/books/handbook/ports/_index.adoc:1309
msgid ""
-"Most applications install at least one default configuration file in [."
-"filename]#/usr/local/etc#. In cases where an application has a large number "
-"of configuration files, a subdirectory will be created to hold them. Often, "
-"sample configuration files are installed which end with a suffix such as [."
-"filename]#.sample#. The configuration files should be reviewed and possibly "
-"edited to meet the system's needs. To edit a sample file, first copy it "
-"without the [.filename]#.sample# extension."
+"Most applications install at least one default configuration file in `/usr/"
+"local/etc`. In cases where an application has a large number of "
+"configuration files, a subdirectory will be created to hold them. Often, "
+"sample configuration files are installed which end with a suffix such as `."
+"sample`. The configuration files should be reviewed and possibly edited to "
+"meet the system's needs. To edit a sample file, first copy it without the `."
+"sample` extension."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1266
+#: documentation/content/en/books/handbook/ports/_index.adoc:1310
msgid ""
-"Applications which provide documentation will install it into [.filename]#/"
-"usr/local/share/doc# and many applications also install manual pages. This "
+"Applications which provide documentation will install it into `/usr/local/"
+"share/doc` and many applications also install manual pages. This "
"documentation should be consulted before continuing."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1267
+#: documentation/content/en/books/handbook/ports/_index.adoc:1311
msgid ""
-"Some applications run services which must be added to [.filename]#/etc/rc."
-"conf# before starting the application. These applications usually install a "
-"startup script in [.filename]#/usr/local/etc/rc.d#. See crossref:"
-"config[configtuning-starting-services,Starting Services] for more "
-"information."
+"Some applications run services which must be added to `/etc/rc.conf` before "
+"starting the application. These applications usually install a startup "
+"script in `/usr/local/etc/rc.d`. See crossref:config[configtuning-starting-"
+"services,Starting Services] for more information."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1272
+#: documentation/content/en/books/handbook/ports/_index.adoc:1316
msgid ""
"By design, applications do not run their startup script upon installation, "
"nor do they run their stop script upon deinstallation or upgrade. This "
"decision is left to the individual system administrator."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1275
+#: documentation/content/en/books/handbook/ports/_index.adoc:1319
msgid ""
"Users of man:csh[1] should run `rehash` to rebuild the known binary list in "
"the shells `PATH`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1276
+#: documentation/content/en/books/handbook/ports/_index.adoc:1320
msgid ""
"Use `pkg info` to determine which files, man pages, and binaries were "
"installed with the application."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/ports/_index.adoc:1278
+#: documentation/content/en/books/handbook/ports/_index.adoc:1322
#, no-wrap
msgid "Dealing with Broken Ports"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1281
+#: documentation/content/en/books/handbook/ports/_index.adoc:1325
msgid "When a port does not build or install, try the following:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1283
+#: documentation/content/en/books/handbook/ports/_index.adoc:1327
msgid ""
"Search to see if there is a fix pending for the port in the link:https://www."
"FreeBSD.org/support/[Problem Report database]. If so, implementing the "
"proposed fix may fix the issue."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1284
+#: documentation/content/en/books/handbook/ports/_index.adoc:1328
msgid ""
"Ask the maintainer of the port for help. Type `make maintainer` in the ports "
-"skeleton or read the port's [.filename]#Makefile# to find the maintainer's "
-"email address. Remember to include the output leading up to the error in the "
-"email to the maintainer."
+"skeleton or read the port's `Makefile` to find the maintainer's email "
+"address. Remember to include the output leading up to the error in the email "
+"to the maintainer."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1290
+#: documentation/content/en/books/handbook/ports/_index.adoc:1334
msgid ""
"Some ports are not maintained by an individual but instead by a group "
"maintainer represented by a extref:{mailing-list-faq}[mailing list]. Many, "
"but not all, of these addresses look like mailto:freebsd-listname@FreeBSD."
"org[freebsd-listname@FreeBSD.org]. Please take this into account when "
"sending an email."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/ports/_index.adoc:1293
+#: documentation/content/en/books/handbook/ports/_index.adoc:1337
msgid ""
"In particular, ports maintained by mailto:ports@FreeBSD.org[ports@FreeBSD."
"org] are not maintained by a specific individual. Instead, any fixes and "
"support come from the general community who subscribe to that mailing list. "
"More volunteers are always needed!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1296
+#: documentation/content/en/books/handbook/ports/_index.adoc:1340
msgid ""
"If there is no response to the email, use Bugzilla to submit a bug report "
"using the instructions in extref:{problem-reports}[Writing FreeBSD Problem "
"Reports]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1297
+#: documentation/content/en/books/handbook/ports/_index.adoc:1341
msgid ""
"Fix it! The extref:{porters-handbook}[Porter's Handbook] includes detailed "
"information on the ports infrastructure so that you can fix the occasional "
"broken port or even submit your own!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/ports/_index.adoc:1297
+#: documentation/content/en/books/handbook/ports/_index.adoc:1341
msgid ""
"Install the package instead of the port using the instructions in <<pkgng-"
"intro>>."
msgstr ""
diff --git a/documentation/content/en/books/handbook/ppp-and-slip/_index.po b/documentation/content/en/books/handbook/ppp-and-slip/_index.po
index 8c78f96da5..ae762f2831 100644
--- a/documentation/content/en/books/handbook/ppp-and-slip/_index.po
+++ b/documentation/content/en/books/handbook/ppp-and-slip/_index.po
@@ -1,1895 +1,1895 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:1
#, no-wrap
msgid "FreeBSD supports the Point-to-Point (PPP) protocol which can be used to establish a network or Internet connection using a dial-up modem"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:1
#, no-wrap
msgid "IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:1
#, no-wrap
-msgid "Chapter 28. PPP"
+msgid "Chapter 29. PPP"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:15
#, no-wrap
msgid "PPP"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:57
msgid ""
"FreeBSD supports the Point-to-Point (PPP) protocol which can be used to "
"establish a network or Internet connection using a dial-up modem. This "
"chapter describes how to configure modem-based communication services in "
"FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:59
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:61
msgid "How to configure, use, and troubleshoot a PPP connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:62
msgid "How to set up PPP over Ethernet (PPPoE)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:63
msgid "How to set up PPP over ATM (PPPoA)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:65
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:67
msgid "Be familiar with basic network terminology."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:68
msgid "Understand the basics and purpose of a dial-up connection and PPP."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:70
#, no-wrap
msgid "Configuring PPP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:76
msgid ""
"FreeBSD provides built-in support for managing dial-up PPP connections using "
"man:ppp[8]. The default FreeBSD kernel provides support for [."
"filename]#tun# which is used to interact with a modem hardware. "
"Configuration is performed by editing at least one configuration file, and "
"configuration files containing examples are provided. Finally, `ppp` is "
"used to start and manage connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:78
msgid "In order to use a PPP connection, the following items are needed:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:80
msgid "A dial-up account with an Internet Service Provider (ISP)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:81
msgid "A dial-up modem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:82
msgid "The dial-up number for the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:83
msgid "The login name and password assigned by the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:84
msgid ""
"The IP address of one or more DNS servers. Normally, the ISP provides these "
"addresses. If it did not, FreeBSD can be configured to use DNS negotiation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:86
msgid "If any of the required information is missing, contact the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:88
msgid ""
"The following information may be supplied by the ISP, but is not necessary:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:90
msgid ""
"The IP address of the default gateway. If this information is unknown, the "
"ISP will automatically provide the correct value during connection setup. "
"When configuring PPP on FreeBSD, this address is referred to as `HISADDR`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:92
msgid ""
"The subnet mask. If the ISP has not provided one, `255.255.255.255` will be "
"used in the man:ppp[8] configuration file. *"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:94
msgid ""
"If the ISP has assigned a static IP address and hostname, it should be input "
"into the configuration file. Otherwise, this information will be "
"automatically provided during connection setup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:97
msgid ""
"The rest of this section demonstrates how to configure FreeBSD for common "
"PPP connection scenarios. The required configuration file is [.filename]#/"
"etc/ppp/ppp.conf# and additional files and examples are available in [."
"filename]#/usr/share/examples/ppp/#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:102
msgid ""
"Throughout this section, many of the file examples display line numbers. "
"These line numbers have been added to make it easier to follow the "
"discussion and are not meant to be placed in the actual file."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:105
msgid ""
"When editing a configuration file, proper indentation is important. Lines "
"that end in a `:` start in the first column (beginning of the line) while "
"all other lines should be indented as shown using spaces or tabs."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:108
#, no-wrap
msgid "Basic Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:112
msgid ""
"In order to configure a PPP connection, first edit [.filename]#/etc/ppp/ppp."
"conf# with the dial-in information for the ISP. This file is described as "
"follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:132
#, no-wrap
msgid ""
"1 default:\n"
"2 set log Phase Chat LCP IPCP CCP tun command\n"
"3 ident user-ppp VERSION\n"
"4 set device /dev/cuau0\n"
"5 set speed 115200\n"
"6 set dial \"ABORT BUSY ABORT NO\\\\sCARRIER TIMEOUT 5 \\\n"
"7 \\\"\\\" AT OK-AT-OK ATE1Q0 OK \\\\dATDT\\\\T TIMEOUT 40 CONNECT\"\n"
"8 set timeout 180\n"
"9 enable dns\n"
"10\n"
"11 provider:\n"
"12 set phone \"(123) 456 7890\"\n"
"13 set authname foo\n"
"14 set authkey bar\n"
"15 set timeout 300\n"
"16 set ifaddr x.x.x.x/0 y.y.y.y/0 255.255.255.255 0.0.0.0\n"
"17 add default HISADDR\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:134
#, no-wrap
msgid "Line 1"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:137
msgid ""
"Identifies the `default` entry. Commands in this entry (lines 2 through 9) "
"are executed automatically when `ppp` is run."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:138
#, no-wrap
msgid "Line 2"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:141
msgid ""
"Enables verbose logging parameters for testing the connection. Once the "
"configuration is working satisfactorily, this line should be reduced to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:145
#, no-wrap
msgid "set log phase tun\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:147
#, no-wrap
msgid "Line 3"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:149
msgid ""
"Displays the version of man:ppp[8] to the PPP software running on the other "
"side of the connection."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:150
#, no-wrap
msgid "Line 4"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:152
msgid ""
"Identifies the device to which the modem is connected, where [."
"filename]#COM1# is [.filename]#/dev/cuau0# and [.filename]#COM2# is [."
"filename]#/dev/cuau1#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:153
#, no-wrap
msgid "Line 5"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:156
msgid ""
"Sets the connection speed. If `115200` does not work on an older modem, try "
"`38400` instead."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:157
#, no-wrap
msgid "Lines 6 & 7"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:160
msgid ""
"The dial string written as an expect-send syntax. Refer to man:chat[8] for "
"more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:163
msgid ""
"Note that this command continues onto the next line for readability. Any "
"command in [.filename]#ppp.conf# may do this if the last character on the "
"line is `\\`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:164
#, no-wrap
msgid "Line 8"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:166
msgid "Sets the idle timeout for the link in seconds."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:167
#, no-wrap
msgid "Line 9"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:170
msgid ""
"Instructs the peer to confirm the DNS settings. If the local network is "
"running its own DNS server, this line should be commented out, by adding a "
-"`#` at the beginning of the line, or removed."
+"`+#+` at the beginning of the line, or removed."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:171
#, no-wrap
msgid "Line 10"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:173
msgid "A blank line for readability. Blank lines are ignored by man:ppp[8]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:174
#, no-wrap
msgid "Line 11"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:177
msgid ""
"Identifies an entry called `provider`. This could be changed to the name of "
"the ISP so that `load _ISP_` can be used to start the connection."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:178
#, no-wrap
msgid "Line 12"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:184
msgid ""
"Use the phone number for the ISP. Multiple phone numbers may be specified "
"using the colon (`:`) or pipe character (`|`) as a separator. To rotate "
"through the numbers, use a colon. To always attempt to dial the first "
"number first and only use the other numbers if the first number fails, use "
"the pipe character. Always enclose the entire set of phone numbers between "
"quotation marks (`\"`) to prevent dialing failures."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:185
#, no-wrap
msgid "Lines 13 & 14"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:187
msgid "Use the user name and password for the ISP."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:188
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:308
#, no-wrap
msgid "Line 15"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:192
msgid ""
"Sets the default idle timeout in seconds for the connection. In this "
"example, the connection will be closed automatically after 300 seconds of "
"inactivity. To prevent a timeout, set this value to zero."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:193
#, no-wrap
msgid "Line 16"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:196
msgid ""
"Sets the interface addresses. The values used depend upon whether a static "
"IP address has been obtained from the ISP or if it instead negotiates a "
"dynamic IP address during connection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:199
msgid ""
"If the ISP has allocated a static IP address and default gateway, replace _x."
"x.x.x_ with the static IP address and replace _y.y.y.y_ with the IP address "
"of the default gateway. If the ISP has only provided a static IP address "
"without a gateway address, replace _y.y.y.y_ with `10.0.0.2/0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:202
msgid ""
"If the IP address changes whenever a connection is made, change this line to "
"the following value. This tells man:ppp[8] to use the IP Configuration "
"Protocol (IPCP) to negotiate a dynamic IP address:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:206
#, no-wrap
msgid "set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:208
#, no-wrap
msgid "Line 17"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:212
msgid ""
"Keep this line as-is as it adds a default route to the gateway. The "
"`HISADDR` will automatically be replaced with the gateway address specified "
"on line 16. It is important that this line appears after line 16."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:218
msgid ""
"Depending upon whether man:ppp[8] is started manually or automatically, a [."
"filename]#/etc/ppp/ppp.linkup# may also need to be created which contains "
"the following lines. This file is required when running `ppp` in `-auto` "
"mode. This file is used after the connection has been established. At this "
"point, the IP address will have been assigned and it is now possible to add "
"the routing table entries. When creating this file, make sure that "
"_provider_ matches the value demonstrated in line 11 of [.filename]#ppp."
"conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:223
#, no-wrap
msgid ""
"provider:\n"
" add default HISADDR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:228
msgid ""
"This file is also needed when the default gateway address is \"guessed\" in "
"a static IP address configuration. In this case, remove line 17 from [."
"filename]#ppp.conf# and create [.filename]#/etc/ppp/ppp.linkup# with the "
"above two lines. More examples for this file can be found in [.filename]#/"
"usr/share/examples/ppp/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:231
msgid ""
"By default, `ppp` must be run as `root`. To change this default, add the "
"account of the user who should run `ppp` to the `network` group in [."
"filename]#/etc/group#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:234
msgid ""
"Then, give the user access to one or more entries in [.filename]#/etc/ppp/"
"ppp.conf# with `allow`. For example, to give `fred` and `mary` permission "
"to only the `provider:` entry, add this line to the `provider:` section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:238
#, no-wrap
msgid "allow users fred mary\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:241
msgid ""
"To give the specified users access to all entries, put that line in the "
"`default` section instead."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:242
#, no-wrap
msgid "Advanced Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:245
msgid ""
"It is possible to configure PPP to supply DNS and NetBIOS nameserver "
"addresses on demand."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:247
msgid ""
"To enable these extensions with PPP version 1.x, the following lines might "
"be added to the relevant section of [.filename]#/etc/ppp/ppp.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:253
#, no-wrap
msgid ""
"enable msext\n"
"set ns 203.14.100.1 203.14.100.2\n"
"set nbns 203.14.100.5\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:256
msgid "And for PPP version 2 and above:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:262
#, no-wrap
msgid ""
"accept dns\n"
"set dns 203.14.100.1 203.14.100.2\n"
"set nbns 203.14.100.5\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:265
msgid ""
"This will tell the clients the primary and secondary name server addresses, "
"and a NetBIOS nameserver host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:267
msgid ""
"In version 2 and above, if the `set dns` line is omitted, PPP will use the "
"values found in [.filename]#/etc/resolv.conf#."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:269
#, no-wrap
msgid "PAP and CHAP Authentication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:273
msgid ""
"Some ISPs set their system up so that the authentication part of the "
"connection is done using either of the PAP or CHAP authentication "
"mechanisms. If this is the case, the ISP will not give a `login:` prompt at "
"connection, but will start talking PPP immediately."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:276
msgid ""
"PAP is less secure than CHAP, but security is not normally an issue here as "
"passwords, although being sent as plain text with PAP, are being transmitted "
-"down a serial line only. There is not much room for crackers to \"eavesdrop"
-"\"."
+"down a serial line only. There is not much room for crackers to "
+"\"eavesdrop\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:278
msgid "The following alterations must be made:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:284
#, no-wrap
msgid ""
"13 set authname MyUserName\n"
"14 set authkey MyPassword\n"
"15 set login\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:286
#, no-wrap
msgid "Line 13"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:288
msgid ""
"This line specifies the PAP/CHAP user name.Insert the correct value for "
"_MyUserName_."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:289
#, no-wrap
msgid "Line 14"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:293
msgid ""
"This line specifies the PAP/CHAP password. Insert the correct value for "
"_MyPassword_. You may want to add an additional line, such as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:297
#, no-wrap
msgid "16 accept PAP\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:300
msgid "or"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:304
#, no-wrap
msgid "16 accept CHAP\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:307
msgid ""
"to make it obvious that this is the intention, but PAP and CHAP are both "
"accepted by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:311
msgid ""
"The ISP will not normally require a login to the server when using PAP or "
"CHAP. Therefore, disable the \"set login\" string."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:313
#, no-wrap
msgid "Using PPP Network Address Translation Capability"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:317
msgid ""
"PPP has ability to use internal NAT without kernel diverting capabilities. "
"This functionality may be enabled by the following line in [.filename]#/etc/"
"ppp/ppp.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:321
#, no-wrap
msgid "nat enable yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:325
msgid ""
"Alternatively, NAT may be enabled by command-line option `-nat`. There is "
"also [.filename]#/etc/rc.conf# knob named `ppp_nat`, which is enabled by "
"default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:327
msgid ""
"When using this feature, it may be useful to include the following [."
"filename]#/etc/ppp/ppp.conf# options to enable incoming connections "
"forwarding:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:332
#, no-wrap
msgid ""
"nat port tcp 10.0.0.2:ftp ftp\n"
"nat port tcp 10.0.0.2:http http\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:335
msgid "or do not trust the outside at all"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:339
#, no-wrap
msgid "nat deny_incoming yes\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:342
#, no-wrap
msgid "Final System Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:345
msgid ""
"While `ppp` is now configured, some edits still need to be made to [."
"filename]#/etc/rc.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:347
msgid ""
"Working from the top down in this file, make sure the `hostname=` line is "
"set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:351
#, no-wrap
msgid "hostname=\"foo.example.com\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:354
msgid ""
"If the ISP has supplied a static IP address and name, use this name as the "
"host name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:357
msgid ""
"Look for the `network_interfaces` variable. To configure the system to dial "
"the ISP on demand, make sure the [.filename]#tun0# device is added to the "
"list, otherwise remove it."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:362
#, no-wrap
msgid ""
"network_interfaces=\"lo0 tun0\"\n"
"ifconfig_tun0=\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:368
msgid ""
"The `ifconfig_tun0` variable should be empty, and a file called [.filename]#/"
"etc/start_if.tun0# should be created. This file should contain the line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:372
#, no-wrap
msgid "ppp -auto mysystem\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:376
msgid ""
"This script is executed at network configuration time, starting the ppp "
"daemon in automatic mode. If this machine acts as a gateway, consider "
"including `-alias`. Refer to the manual page for further details."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:379
msgid ""
"Make sure that the router program is set to `NO` with the following line in "
"[.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:383
#, no-wrap
msgid "router_enable=\"NO\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:386
msgid ""
"It is important that the `routed` daemon is not started, as `routed` tends "
"to delete the default routing table entries created by `ppp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:389
msgid ""
"It is probably a good idea to ensure that the `sendmail_flags` line does not "
"include the `-q` option, otherwise `sendmail` will attempt to do a network "
"lookup every now and then, possibly causing your machine to dial out. You "
"may try:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:393
#, no-wrap
msgid "sendmail_flags=\"-bd\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:397
msgid ""
"The downside is that `sendmail` is forced to re-examine the mail queue "
"whenever the ppp link. To automate this, include `!bg` in [.filename]#ppp."
"linkup#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:404
#, no-wrap
msgid ""
"1 provider:\n"
"2 delete ALL\n"
"3 add 0 0 HISADDR\n"
"4 !bg sendmail -bd -q30m\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:408
msgid ""
"An alternative is to set up a \"dfilter\" to block SMTP traffic. Refer to "
"the sample files for further details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:409
#, no-wrap
msgid "Using `ppp`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:413
msgid ""
"All that is left is to reboot the machine. After rebooting, either type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:417
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:536
#, no-wrap
msgid "# ppp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:420
msgid ""
"and then `dial provider` to start the PPP session, or, to configure `ppp` to "
"establish sessions automatically when there is outbound traffic and [."
"filename]#start_if.tun0# does not exist, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:424
#, no-wrap
msgid "# ppp -auto provider\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:428
msgid ""
"It is possible to talk to the `ppp` program while it is running in the "
"background, but only if a suitable diagnostic port has been set up. To do "
"this, add the following line to the configuration:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:432
#, no-wrap
msgid "set server /var/run/ppp-tun%d DiagnosticPassword 0177\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:436
msgid ""
"This will tell PPP to listen to the specified UNIX(R) domain socket, asking "
"clients for the specified password before allowing access. The `%d` in the "
"name is replaced with the [.filename]#tun# device number that is in use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:438
msgid ""
"Once a socket has been set up, the man:pppctl[8] program may be used in "
"scripts that wish to manipulate the running program."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:440
#, no-wrap
msgid "Configuring Dial-in Services"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:443
msgid ""
"crossref:serialcomms[dialup,“Dial-in Service”] provides a good description "
"on enabling dial-up services using man:getty[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:445
msgid ""
"An alternative to `getty` is package:comms/mgetty+sendfax[] port), a smarter "
"version of `getty` designed with dial-up lines in mind."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:447
msgid ""
"The advantages of using `mgetty` is that it actively _talks_ to modems, "
"meaning if port is turned off in [.filename]#/etc/ttys# then the modem will "
"not answer the phone."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:449
msgid ""
"Later versions of `mgetty` (from 0.99beta onwards) also support the "
"automatic detection of PPP streams, allowing clients scriptless access to "
"the server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:451
msgid ""
"Refer to http://mgetty.greenie.net/doc/mgetty_toc.html[http://mgetty.greenie."
"net/doc/mgetty_toc.html] for more information on `mgetty`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:454
msgid ""
"By default the package:comms/mgetty+sendfax[] port comes with the `AUTO_PPP` "
"option enabled allowing `mgetty` to detect the LCP phase of PPP connections "
"and automatically spawn off a ppp shell. However, since the default login/"
"password sequence does not occur it is necessary to authenticate users using "
"either PAP or CHAP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:456
msgid ""
"This section assumes the user has successfully compiled, and installed the "
"package:comms/mgetty+sendfax[] port on his system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:458
msgid ""
"Ensure that [.filename]#/usr/local/etc/mgetty+sendfax/login.config# has the "
"following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:462
#, no-wrap
msgid "/AutoPPP/ - - /etc/ppp/ppp-pap-dialup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:465
msgid ""
"This tells `mgetty` to run [.filename]#ppp-pap-dialup# for detected PPP "
"connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:467
msgid ""
"Create an executable file called [.filename]#/etc/ppp/ppp-pap-dialup# "
"containing the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:472
#, no-wrap
msgid ""
"#!/bin/sh\n"
"exec /usr/sbin/ppp -direct pap$IDENT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:476
msgid ""
"For each dial-up line enabled in [.filename]#/etc/ttys#, create a "
"corresponding entry in [.filename]#/etc/ppp/ppp.conf#. This will happily co-"
"exist with the definitions we created above."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:483
#, no-wrap
msgid ""
"pap:\n"
" enable pap\n"
" set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40\n"
" enable proxy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:486
msgid ""
"Each user logging in with this method will need to have a username/password "
"in [.filename]#/etc/ppp/ppp.secret#, or alternatively add the following "
"option to authenticate users via PAP from [.filename]#/etc/passwd#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:490
#, no-wrap
msgid "enable passwdauth\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:494
msgid ""
"To assign some users a static IP number, specify the number as the third "
"argument in [.filename]#/etc/ppp/ppp.secret#. See [.filename]#/usr/share/"
"examples/ppp/ppp.secret.sample# for examples."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:496
#, no-wrap
msgid "Troubleshooting PPP Connections"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:502
msgid ""
"This section covers a few issues which may arise when using PPP over a modem "
"connection. Some ISPs present the `ssword` prompt while others present "
"`password`. If the `ppp` script is not written accordingly, the login "
"attempt will fail. The most common way to debug `ppp` connections is by "
"connecting manually as described in this section."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:503
#, no-wrap
msgid "Check the Device Nodes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:506
msgid ""
"When using a custom kernel, make sure to include the following line in the "
"kernel configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:510
#, no-wrap
msgid "device uart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:514
msgid ""
"The [.filename]#uart# device is already included in the `GENERIC` kernel, so "
"no additional steps are necessary in this case. Just check the `dmesg` "
"output for the modem device with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:518
#, no-wrap
msgid "# dmesg | grep uart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:525
msgid ""
"This should display some pertinent output about the [.filename]#uart# "
"devices. These are the COM ports we need. If the modem acts like a "
"standard serial port, it should be listed on [.filename]#uart1#, or [."
"filename]#COM2#. If so, a kernel rebuild is not required. When matching "
"up, if the modem is on [.filename]#uart1#, the modem device would be [."
"filename]#/dev/cuau1#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:526
#, no-wrap
msgid "Connecting Manually"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:532
msgid ""
"Connecting to the Internet by manually controlling `ppp` is quick, easy, and "
"a great way to debug a connection or just get information on how the ISP "
"treats `ppp` client connections. Lets start PPP from the command line. "
"Note that in all of our examples we will use _example_ as the hostname of "
"the machine running PPP. To start `ppp`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:541
#, no-wrap
msgid "ppp ON example> set device /dev/cuau1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:544
msgid "This second command sets the modem device to [.filename]#cuau1#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:548
#, no-wrap
msgid "ppp ON example> set speed 115200\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:551
msgid "This sets the connection speed to 115,200 kbps."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:555
#, no-wrap
msgid "ppp ON example> enable dns\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:559
msgid ""
"This tells `ppp` to configure the resolver and add the nameserver lines to [."
"filename]#/etc/resolv.conf#. If `ppp` cannot determine the hostname, it can "
"manually be set later."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:563
#, no-wrap
msgid "ppp ON example> term\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:566
msgid ""
"This switches to \"terminal\" mode in order to manually control the modem."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:571
#, no-wrap
msgid ""
"deflink: Entering terminal mode on /dev/cuau1\n"
"type '~h' for help\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:578
#, no-wrap
msgid ""
"at\n"
"OK\n"
"atdt123456789\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:581
msgid ""
"Use `at` to initialize the modem, then use `atdt` and the number for the ISP "
"to begin the dial in process."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:585
#, no-wrap
msgid "CONNECT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:588
msgid ""
"Confirmation of the connection, if we are going to have any connection "
"problems, unrelated to hardware, here is where we will attempt to resolve "
"them."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:592
#, no-wrap
msgid "ISP Login:myusername\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:595
msgid ""
"At this prompt, return the prompt with the username that was provided by the "
"ISP."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:599
#, no-wrap
msgid "ISP Pass:mypassword\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:603
msgid ""
"At this prompt, reply with the password that was provided by the ISP. Just "
"like logging into FreeBSD, the password will not echo."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:607
#, no-wrap
msgid "Shell or PPP:ppp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:612
msgid ""
"Depending on the ISP, this prompt might not appear. If it does, it is "
"asking whether to use a shell on the provider or to start `ppp`. In this "
"example, `ppp` was selected in order to establish an Internet connection."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:616
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:624
#, no-wrap
msgid "Ppp ON example>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:620
msgid ""
"Notice that in this example the first `p` has been capitalized. This shows "
"that we have successfully connected to the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:627
msgid ""
"We have successfully authenticated with our ISP and are waiting for the "
"assigned IP address."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:631
#, no-wrap
msgid "PPP ON example>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:634
msgid ""
"We have made an agreement on an IP address and successfully completed our "
"connection."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:638
#, no-wrap
msgid "PPP ON example>add default HISADDR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:643
msgid ""
"Here we add our default route, we need to do this before we can talk to the "
"outside world as currently the only established connection is with the "
"peer. If this fails due to existing routes, put a bang character `!` in "
"front of the `add`. Alternatively, set this before making the actual "
"connection and it will negotiate a new route accordingly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:648
msgid ""
"If everything went good we should now have an active connection to the "
"Internet, which could be thrown into the background using kbd:[CTRL+z]. If "
"`PPP` returns to `ppp` the connection has been lost. This is good to know "
"because it shows the connection status. Capital P's represent a connection "
"to the ISP and lowercase p's show that the connection has been lost."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:649
#, no-wrap
msgid "Debugging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:655
msgid ""
"If a connection cannot be established, turn hardware flow CTS/RTS to off "
"using `set ctsrts off`. This is mainly the case when connected to some PPP-"
"capable terminal servers, where PPP hangs when it tries to write data to the "
"communication link, and waits for a Clear To Send (CTS) signal which may "
"never come. When using this option, include `set accmap` as it may be "
"required to defeat hardware dependent on passing certain characters from end "
"to end, most of the time XON/XOFF. Refer to man:ppp[8] for more information "
"on this option and how it is used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:658
msgid ""
"An older modem may need `set parity even`. Parity is set at none be "
"default, but is used for error checking with a large increase in traffic, on "
"older modems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:661
msgid ""
"PPP may not return to the command mode, which is usually a negotiation error "
"where the ISP is waiting for negotiating to begin. At this point, using "
"`~p` will force ppp to start sending the configuration information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:664
msgid ""
"If a login prompt never appears, PAP or CHAP authentication is most likely "
"required. To use PAP or CHAP, add the following options to PPP before going "
"into terminal mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:668
#, no-wrap
msgid "ppp ON example> set authname myusername\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:671
msgid ""
"Where _myusername_ should be replaced with the username that was assigned by "
"the ISP."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:675
#, no-wrap
msgid "ppp ON example> set authkey mypassword\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:678
msgid ""
"Where _mypassword_ should be replaced with the password that was assigned by "
"the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:684
msgid ""
"If a connection is established, but cannot seem to find any domain name, try "
"to man:ping[8] an IP address. If there is 100 percent (100%) packet loss, "
"it is likely that a default route was not assigned. Double check that `add "
"default HISADDR` was set during the connection. If a connection can be made "
"to a remote IP address, it is possible that a resolver address has not been "
"added to [.filename]#/etc/resolv.conf#. This file should look like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:690
#, no-wrap
msgid ""
"domain example.com\n"
"nameserver x.x.x.x\n"
"nameserver y.y.y.y\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:693
msgid ""
"Where _x.x.x.x_ and _y.y.y.y_ should be replaced with the IP address of the "
"ISP's DNS servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:695
msgid ""
"To configure man:syslog[3] to provide logging for the PPP connection, make "
"sure this line exists in [.filename]#/etc/syslog.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:700
#, no-wrap
msgid ""
"!ppp\n"
"*.* /var/log/ppp.log\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:703
#, no-wrap
msgid "Using PPP over Ethernet (PPPoE)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:706
msgid "This section describes how to set up PPP over Ethernet (PPPoE)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:708
msgid "Here is an example of a working [.filename]#ppp.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:714
#, no-wrap
msgid ""
"default:\n"
" set log Phase tun command # you can add more detailed logging if you wish\n"
" set ifaddr 10.0.0.1/0 10.0.0.2/0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:722
#, no-wrap
msgid ""
"name_of_service_provider:\n"
" set device PPPoE:xl1 # replace xl1 with your Ethernet device\n"
" set authname YOURLOGINNAME\n"
" set authkey YOURPASSWORD\n"
" set dial\n"
" set login\n"
" add default HISADDR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:725
msgid "As `root`, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:729
#, no-wrap
msgid "# ppp -ddial name_of_service_provider\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:732
msgid "Add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:739
#, no-wrap
msgid ""
"ppp_enable=\"YES\"\n"
"ppp_mode=\"ddial\"\n"
"ppp_nat=\"YES\"\t# if you want to enable nat for your local network, otherwise NO\n"
"ppp_profile=\"name_of_service_provider\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:741
#, no-wrap
msgid "Using a PPPoE Service Tag"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:745
msgid ""
"Sometimes it will be necessary to use a service tag to establish the "
"connection. Service tags are used to distinguish between different PPPoE "
"servers attached to a given network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:747
msgid ""
"Any required service tag information should be in the documentation provided "
"by the ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:754
msgid ""
"As a last resort, one could try installing the package:net/rr-pppoe[] "
"package or port. Bear in mind however, this may de-program your modem and "
"render it useless, so think twice before doing it. Simply install the "
"program shipped with the modem. Then, access the menu:System[] menu from "
"the program. The name of the profile should be listed there. It is usually "
"_ISP_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:757
msgid ""
"The profile name (service tag) will be used in the PPPoE configuration entry "
"in [.filename]#ppp.conf# as the provider part for `set device`. Refer to "
"man:ppp[8] for full details. It should look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:761
#, no-wrap
msgid "set device PPPoE:xl1:ISP\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:764
msgid ""
"Do not forget to change _xl1_ to the proper device for the Ethernet card."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:766
msgid "Do not forget to change _ISP_ to the profile."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:768
msgid ""
"For additional information, refer to http://renaud.waldura.com/doc/freebsd/"
"pppoe/[Cheaper Broadband with FreeBSD on DSL] by Renaud Waldura."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:770
#, no-wrap
msgid "PPPoE with a 3Com(R) HomeConnect(TM) ADSL Modem Dual Link"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:773
msgid ""
"This modem does not follow the PPPoE specification defined in http://www."
"faqs.org/rfcs/rfc2516.html[RFC 2516]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:776
msgid ""
"In order to make FreeBSD capable of communicating with this device, a sysctl "
"must be set. This can be done automatically at boot time by updating [."
"filename]#/etc/sysctl.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:780
#, no-wrap
msgid "net.graph.nonstandard_pppoe=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:783
msgid "or can be done immediately with the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:787
#, no-wrap
msgid "# sysctl net.graph.nonstandard_pppoe=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:790
msgid ""
"Unfortunately, because this is a system-wide setting, it is not possible to "
"talk to a normal PPPoE client or server and a 3Com(R) HomeConnect(TM) ADSL "
"Modem at the same time."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:792
#, no-wrap
msgid "Using PPP over ATM (PPPoA)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:796
msgid ""
"The following describes how to set up PPP over ATM (PPPoA). PPPoA is a "
"popular choice among European DSL providers."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:797
#, no-wrap
msgid "Using mpd"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:802
msgid ""
"The mpd application can be used to connect to a variety of services, in "
"particular PPTP services. It can be installed using the package:net/mpd5[] "
"package or port. Many ADSL modems require that a PPTP tunnel is created "
"between the modem and computer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:808
msgid ""
"Once installed, configure mpd to suit the provider's settings. The port "
"places a set of sample configuration files which are well documented in [."
"filename]#/usr/local/etc/mpd/#. A complete guide to configure mpd is "
"available in HTML format in [.filename]#/usr/ports/shared/doc/mpd/#. Here "
"is a sample configuration for connecting to an ADSL service with mpd. The "
"configuration is spread over two files, first the [.filename]#mpd.conf#:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:812
msgid "This example [.filename]#mpd.conf# only works with mpd 4.x."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:818
#, no-wrap
msgid ""
"default:\n"
" load adsl\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:824
#, no-wrap
msgid ""
"adsl:\n"
" new -i ng0 adsl adsl\n"
" set bundle authname username <.>\n"
" set bundle password password <.>\n"
" set bundle disable multilink\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:829
#, no-wrap
msgid ""
" set link no pap acfcomp protocomp\n"
" set link disable chap\n"
" set link accept chap\n"
" set link keep-alive 30 10\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:832
#, no-wrap
msgid ""
" set ipcp no vjcomp\n"
" set ipcp ranges 0.0.0.0/0 0.0.0.0/0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:837
#, no-wrap
msgid ""
" set iface route default\n"
" set iface disable on-demand\n"
" set iface enable proxy-arp\n"
" set iface idle 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:839
#, no-wrap
msgid " open\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:842
msgid "The username used to authenticate with your ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:843
msgid "The password used to authenticate with your ISP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:846
msgid ""
"Information about the link, or links, to establish is found in [."
"filename]#mpd.links#. An example [.filename]#mpd.links# to accompany the "
"above example is given beneath:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:855
#, no-wrap
msgid ""
"adsl:\n"
" set link type pptp\n"
" set pptp mode active\n"
" set pptp enable originate outcall\n"
" set pptp self 10.0.0.1 <.>\n"
" set pptp peer 10.0.0.138 <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:858
msgid "The IP address of FreeBSD computer running mpd."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:859
msgid ""
"The IP address of the ADSL modem. The Alcatel SpeedTouch(TM) Home defaults "
"to `10.0.0.138`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:861
msgid ""
"It is possible to initialize the connection easily by issuing the following "
"command as `root`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:865
#, no-wrap
msgid "# mpd -b adsl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:868
msgid "To view the status of the connection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:874
#, no-wrap
msgid ""
"% ifconfig ng0\n"
"ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500\n"
" inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:877
msgid ""
"Using mpd is the recommended way to connect to an ADSL service with FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:878
#, no-wrap
msgid "Using pptpclient"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:881
msgid ""
"It is also possible to use FreeBSD to connect to other PPPoA services using "
"package:net/pptpclient[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:885
msgid ""
"To use package:net/pptpclient[] to connect to a DSL service, install the "
"port or package, then edit [.filename]#/etc/ppp/ppp.conf#. An example "
"section of [.filename]#ppp.conf# is given below. For further information on "
"[.filename]#ppp.conf# options consult man:ppp[8]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:896
#, no-wrap
msgid ""
"adsl:\n"
" set log phase chat lcp ipcp ccp tun command\n"
" set timeout 0\n"
" enable dns\n"
" set authname username <.>\n"
" set authkey password <.>\n"
" set ifaddr 0 0\n"
" add default HISADDR\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:899
msgid "The username for the DSL provider."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:900
msgid "The password for your account."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:905
msgid ""
"Since the account's password is added to [.filename]#ppp.conf# in plain text "
"form, make sure nobody can read the contents of this file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:910
#, no-wrap
msgid ""
"# chown root:wheel /etc/ppp/ppp.conf\n"
"# chmod 600 /etc/ppp/ppp.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:919
msgid ""
"This will open a tunnel for a PPP session to the DSL router. Ethernet DSL "
"modems have a preconfigured LAN IP address to connect to. In the case of "
"the Alcatel SpeedTouch(TM) Home, this address is `10.0.0.138`. The router's "
"documentation should list the address the device uses. To open the tunnel "
"and start a PPP session:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:923
#, no-wrap
msgid "# pptp address adsl\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:929
msgid ""
"If an ampersand (\"&\") is added to the end of this command, pptp will "
"return the prompt."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:933
msgid ""
"A [.filename]#tun# virtual tunnel device will be created for interaction "
"between the pptp and ppp processes. Once the prompt is returned, or the "
"pptp process has confirmed a connection, examine the tunnel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:940
#, no-wrap
msgid ""
"% ifconfig tun0\n"
"tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500\n"
" inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00\n"
"\tOpened by PID 918\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/ppp-and-slip/_index.adoc:943
msgid ""
"If the connection fails, check the configuration of the router, which is "
"usually accessible using a web browser. Also, examine the output of `pptp` "
"and the contents of the log file, [.filename]#/var/log/ppp.log# for clues."
msgstr ""
diff --git a/documentation/content/en/books/handbook/preface/_index.po b/documentation/content/en/books/handbook/preface/_index.po
index 39d4784b59..cdd3c29c34 100644
--- a/documentation/content/en/books/handbook/preface/_index.po
+++ b/documentation/content/en/books/handbook/preface/_index.po
@@ -1,985 +1,1067 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/preface/_index.adoc:1
#, no-wrap
msgid "The FreeBSD newcomer will find that the first section of this book guides the user through the FreeBSD installation process and gently introduces the concepts and conventions that underpin UNIX"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/preface/_index.adoc:1
#: documentation/content/en/books/handbook/preface/_index.adoc:14
#, no-wrap
msgid "Preface"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/preface/_index.adoc:48
#, no-wrap
msgid "Intended Audience"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/preface/_index.adoc:52
msgid ""
"The FreeBSD newcomer will find that the first section of this book guides "
"the user through the FreeBSD installation process and gently introduces the "
"concepts and conventions that underpin UNIX(R). Working through this "
"section requires little more than the desire to explore, and the ability to "
"take on board new concepts as they are introduced."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/preface/_index.adoc:55
msgid ""
"Once you have traveled this far, the second, far larger, section of the "
"Handbook is a comprehensive reference to all manner of topics of interest to "
"FreeBSD system administrators. Some of these chapters may recommend that "
"you do some prior reading, and this is noted in the synopsis at the "
"beginning of each chapter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/preface/_index.adoc:57
msgid ""
"For a list of additional sources of information, please see crossref:"
"bibliography[bibliography,Bibliography]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/preface/_index.adoc:59
#, no-wrap
-msgid "Changes from the Third Edition"
+msgid "Fourth Edition"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/preface/_index.adoc:63
msgid ""
+"The current version of the Handbook represents the cumulative effort of a "
+"working group that has been reviewing and updating all Handbook content. "
+"These are the major updates since the fourth edition of the Handbook."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:65
+msgid ""
+"The Handbook has been converted from link:https://docbook.org/[Docbook] to "
+"link:https://gohugo.io/[Hugo] and link:https://asciidoctor.org/[AsciiDoctor]"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:66
+msgid ""
+"The link:https://docs.FreeBSD.org[FreeBSD Documentation Portal] has been "
+"created."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:67
+msgid ""
+"crossref:wayland[wayland,Wayland] has been added with information about "
+"installing and configuring Wayland under FreeBSD."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:68
+msgid ""
+"The crossref:bibliography[bibliography,Bibliography] has been extensively "
+"updated."
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/handbook/preface/_index.adoc:71
+#, no-wrap
+msgid "Third Edition"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:75
+msgid ""
"The current online version of the Handbook represents the cumulative effort "
"of many hundreds of contributors over the past 10 years. The following are "
"some of the significant changes since the two volume third edition was "
"published in 2004:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:65
+#: documentation/content/en/books/handbook/preface/_index.adoc:77
msgid ""
"crossref:wine[wine,WINE] has been added with information about how to run "
"Windows(R) applications on FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:66
+#: documentation/content/en/books/handbook/preface/_index.adoc:78
msgid ""
"crossref:dtrace[dtrace,DTrace] has been added with information about the "
"powerful DTrace performance analysis tool."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:67
+#: documentation/content/en/books/handbook/preface/_index.adoc:79
msgid ""
-"crossref:filesystems[filesystems,Other File Systems] has been added with "
+"crossref:filesystems[filesystems,Other File Systems] have been added with "
"information about non-native file systems in FreeBSD, such as ZFS from "
"Sun(TM)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:68
+#: documentation/content/en/books/handbook/preface/_index.adoc:80
msgid ""
"crossref:audit[audit,Security Event Auditing] has been added to cover the "
"new auditing capabilities in FreeBSD and explain its use."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:69
+#: documentation/content/en/books/handbook/preface/_index.adoc:81
msgid ""
"crossref:virtualization[virtualization,Virtualization] has been added with "
"information about installing FreeBSD on virtualization software."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:70
+#: documentation/content/en/books/handbook/preface/_index.adoc:82
msgid ""
"crossref:bsdinstall[bsdinstall,Installing FreeBSD] has been added to cover "
"installation of FreeBSD using the new installation utility, bsdinstall."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/preface/_index.adoc:72
+#: documentation/content/en/books/handbook/preface/_index.adoc:84
#, no-wrap
-msgid "Changes from the Second Edition (2004)"
+msgid "Second Edition (2004)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:77
+#: documentation/content/en/books/handbook/preface/_index.adoc:89
msgid ""
"The third edition was the culmination of over two years of work by the "
"dedicated members of the FreeBSD Documentation Project. The printed edition "
"grew to such a size that it was necessary to publish as two separate "
"volumes. The following are the major changes in this new edition:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:79
+#: documentation/content/en/books/handbook/preface/_index.adoc:91
msgid ""
"crossref:config[config-tuning,Configuration and Tuning] has been expanded "
"with new information about the ACPI power and resource management, the "
"`cron` system utility, and more kernel tuning options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:80
+#: documentation/content/en/books/handbook/preface/_index.adoc:92
msgid ""
"crossref:security[security,Security] has been expanded with new information "
"about virtual private networks (VPNs), file system access control lists "
"(ACLs), and security advisories."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:81
+#: documentation/content/en/books/handbook/preface/_index.adoc:93
msgid ""
"crossref:mac[mac,Mandatory Access Control] is a new chapter with this "
"edition. It explains what MAC is and how this mechanism can be used to "
"secure a FreeBSD system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:82
+#: documentation/content/en/books/handbook/preface/_index.adoc:94
msgid ""
"crossref:disks[disks,Storage] has been expanded with new information about "
"USB storage devices, file system snapshots, file system quotas, file and "
"network backed filesystems, and encrypted disk partitions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:83
+#: documentation/content/en/books/handbook/preface/_index.adoc:95
msgid ""
"A troubleshooting section has been added to crossref:ppp-and-slip[ppp-and-"
"slip,PPP]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:84
+#: documentation/content/en/books/handbook/preface/_index.adoc:96
msgid ""
"crossref:mail[mail,Electronic Mail] has been expanded with new information "
"about using alternative transport agents, SMTP authentication, UUCP, "
"fetchmail, procmail, and other advanced topics."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:85
+#: documentation/content/en/books/handbook/preface/_index.adoc:97
msgid ""
"crossref:network-servers[network-servers,Network Servers] is all new with "
"this edition. This chapter includes information about setting up the Apache "
"HTTP Server, ftpd, and setting up a server for Microsoft(R) Windows(R) "
"clients with Samba. Some sections from crossref:advanced-networking[advanced-"
"networking,Advanced Networking] were moved here to improve the presentation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:86
+#: documentation/content/en/books/handbook/preface/_index.adoc:98
msgid ""
"crossref:advanced-networking[advanced-networking,Advanced Networking] has "
"been expanded with new information about using Bluetooth(R) devices with "
"FreeBSD, setting up wireless networks, and Asynchronous Transfer Mode (ATM) "
"networking."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:87
+#: documentation/content/en/books/handbook/preface/_index.adoc:99
msgid ""
"A glossary has been added to provide a central location for the definitions "
"of technical terms used throughout the book."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:88
+#: documentation/content/en/books/handbook/preface/_index.adoc:100
msgid ""
"A number of aesthetic improvements have been made to the tables and figures "
"throughout the book."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/preface/_index.adoc:90
+#: documentation/content/en/books/handbook/preface/_index.adoc:102
#, no-wrap
-msgid "Changes from the First Edition (2001)"
+msgid "First Edition (2001)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:94
+#: documentation/content/en/books/handbook/preface/_index.adoc:106
msgid ""
"The second edition was the culmination of over two years of work by the "
"dedicated members of the FreeBSD Documentation Project. The following were "
"the major changes in this edition:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:96
+#: documentation/content/en/books/handbook/preface/_index.adoc:108
msgid "A complete Index has been added."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:97
+#: documentation/content/en/books/handbook/preface/_index.adoc:109
msgid "All ASCII figures have been replaced by graphical diagrams."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:98
+#: documentation/content/en/books/handbook/preface/_index.adoc:110
msgid ""
"A standard synopsis has been added to each chapter to give a quick summary "
"of what information the chapter contains, and what the reader is expected to "
"know."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:99
+#: documentation/content/en/books/handbook/preface/_index.adoc:111
msgid ""
"The content has been logically reorganized into three parts: \"Getting "
"Started\", \"System Administration\", and \"Appendices\"."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:100
+#: documentation/content/en/books/handbook/preface/_index.adoc:112
msgid ""
"crossref:basics[basics,FreeBSD Basics] has been expanded to contain "
"additional information about processes, daemons, and signals."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:101
+#: documentation/content/en/books/handbook/preface/_index.adoc:113
msgid ""
"crossref:ports[ports,Installing Applications: Packages and Ports] has been "
"expanded to contain additional information about binary package management."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:102
+#: documentation/content/en/books/handbook/preface/_index.adoc:114
msgid ""
"crossref:x11[x11,The X Window System] has been completely rewritten with an "
"emphasis on using modern desktop technologies such as KDE and GNOME on "
"XFree86(TM) 4.X."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:103
+#: documentation/content/en/books/handbook/preface/_index.adoc:115
msgid "crossref:boot[boot,The FreeBSD Booting Process] has been expanded."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:104
+#: documentation/content/en/books/handbook/preface/_index.adoc:116
msgid ""
"crossref:disks[disks,Storage] has been written from what used to be two "
"separate chapters on \"Disks\" and \"Backups\". We feel that the topics are "
"easier to comprehend when presented as a single chapter. A section on RAID "
"(both hardware and software) has also been added."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:105
+#: documentation/content/en/books/handbook/preface/_index.adoc:117
msgid ""
"crossref:serialcomms[serialcomms,Serial Communications] has been completely "
"reorganized and updated for FreeBSD 4.X/5.X."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:106
+#: documentation/content/en/books/handbook/preface/_index.adoc:118
msgid "crossref:ppp-and-slip[ppp-and-slip,PPP] has been substantially updated."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:107
+#: documentation/content/en/books/handbook/preface/_index.adoc:119
msgid ""
"Many new sections have been added to crossref:advanced-networking[advanced-"
"networking,Advanced Networking]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:108
+#: documentation/content/en/books/handbook/preface/_index.adoc:120
msgid ""
"crossref:mail[mail,Electronic Mail] has been expanded to include more "
"information about configuring sendmail."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:109
+#: documentation/content/en/books/handbook/preface/_index.adoc:121
msgid ""
"crossref:linuxemu[linuxemu,Linux® Binary Compatibility] has been expanded to "
"include information about installing Oracle(R) and SAP(R) R/3(R)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:110
+#: documentation/content/en/books/handbook/preface/_index.adoc:122
msgid "The following new topics are covered in this second edition:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:112
+#: documentation/content/en/books/handbook/preface/_index.adoc:124
msgid "crossref:config[config-tuning,Configuration and Tuning]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:113
+#: documentation/content/en/books/handbook/preface/_index.adoc:125
msgid "crossref:multimedia[multimedia,Multimedia]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/preface/_index.adoc:115
+#: documentation/content/en/books/handbook/preface/_index.adoc:127
#, no-wrap
msgid "Organization of This Book"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:127
+#: documentation/content/en/books/handbook/preface/_index.adoc:139
msgid ""
"This book is split into five logically distinct sections. The first "
"section, _Getting Started_, covers the installation and basic usage of "
"FreeBSD. It is expected that the reader will follow these chapters in "
"sequence, possibly skipping chapters covering familiar topics. The second "
"section, _Common Tasks_, covers some frequently used features of FreeBSD. "
"This section, and all subsequent sections, can be read out of order. Each "
"chapter begins with a succinct synopsis that describes what the chapter "
"covers and what the reader is expected to already know. This is meant to "
"allow the casual reader to skip around to find chapters of interest. The "
"third section, _System Administration_, covers administration topics. The "
"fourth section, _Network Communication_, covers networking and server "
"topics. The fifth section contains appendices of reference information."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:128
+#: documentation/content/en/books/handbook/preface/_index.adoc:140
#, no-wrap
msgid "_crossref:introduction[introduction,Introduction]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:130
+#: documentation/content/en/books/handbook/preface/_index.adoc:142
msgid ""
"Introduces FreeBSD to a new user. It describes the history of the FreeBSD "
"Project, its goals and development model."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:131
+#: documentation/content/en/books/handbook/preface/_index.adoc:143
#, no-wrap
msgid "_crossref:bsdinstall[bsdinstall,Installing FreeBSD]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:133
+#: documentation/content/en/books/handbook/preface/_index.adoc:145
msgid ""
"Walks a user through the entire installation process of FreeBSD 9._x_ and "
"later using bsdinstall."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:134
+#: documentation/content/en/books/handbook/preface/_index.adoc:146
#, no-wrap
msgid "_crossref:basics[basics,FreeBSD Basics]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:136
+#: documentation/content/en/books/handbook/preface/_index.adoc:148
msgid ""
"Covers the basic commands and functionality of the FreeBSD operating system. "
"If you are familiar with Linux(R) or another flavor of UNIX(R) then you can "
"probably skip this chapter."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:137
+#: documentation/content/en/books/handbook/preface/_index.adoc:149
#, no-wrap
msgid "_crossref:ports[ports,Installing Applications: Packages and Ports]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:139
+#: documentation/content/en/books/handbook/preface/_index.adoc:151
msgid ""
"Covers the installation of third-party software with both FreeBSD's "
"innovative \"Ports Collection\" and standard binary packages."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:140
+#: documentation/content/en/books/handbook/preface/_index.adoc:152
#, no-wrap
msgid "_crossref:x11[x11,The X Window System]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:142
+#: documentation/content/en/books/handbook/preface/_index.adoc:154
msgid ""
"Describes the X Window System in general and using X11 on FreeBSD in "
"particular. Also describes common desktop environments such as KDE and GNOME."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:143
+#: documentation/content/en/books/handbook/preface/_index.adoc:155
+#, no-wrap
+msgid "_crossref:wayland[wayland,Wayland]_"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:157
+msgid ""
+"Describes the Wayland display server in general and using Wayland on FreeBSD "
+"in particular. Also describes common compositors such as Wayfire, Hikari and "
+"Sway."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/handbook/preface/_index.adoc:158
#, no-wrap
msgid "_crossref:desktop[desktop,Desktop Applications]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:145
+#: documentation/content/en/books/handbook/preface/_index.adoc:160
msgid ""
"Lists some common desktop applications, such as web browsers and "
"productivity suites, and describes how to install them on FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:146
+#: documentation/content/en/books/handbook/preface/_index.adoc:161
#, no-wrap
msgid "_crossref:multimedia[multimedia,Multimedia]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:148
+#: documentation/content/en/books/handbook/preface/_index.adoc:163
msgid ""
"Shows how to set up sound and video playback support for your system. Also "
"describes some sample audio and video applications."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:149
+#: documentation/content/en/books/handbook/preface/_index.adoc:164
#, no-wrap
msgid "_crossref:kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:151
+#: documentation/content/en/books/handbook/preface/_index.adoc:166
msgid ""
"Explains why you might need to configure a new kernel and provides detailed "
"instructions for configuring, building, and installing a custom kernel."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:152
+#: documentation/content/en/books/handbook/preface/_index.adoc:167
#, no-wrap
msgid "_crossref:printing[printing,Printing]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:154
+#: documentation/content/en/books/handbook/preface/_index.adoc:169
msgid ""
"Describes managing printers on FreeBSD, including information about banner "
"pages, printer accounting, and initial setup."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:155
+#: documentation/content/en/books/handbook/preface/_index.adoc:170
#, no-wrap
msgid "_crossref:linuxemu[linuxemu,Linux® Binary Compatibility]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:157
+#: documentation/content/en/books/handbook/preface/_index.adoc:172
msgid ""
"Describes the Linux(R) compatibility features of FreeBSD. Also provides "
"detailed installation instructions for many popular Linux(R) applications "
"such as Oracle(R) and Mathematica(R)."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:158
+#: documentation/content/en/books/handbook/preface/_index.adoc:173
+#, no-wrap
+msgid "_crossref:wine[wine,WINE]_"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:175
+msgid ""
+"Describes WINE and provides detailed installation instructions. Also "
+"describes how WINE operates, how to install a GUI helper, how to run "
+"Windows(R) applications on FreeBSD, and offers other tips and solutions."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/handbook/preface/_index.adoc:176
#, no-wrap
msgid "_crossref:config[config-tuning,Configuration and Tuning]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:160
+#: documentation/content/en/books/handbook/preface/_index.adoc:178
msgid ""
"Describes the parameters available for system administrators to tune a "
"FreeBSD system for optimum performance. Also describes the various "
"configuration files used in FreeBSD and where to find them."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:161
+#: documentation/content/en/books/handbook/preface/_index.adoc:179
#, no-wrap
msgid "_crossref:boot[boot,The FreeBSD Booting Process]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:163
+#: documentation/content/en/books/handbook/preface/_index.adoc:181
msgid ""
"Describes the FreeBSD boot process and explains how to control this process "
"with configuration options."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:164
+#: documentation/content/en/books/handbook/preface/_index.adoc:182
#, no-wrap
msgid "_crossref:security[security,Security]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:166
+#: documentation/content/en/books/handbook/preface/_index.adoc:184
msgid ""
"Describes many different tools available to help keep your FreeBSD system "
"secure, including Kerberos, IPsec and OpenSSH."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:167
+#: documentation/content/en/books/handbook/preface/_index.adoc:185
#, no-wrap
msgid "_crossref:jails[jails,Jails]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:169
+#: documentation/content/en/books/handbook/preface/_index.adoc:187
msgid ""
"Describes the jails framework, and the improvements of jails over the "
"traditional chroot support of FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:170
+#: documentation/content/en/books/handbook/preface/_index.adoc:188
#, no-wrap
msgid "_crossref:mac[mac,Mandatory Access Control]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:172
+#: documentation/content/en/books/handbook/preface/_index.adoc:190
msgid ""
"Explains what Mandatory Access Control (MAC) is and how this mechanism can "
"be used to secure a FreeBSD system."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:173
+#: documentation/content/en/books/handbook/preface/_index.adoc:191
#, no-wrap
msgid "_crossref:audit[audit,Security Event Auditing]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:175
+#: documentation/content/en/books/handbook/preface/_index.adoc:193
msgid ""
"Describes what FreeBSD Event Auditing is, how it can be installed, "
"configured, and how audit trails can be inspected or monitored."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:176
+#: documentation/content/en/books/handbook/preface/_index.adoc:194
#, no-wrap
msgid "_crossref:disks[disks,Storage]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:178
+#: documentation/content/en/books/handbook/preface/_index.adoc:196
msgid ""
"Describes how to manage storage media and filesystems with FreeBSD. This "
"includes physical disks, RAID arrays, optical and tape media, memory-backed "
"disks, and network filesystems."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:179
+#: documentation/content/en/books/handbook/preface/_index.adoc:197
#, no-wrap
msgid "_crossref:geom[geom,GEOM: Modular Disk Transformation Framework]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:181
+#: documentation/content/en/books/handbook/preface/_index.adoc:199
msgid ""
"Describes what the GEOM framework in FreeBSD is and how to configure various "
"supported RAID levels."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:182
+#: documentation/content/en/books/handbook/preface/_index.adoc:200
+#, no-wrap
+msgid "_crossref:zfs[zfs,The OpenZFS storage platform]_"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/preface/_index.adoc:202
+msgid ""
+"Describes the OpenZFS storage platform and provides a quick-start guide and "
+"information about advanced topics running OpenZFS under FreeBSD."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/handbook/preface/_index.adoc:203
#, no-wrap
msgid "_crossref:filesystems[filesystems,Other File Systems]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:184
+#: documentation/content/en/books/handbook/preface/_index.adoc:205
msgid ""
-"Examines support of non-native file systems in FreeBSD, like the Z File "
-"System from Sun(TM)."
+"Examines support for non-native file systems under FreeBSD like ext2, ext3 "
+"and ext4."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:185
+#: documentation/content/en/books/handbook/preface/_index.adoc:206
#, no-wrap
msgid "_crossref:virtualization[virtualization,Virtualization]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:187
+#: documentation/content/en/books/handbook/preface/_index.adoc:208
msgid ""
"Describes what virtualization systems offer, and how they can be used with "
"FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:188
+#: documentation/content/en/books/handbook/preface/_index.adoc:209
#, no-wrap
msgid "_crossref:l10n[l10n,Localization - i18n/L10n Usage and Setup]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:190
+#: documentation/content/en/books/handbook/preface/_index.adoc:211
msgid ""
"Describes how to use FreeBSD in languages other than English. Covers both "
"system and application level localization."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:191
+#: documentation/content/en/books/handbook/preface/_index.adoc:212
#, no-wrap
msgid "_crossref:cutting-edge[updating-upgrading,Updating and Upgrading FreeBSD]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:193
+#: documentation/content/en/books/handbook/preface/_index.adoc:214
msgid ""
"Explains the differences between FreeBSD-STABLE, FreeBSD-CURRENT, and "
"FreeBSD releases. Describes which users would benefit from tracking a "
"development system and outlines that process. Covers the methods users may "
"take to update their system to the latest security release."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:194
+#: documentation/content/en/books/handbook/preface/_index.adoc:215
#, no-wrap
msgid "_crossref:dtrace[dtrace,DTrace]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:196
+#: documentation/content/en/books/handbook/preface/_index.adoc:217
msgid ""
-"Describes how to configure and use the DTrace tool from Sun(TM) in FreeBSD. "
+"Describes how to configure and use the DTrace tool from Sun(TM) on FreeBSD. "
"Dynamic tracing can help locate performance issues, by performing real time "
"system analysis."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:197
+#: documentation/content/en/books/handbook/preface/_index.adoc:218
#, no-wrap
-msgid "_crossref:serialcomms[serialcomms,Serial Communications]_"
+msgid "_crossref:usb-device-mode[usb-device-mode,USB Device Mode / USB OTG]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:199
+#: documentation/content/en/books/handbook/preface/_index.adoc:220
msgid ""
-"Explains how to connect terminals and modems to your FreeBSD system for both "
-"dial in and dial out connections."
+"Explains the use of USB Device Mode and USB On The Go (USB OTG) on FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:200
+#: documentation/content/en/books/handbook/preface/_index.adoc:221
#, no-wrap
msgid "_crossref:ppp-and-slip[ppp-and-slip,PPP]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:202
-msgid "Describes how to use PPP to connect to remote systems with FreeBSD."
+#: documentation/content/en/books/handbook/preface/_index.adoc:223
+msgid "Describes how to use PPP to connect to remote systems in FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:203
+#: documentation/content/en/books/handbook/preface/_index.adoc:224
#, no-wrap
msgid "_crossref:mail[mail,Electronic Mail]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:205
+#: documentation/content/en/books/handbook/preface/_index.adoc:226
msgid ""
"Explains the different components of an email server and dives into simple "
"configuration topics for the most popular mail server software: sendmail."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:206
+#: documentation/content/en/books/handbook/preface/_index.adoc:227
#, no-wrap
msgid "_crossref:network-servers[network-servers,Network Servers]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:208
+#: documentation/content/en/books/handbook/preface/_index.adoc:229
msgid ""
"Provides detailed instructions and example configuration files to set up "
"your FreeBSD machine as a network filesystem server, domain name server, "
"network information system server, or time synchronization server."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:209
+#: documentation/content/en/books/handbook/preface/_index.adoc:230
#, no-wrap
msgid "_crossref:firewalls[firewalls,Firewalls]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:211
+#: documentation/content/en/books/handbook/preface/_index.adoc:232
msgid ""
"Explains the philosophy behind software-based firewalls and provides "
"detailed information about the configuration of the different firewalls "
"available for FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:212
+#: documentation/content/en/books/handbook/preface/_index.adoc:233
#, no-wrap
msgid "_crossref:advanced-networking[advanced-networking,Advanced Networking]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:214
+#: documentation/content/en/books/handbook/preface/_index.adoc:235
msgid ""
"Describes many networking topics, including sharing an Internet connection "
"with other computers on your LAN, advanced routing topics, wireless "
"networking, Bluetooth(R), ATM, IPv6, and much more."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:215
+#: documentation/content/en/books/handbook/preface/_index.adoc:236
#, no-wrap
msgid "_crossref:mirrors[mirrors,Obtaining FreeBSD]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:217
+#: documentation/content/en/books/handbook/preface/_index.adoc:238
msgid ""
"Lists different sources for obtaining FreeBSD media on CDROM or DVD as well "
"as different sites on the Internet that allow you to download and install "
"FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:218
+#: documentation/content/en/books/handbook/preface/_index.adoc:239
#, no-wrap
msgid "_crossref:bibliography[bibliography,Bibliography]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:220
+#: documentation/content/en/books/handbook/preface/_index.adoc:241
msgid ""
"This book touches on many different subjects that may leave you hungry for a "
"more detailed explanation. The bibliography lists many excellent books that "
"are referenced in the text."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:221
+#: documentation/content/en/books/handbook/preface/_index.adoc:242
#, no-wrap
msgid "_crossref:eresources[eresources,Resources on the Internet]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:223
+#: documentation/content/en/books/handbook/preface/_index.adoc:244
msgid ""
"Describes the many forums available for FreeBSD users to post questions and "
"engage in technical conversations about FreeBSD."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:224
+#: documentation/content/en/books/handbook/preface/_index.adoc:245
#, no-wrap
msgid "_crossref:pgpkeys[pgpkeys,OpenPGP Keys]_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:226
+#: documentation/content/en/books/handbook/preface/_index.adoc:247
msgid "Lists the PGP fingerprints of several FreeBSD Developers."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/preface/_index.adoc:228
+#: documentation/content/en/books/handbook/preface/_index.adoc:249
#, no-wrap
msgid "Conventions used in this book"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:231
+#: documentation/content/en/books/handbook/preface/_index.adoc:252
msgid ""
"To provide a consistent and easy to read text, several conventions are "
"followed throughout the book."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/preface/_index.adoc:233
+#: documentation/content/en/books/handbook/preface/_index.adoc:254
#, no-wrap
msgid "Typographic Conventions"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:235
+#: documentation/content/en/books/handbook/preface/_index.adoc:256
#, no-wrap
msgid "_Italic_"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:237
+#: documentation/content/en/books/handbook/preface/_index.adoc:258
msgid ""
"An _italic_ font is used for filenames, URLs, emphasized text, and the first "
"usage of technical terms."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:238
+#: documentation/content/en/books/handbook/preface/_index.adoc:259
#, no-wrap
msgid "`Monospace`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:240
+#: documentation/content/en/books/handbook/preface/_index.adoc:261
msgid ""
"A `monospaced` font is used for error messages, commands, environment "
"variables, names of ports, hostnames, user names, group names, device names, "
"variables, and code fragments."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/preface/_index.adoc:241
+#: documentation/content/en/books/handbook/preface/_index.adoc:262
#, no-wrap
msgid "Bold"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:243
+#: documentation/content/en/books/handbook/preface/_index.adoc:264
msgid "A *bold* font is used for applications, commands, and keys."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/preface/_index.adoc:245
+#: documentation/content/en/books/handbook/preface/_index.adoc:266
#, no-wrap
msgid "User Input"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:249
+#: documentation/content/en/books/handbook/preface/_index.adoc:270
msgid ""
"Keys are shown in *bold* to stand out from other text. Key combinations "
"that are meant to be typed simultaneously are shown with `+` between the "
"keys, such as:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:251
+#: documentation/content/en/books/handbook/preface/_index.adoc:272
msgid "kbd:[Ctrl+Alt+Del]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:253
+#: documentation/content/en/books/handbook/preface/_index.adoc:274
msgid ""
"Meaning the user should type the kbd:[Ctrl], kbd:[Alt], and kbd:[Del] keys "
"at the same time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:255
+#: documentation/content/en/books/handbook/preface/_index.adoc:276
msgid ""
"Keys that are meant to be typed in sequence will be separated with commas, "
"for example:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:257
+#: documentation/content/en/books/handbook/preface/_index.adoc:278
msgid "kbd:[Ctrl+X], kbd:[Ctrl+S]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:259
+#: documentation/content/en/books/handbook/preface/_index.adoc:280
msgid ""
"Would mean that the user is expected to type the kbd:[Ctrl] and kbd:[X] keys "
"simultaneously and then to type the kbd:[Ctrl] and kbd:[S] keys "
"simultaneously."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/preface/_index.adoc:261
+#: documentation/content/en/books/handbook/preface/_index.adoc:282
#, no-wrap
msgid "Examples"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:265
+#: documentation/content/en/books/handbook/preface/_index.adoc:286
msgid ""
"Examples starting with [.filename]#C:\\># indicate a MS-DOS(R) command. "
"Unless otherwise noted, these commands may be executed from a \"Command "
"Prompt\" window in a modern Microsoft(R) Windows(R) environment."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/preface/_index.adoc:269
+#: documentation/content/en/books/handbook/preface/_index.adoc:290
#, no-wrap
msgid "C:\\> tools\\fdimage floppies\\kern.flp A:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:273
+#: documentation/content/en/books/handbook/preface/_index.adoc:294
msgid ""
"Examples starting with # indicate a command that must be invoked as the "
"superuser in FreeBSD. You can login as `root` to type the command, or login "
"as your normal account and use man:su[1] to gain superuser privileges."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/preface/_index.adoc:277
+#: documentation/content/en/books/handbook/preface/_index.adoc:298
#, no-wrap
msgid "# dd if=kern.flp of=/dev/fd0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:281
+#: documentation/content/en/books/handbook/preface/_index.adoc:302
msgid ""
"Examples starting with % indicate a command that should be invoked from a "
"normal user account. Unless otherwise noted, C-shell syntax is used for "
"setting environment variables and other shell commands."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/preface/_index.adoc:285
+#: documentation/content/en/books/handbook/preface/_index.adoc:306
#, no-wrap
msgid "% top\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/preface/_index.adoc:288
+#: documentation/content/en/books/handbook/preface/_index.adoc:309
#, no-wrap
msgid "Acknowledgments"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:292
+#: documentation/content/en/books/handbook/preface/_index.adoc:313
msgid ""
"The book you are holding represents the efforts of many hundreds of people "
"around the world. Whether they sent in fixes for typos, or submitted "
"complete chapters, all the contributions have been useful."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/preface/_index.adoc:299
+#: documentation/content/en/books/handbook/preface/_index.adoc:320
msgid ""
"Several companies have supported the development of this document by paying "
"authors to work on it full-time, paying for publication, etc. In "
"particular, BSDi (subsequently acquired by http://www.windriver.com[Wind "
"River Systems]) paid members of the FreeBSD Documentation Project to work on "
"improving this book full time leading up to the publication of the first "
"printed edition in March 2000 (ISBN 1-57176-241-8). Wind River Systems then "
"paid several additional authors to make a number of improvements to the "
"print-output infrastructure and to add additional chapters to the text. "
"This work culminated in the publication of the second printed edition in "
"November 2001 (ISBN 1-57176-303-1). In 2003-2004, http://www.freebsdmall."
"com[FreeBSD Mall, Inc], paid several contributors to improve the Handbook in "
"preparation for the third printed edition. The third printed edition has "
"been split into two volumes. Both volumes have been published as The "
"FreeBSD Handbook 3rd Edition Volume 1: User Guide (ISBN 1-57176-327-9) and "
"The FreeBSD Handbook 3rd Edition Volume 2: Administrators Guide (ISBN "
"1-57176-328-7)."
msgstr ""
diff --git a/documentation/content/en/books/handbook/printing/_index.po b/documentation/content/en/books/handbook/printing/_index.po
index 724fab8f64..6f55d5145d 100644
--- a/documentation/content/en/books/handbook/printing/_index.po
+++ b/documentation/content/en/books/handbook/printing/_index.po
@@ -1,1629 +1,1629 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/printing/_index.adoc:1
#, no-wrap
msgid "This chapter covers the printing system in FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/printing/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/printing/_index.adoc:1
#, no-wrap
-msgid "Chapter 9. Printing"
+msgid "Chapter 10. Printing"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/printing/_index.adoc:15
#, no-wrap
msgid "Printing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:55
msgid ""
"Putting information on paper is a vital function, despite many attempts to "
"eliminate it. Printing has two basic components. The data must be "
"delivered to the printer, and must be in a form that the printer can "
"understand."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:57
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:62
msgid ""
"Basic printing can be set up quickly. The printer must be capable of "
"printing plain `ASCII` text. For printing to other types of files, see "
"<<printing-lpd-filters>>."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:66
msgid "Create a directory to store files while they are being printed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:72
#: documentation/content/en/books/handbook/printing/_index.adoc:342
#, no-wrap
msgid ""
"# mkdir -p /var/spool/lpd/lp\n"
"# chown daemon:daemon /var/spool/lpd/lp\n"
"# chmod 770 /var/spool/lpd/lp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:75
msgid "As `root`, create [.filename]#/etc/printcap# with these contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:84
#, no-wrap
msgid ""
"lp:\\\n"
"lp=/dev/unlpt0:\\ <.>\n"
"sh:\\\n"
"mx#0:\\\n"
"sd=/var/spool/lpd/lp:\\\n"
"lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:87
msgid "This line is for a printer connected to a `USB` port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:89
msgid "For a printer connected to a parallel or \"printer\" port, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:93
#, no-wrap
msgid ":lp=/dev/lpt0:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:96
msgid "For a printer connected directly to a network, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:100
#, no-wrap
msgid ":lp=:rm=network-printer-name:rp=raw:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:103
msgid ""
"Replace _network-printer-name_ with the `DNS` host name of the network "
"printer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:105
msgid "Enable LPD by editing [.filename]#/etc/rc.conf#, adding this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:109
#: documentation/content/en/books/handbook/printing/_index.adoc:384
#, no-wrap
msgid "lpd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:112
#: documentation/content/en/books/handbook/printing/_index.adoc:387
msgid "Start the service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:117
#, no-wrap
msgid ""
"# service lpd start\n"
"Starting lpd.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:120
msgid "Print a test:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:124
#, no-wrap
msgid "# printf \"1. This printer can print.\\n2. This is the second line.\\n\" | lpr\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/printing/_index.adoc:129
msgid ""
"If both lines do not start at the left border, but \"stairstep\" instead, "
"see <<printing-lpd-filters-stairstep>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:133
msgid ""
"Text files can now be printed with `lpr`. Give the filename on the command "
"line, or pipe output directly into `lpr`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:138
#, no-wrap
msgid ""
"% lpr textfile.txt\n"
"% ls -lh | lpr\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:142
#, no-wrap
msgid "Printer Connections"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:149
msgid ""
"Printers are connected to computer systems in a variety of ways. Small "
"desktop printers are usually connected directly to a computer's `USB` port. "
"Older printers are connected to a parallel or \"printer\" port. Some "
"printers are directly connected to a network, making it easy for multiple "
"computers to share them. A few printers use a rare serial port connection."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:151
msgid "FreeBSD can communicate with all of these types of printers."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:153
#, no-wrap
msgid "`USB`"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:155
msgid ""
"`USB` printers can be connected to any available `USB` port on the computer."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:161
msgid ""
"When FreeBSD detects a `USB` printer, two device entries are created: [."
"filename]#/dev/ulpt0# and [.filename]#/dev/unlpt0#. Data sent to either "
"device will be relayed to the printer. After each print job, [."
"filename]#ulpt0# resets the `USB` port. Resetting the port can cause "
"problems with some printers, so the [.filename]#unlpt0# device is usually "
"used instead. [.filename]#unlpt0# does not reset the USB port at all."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:163
#, no-wrap
msgid "Parallel (`IEEE`-1284)"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:166
msgid ""
"The parallel port device is [.filename]#/dev/lpt0#. This device appears "
"whether a printer is attached or not, it is not autodetected."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:171
msgid ""
"Vendors have largely moved away from these \"legacy\" ports, and many "
"computers no longer have them. Adapters can be used to connect a parallel "
"printer to a `USB` port. With such an adapter, the printer can be treated "
"as if it were actually a `USB` printer. Devices called _print servers_ can "
"also be used to connect parallel printers directly to a network."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:173
#, no-wrap
msgid "Serial (RS-232)"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:176
msgid ""
"Serial ports are another legacy port, rarely used for printers except in "
"certain niche applications. Cables, connectors, and required wiring vary "
"widely."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:179
msgid ""
"For serial ports built into a motherboard, the serial device name is [."
"filename]#/dev/cuau0# or [.filename]#/dev/cuau1#. Serial `USB` adapters can "
"also be used, and these will appear as [.filename]#/dev/cuaU0#."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:183
msgid ""
"Several communication parameters must be known to communicate with a serial "
"printer. The most important are _baud rate_ or `BPS` (Bits Per Second) and "
"_parity_. Values vary, but typical serial printers use a baud rate of 9600 "
"and no parity."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:185
#, no-wrap
msgid "Network"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:187
msgid "Network printers are connected directly to the local computer network."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:191
msgid ""
"The `DNS` hostname of the printer must be known. If the printer is assigned "
"a dynamic address by `DHCP`, `DNS` should be dynamically updated so that the "
"host name always has the correct `IP` address. Network printers are often "
"given static `IP` addresses to avoid this problem."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:196
msgid ""
"Most network printers understand print jobs sent with the LPD protocol. A "
"print queue name can also be specified. Some printers process data "
"differently depending on which queue is used. For example, a `raw` queue "
"prints the data unchanged, while the `text` queue adds carriage returns to "
"plain text."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:198
msgid "Many network printers can also print data sent directly to port 9100."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:200
#: documentation/content/en/books/handbook/printing/_index.adoc:286
#, no-wrap
msgid "Summary"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:208
msgid ""
"Wired network connections are usually the easiest to set up and give the "
"fastest printing. For direct connection to the computer, `USB` is preferred "
"for speed and simplicity. Parallel connections work but have limitations on "
"cable length and speed. Serial connections are more difficult to "
"configure. Cable wiring differs between models, and communication "
"parameters like baud rate and parity bits must add to the complexity. "
"Fortunately, serial printers are rare."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:210
#, no-wrap
msgid "Common Page Description Languages"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:214
msgid ""
"Data sent to a printer must be in a language that the printer can "
"understand. These languages are called Page Description Languages, or PDLs."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:216
#, no-wrap
msgid "`ASCII`"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:223
msgid ""
"Plain `ASCII` text is the simplest way to send data to a printer. "
"Characters correspond one to one with what will be printed: an `A` in the "
"data prints an `A` on the page. Very little formatting is available. There "
"is no way to select a font or proportional spacing. The forced simplicity "
"of plain `ASCII` means that text can be printed straight from the computer "
"with little or no encoding or translation. The printed output corresponds "
"directly with what was sent."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:226
msgid ""
"Some inexpensive printers cannot print plain `ASCII` text. This makes them "
"more difficult to set up, but it is usually still possible."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:228
#, no-wrap
msgid "PostScript(R)"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:235
msgid ""
"PostScript(R) is almost the opposite of `ASCII`. Rather than simple text, a "
"PostScript(R) program is a set of instructions that draw the final "
"document. Different fonts and graphics can be used. However, this power "
"comes at a price. The program that draws the page must be written. Usually "
"this program is generated by application software, so the process is "
"invisible to the user."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:237
msgid ""
"Inexpensive printers sometimes leave out PostScript(R) compatibility as a "
"cost-saving measure."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:239
#, no-wrap
msgid "`PCL` (Printer Command Language)"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:244
msgid ""
"`PCL` is an extension of `ASCII`, adding escape sequences for formatting, "
"font selection, and printing graphics. Many printers provide `PCL5` "
"support. Some support the newer `PCL6` or `PCLXL`. These later versions "
"are supersets of `PCL5` and can provide faster printing."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/printing/_index.adoc:246
#, no-wrap
msgid "Host-Based"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:251
msgid ""
"Manufacturers can reduce the cost of a printer by giving it a simple "
"processor and very little memory. These printers are not capable of "
"printing plain text. Instead, bitmaps of text and graphics are drawn by a "
"driver on the host computer and then sent to the printer. These are called "
"_host-based_ printers."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:253
msgid ""
"Communication between the driver and a host-based printer is often through "
"proprietary or undocumented protocols, making them functional only on the "
"most common operating systems."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:255
#, no-wrap
msgid "Converting PostScript(R) to Other PDLs"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/handbook/printing/_index.adoc:259
msgid ""
"Many applications from the Ports Collection and FreeBSD utilities produce "
"PostScript(R) output. This table shows the utilities available to convert "
"that into other common PDLs:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/printing/_index.adoc:261
#, no-wrap
msgid "Output PDLs"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:265
#, no-wrap
msgid "Output PDL"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:266
#, no-wrap
msgid "Generated By"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:268
#, no-wrap
msgid "Notes"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:269
#, no-wrap
msgid "`PCL` or `PCL5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:270
#: documentation/content/en/books/handbook/printing/_index.adoc:274
#: documentation/content/en/books/handbook/printing/_index.adoc:278
#, no-wrap
msgid "package:print/ghostscript9-base[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:272
#, no-wrap
msgid "`-sDEVICE=ljet4` for monochrome, `-sDEVICE=cljet5` for color"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:273
#, no-wrap
msgid "`PCLXL` or `PCL6`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:276
#, no-wrap
msgid "`-sDEVICE=pxlmono` for monochrome, `-sDEVICE=pxlcolor` for color"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:277
#, no-wrap
msgid "`ESC/P2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:280
#, no-wrap
msgid "`-sDEVICE=uniprint`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:281
#, no-wrap
msgid "`XQX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/printing/_index.adoc:282
#, no-wrap
msgid "package:print/foo2zjs[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:292
msgid ""
"For the easiest printing, choose a printer that supports PostScript(R). "
"Printers that support `PCL` are the next preferred. With package:print/"
"ghostscript9-base[], these printers can be used as if they understood "
"PostScript(R) natively. Printers that support PostScript(R) or `PCL` "
"directly almost always support direct printing of plain `ASCII` text files "
"also."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:297
msgid ""
"Line-based printers like typical inkjets usually do not support "
"PostScript(R) or `PCL`. They often can print plain `ASCII` text files. "
"package:print/ghostscript9-base[] supports the PDLs used by some of these "
"printers. However, printing an entire graphic-based page on these printers "
"is often very slow due to the large amount of data to be transferred and "
"printed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:301
msgid ""
"Host-based printers are often more difficult to set up. Some cannot be used "
"at all because of proprietary PDLs. Avoid these printers when possible."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:304
msgid ""
"Descriptions of many PDLs can be found at http://www.undocprint.org/formats/"
"page_description_languages[]. The particular `PDL` used by various models "
"of printers can be found at http://www.openprinting.org/printers[]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:306
#, no-wrap
msgid "Direct Printing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:310
msgid ""
"For occasional printing, files can be sent directly to a printer device "
"without any setup. For example, a file called [.filename]#sample.txt# can "
"be sent to a `USB` printer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:314
#, no-wrap
msgid "# cp sample.txt /dev/unlpt0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:317
msgid ""
"Direct printing to network printers depends on the abilities of the printer, "
"but most accept print jobs on port 9100, and man:nc[1] can be used with "
"them. To print the same file to a printer with the `DNS` hostname of "
"_netlaser_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:321
#, no-wrap
msgid "# nc netlaser 9100 < sample.txt\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:324
#, no-wrap
msgid "LPD (Line Printer Daemon)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:328
msgid ""
"Printing a file in the background is called _spooling_. A spooler allows "
"the user to continue with other programs on the computer without waiting for "
"the printer to slowly complete the print job."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:331
msgid ""
"FreeBSD includes a spooler called man:lpd[8]. Print jobs are submitted with "
"man:lpr[1]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:333
#, no-wrap
msgid "Initial Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:336
msgid ""
"A directory for storing print jobs is created, ownership is set, and the "
"permissions are set to prevent other users from viewing the contents of "
"those files:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:347
msgid ""
"Printers are defined in [.filename]#/etc/printcap#. An entry for each "
"printer includes details like a name, the port where it is attached, and "
"various other settings. Create [.filename]#/etc/printcap# with these "
"contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:356
#, no-wrap
msgid ""
"lp:\\\t\t\t\t<.>\n"
"\t:lp=/dev/unlpt0:\\\t<.>\n"
"\t:sh:\\\t\t\t<.>\n"
"\t:mx#0:\\\t\t\t<.>\n"
"\t:sd=/var/spool/lpd/lp:\\\t<.>\n"
"\t:lf=/var/log/lpd-errs:\t<.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:359
msgid ""
"The name of this printer. man:lpr[1] sends print jobs to the `lp` printer "
"unless another printer is specified with `-P`, so the default printer should "
"be named `lp`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:361
msgid ""
"The device where the printer is connected. Replace this line with the "
"appropriate one for the connection type shown here."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:363
msgid "Suppress the printing of a header page at the start of a print job."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:365
msgid "Do not limit the maximum size of a print job."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:367
msgid ""
"The path to the spooling directory for this printer. Each printer uses its "
"own spooling directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:369
msgid "The log file where errors on this printer will be reported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:371
msgid ""
"After creating [.filename]#/etc/printcap#, use man:chkprintcap[8] to test it "
"for errors:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:375
#, no-wrap
msgid "# chkprintcap\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:378
msgid "Fix any reported problems before continuing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:380
msgid "Enable man:lpd[8] in [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:391
#, no-wrap
msgid "# service lpd start\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:394
#, no-wrap
msgid "Printing with man:lpr[1]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:399
msgid ""
"Documents are sent to the printer with `lpr`. A file to be printed can be "
"named on the command line or piped into `lpr`. These two commands are "
"equivalent, sending the contents of [.filename]#doc.txt# to the default "
"printer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:404
#, no-wrap
msgid ""
"% lpr doc.txt\n"
"% cat doc.txt | lpr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:408
msgid ""
"Printers can be selected with `-P`. To print to a printer called _laser_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:412
#, no-wrap
msgid "% lpr -Plaser doc.txt\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:415
#, no-wrap
msgid "Filters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:419
msgid ""
"The examples shown so far have sent the contents of a text file directly to "
"the printer. As long as the printer understands the content of those files, "
"output will be printed correctly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:421
msgid ""
"Some printers are not capable of printing plain text, and the input file "
"might not even be plain text."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:425
msgid ""
"_Filters_ allow files to be translated or processed. The typical use is to "
"translate one type of input, like plain text, into a form that the printer "
"can understand, like PostScript(R) or `PCL`. Filters can also be used to "
"provide additional features, like adding page numbers or highlighting source "
"code to make it easier to read."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:429
msgid ""
"The filters discussed here are _input filters_ or _text filters_. These "
"filters convert the incoming file into different forms. Use man:su[1] to "
"become `root` before creating the files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:432
msgid ""
"Filters are specified in [.filename]#/etc/printcap# with the `if=` "
"identifier. To use [.filename]#/usr/local/libexec/lf2crlf# as a filter, "
"modify [.filename]#/etc/printcap# like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:442
#, no-wrap
msgid ""
"lp:\\\n"
"\t:lp=/dev/unlpt0:\\\n"
"\t:sh:\\\n"
"\t:mx#0:\\\n"
"\t:sd=/var/spool/lpd/lp:\\\n"
"\t:if=/usr/local/libexec/lf2crlf:\\ <.>\n"
"\t:lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:445
msgid "`if=` identifies the _input filter_ that will be used on incoming text."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/printing/_index.adoc:450
msgid ""
"The backslash _line continuation_ characters at the end of the lines in [."
"filename]#printcap# entries reveal that an entry for a printer is really "
"just one long line with entries delimited by colon characters. An earlier "
"example can be rewritten as a single less-readable line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:454
#, no-wrap
msgid "lp:lp=/dev/unlpt0:sh:mx#0:sd=/var/spool/lpd/lp:if=/usr/local/libexec/lf2crlf:lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:459
#, no-wrap
msgid "Preventing Stairstepping on Plain Text Printers"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/printing/_index.adoc:463
msgid ""
"Typical FreeBSD text files contain only a single line feed character at the "
"end of each line. These lines will \"stairstep\" on a standard printer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:469
#, no-wrap
msgid ""
"A printed file looks\n"
" like the steps of a staircase\n"
" scattered by the wind\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:474
msgid ""
"A filter can convert the newline characters into carriage returns and "
"newlines. The carriage returns make the printer return to the left after "
"each line. Create [.filename]#/usr/local/libexec/lf2crlf# with these "
"contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:480
#, no-wrap
msgid ""
"#!/bin/sh\n"
"CR=$'\\r'\n"
"/usr/bin/sed -e \"s/$/${CR}/g\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:483
#: documentation/content/en/books/handbook/printing/_index.adoc:515
#: documentation/content/en/books/handbook/printing/_index.adoc:548
#: documentation/content/en/books/handbook/printing/_index.adoc:605
msgid "Set the permissions and make it executable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:487
#, no-wrap
msgid "# chmod 555 /usr/local/libexec/lf2crlf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:490
#: documentation/content/en/books/handbook/printing/_index.adoc:522
msgid "Modify [.filename]#/etc/printcap# to use the new filter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:494
#, no-wrap
msgid ":if=/usr/local/libexec/lf2crlf:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:498
msgid ""
"Test the filter by printing the same plain text file. The carriage returns "
"will cause each line to start at the left side of the page."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:500
#, no-wrap
msgid "Fancy Plain Text on PostScript(R) Printers with package:print/enscript[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:505
msgid ""
"GNUEnscript converts plain text files into nicely-formatted PostScript(R) "
"for printing on PostScript(R) printers. It adds page numbers, wraps long "
"lines, and provides numerous other features to make printed text files "
"easier to read. Depending on the local paper size, install either package:"
"print/enscript-letter[] or package:print/enscript-a4[] from the Ports "
"Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:507
msgid "Create [.filename]#/usr/local/libexec/enscript# with these contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:512
#, no-wrap
msgid ""
"#!/bin/sh\n"
"/usr/local/bin/enscript -o -\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:519
#, no-wrap
msgid "# chmod 555 /usr/local/libexec/enscript\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:526
#, no-wrap
msgid ":if=/usr/local/libexec/enscript:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:529
msgid "Test the filter by printing a plain text file."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:531
#, no-wrap
msgid "Printing PostScript(R) to `PCL` Printers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:536
msgid ""
"Many programs produce PostScript(R) documents. However, inexpensive "
"printers often only understand plain text or `PCL`. This filter converts "
"PostScript(R) files to `PCL` before sending them to the printer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:538
msgid ""
"Install the Ghostscript PostScript(R) interpreter, package:print/"
"ghostscript9-base[], from the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:540
msgid "Create [.filename]#/usr/local/libexec/ps2pcl# with these contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:545
#, no-wrap
msgid ""
"#!/bin/sh\n"
"/usr/local/bin/gs -dSAFER -dNOPAUSE -dBATCH -q -sDEVICE=ljet4 -sOutputFile=- -\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:552
#, no-wrap
msgid "# chmod 555 /usr/local/libexec/ps2pcl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:555
msgid ""
"PostScript(R) input sent to this script will be rendered and converted to "
"`PCL` before being sent on to the printer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:557
#: documentation/content/en/books/handbook/printing/_index.adoc:612
msgid "Modify [.filename]#/etc/printcap# to use this new input filter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:561
#, no-wrap
msgid ":if=/usr/local/libexec/ps2pcl:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:564
msgid "Test the filter by sending a small PostScript(R) program to it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:569
#, no-wrap
msgid ""
"% printf \"%%\\!PS \\n /Helvetica findfont 18 scalefont setfont \\\n"
"72 432 moveto (PostScript printing successful.) show showpage \\004\" | lpr\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:572
#, no-wrap
msgid "Smart Filters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:580
msgid ""
"A filter that detects the type of input and automatically converts it to the "
"correct format for the printer can be very convenient. The first two "
"characters of a PostScript(R) file are usually `%!`. A filter can detect "
"those two characters. PostScript(R) files can be sent on to a PostScript(R) "
"printer unchanged. Text files can be converted to PostScript(R) with "
"Enscript as shown earlier. Create [.filename]#/usr/local/libexec/psif# with "
"these contents:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:589
#, no-wrap
msgid ""
"#!/bin/sh\n"
"#\n"
"# psif - Print PostScript or plain text on a PostScript printer\n"
"#\n"
"IFS=\"\" read -r first_line\n"
"first_two_chars=`expr \"$first_line\" : '\\(..\\)'`\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:602
#, no-wrap
msgid ""
"case \"$first_two_chars\" in\n"
"%!)\n"
" # %! : PostScript job, print it.\n"
" echo \"$first_line\" && cat && exit 0\n"
" exit 2\n"
" ;;\n"
"*)\n"
" # otherwise, format with enscript\n"
" ( echo \"$first_line\"; cat ) | /usr/local/bin/enscript -o - && exit 0\n"
" exit 2\n"
" ;;\n"
"esac\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:609
#, no-wrap
msgid "# chmod 555 /usr/local/libexec/psif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:616
#, no-wrap
msgid ":if=/usr/local/libexec/psif:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:619
msgid "Test the filter by printing PostScript(R) and plain text files."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:621
#, no-wrap
msgid "Other Smart Filters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:626
msgid ""
"Writing a filter that detects many different types of input and formats them "
"correctly is challenging. package:print/apsfilter[] from the Ports "
"Collection is a smart \"magic\" filter that detects dozens of file types and "
"automatically converts them to the `PDL` understood by the printer. See "
"http://www.apsfilter.org[] for more details."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:628
#, no-wrap
msgid "Multiple Queues"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:633
msgid ""
"The entries in [.filename]#/etc/printcap# are really definitions of "
"_queues_. There can be more than one queue for a single printer. When "
"combined with filters, multiple queues provide users more control over how "
"their jobs are printed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:637
msgid ""
"As an example, consider a networked PostScript(R) laser printer in an "
"office. Most users want to print plain text, but a few advanced users want "
"to be able to print PostScript(R) files directly. Two entries can be "
"created for the same printer in [.filename]#/etc/printcap#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:647
#, no-wrap
msgid ""
"textprinter:\\\n"
"\t:lp=9100@officelaser:\\\n"
"\t:sh:\\\n"
"\t:mx#0:\\\n"
"\t:sd=/var/spool/lpd/textprinter:\\\n"
"\t:if=/usr/local/libexec/enscript:\\\n"
"\t:lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:654
#, no-wrap
msgid ""
"psprinter:\\\n"
"\t:lp=9100@officelaser:\\\n"
"\t:sh:\\\n"
"\t:mx#0:\\\n"
"\t:sd=/var/spool/lpd/psprinter:\\\n"
"\t:lf=/var/log/lpd-errs:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:658
msgid ""
"Documents sent to `textprinter` will be formatted by the [.filename]#/usr/"
"local/libexec/enscript# filter shown in an earlier example. Advanced users "
"can print PostScript(R) files on `psprinter`, where no filtering is done."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:661
msgid ""
"This multiple queue technique can be used to provide direct access to all "
"kinds of printer features. A printer with a duplexer could use two queues, "
"one for ordinary single-sided printing, and one with a filter that sends the "
"command sequence to enable double-sided printing and then sends the incoming "
"file."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:663
#, no-wrap
msgid "Monitoring and Controlling Printing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:666
msgid ""
"Several utilities are available to monitor print jobs and check and control "
"printer operation."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:668
#, no-wrap
msgid "man:lpq[1]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:672
msgid ""
"man:lpq[1] shows the status of a user's print jobs. Print jobs from other "
"users are not shown."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:674
msgid "Show the current user's pending jobs on a single printer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:680
#, no-wrap
msgid ""
"% lpq -Plp\n"
"Rank Owner Job Files Total Size\n"
"1st jsmith 0 (standard input) 12792 bytes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:683
msgid "Show the current user's pending jobs on all printers:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:690
#, no-wrap
msgid ""
"% lpq -a\n"
"lp:\n"
"Rank Owner Job Files Total Size\n"
"1st jsmith 1 (standard input) 27320 bytes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:694
#, no-wrap
msgid ""
"laser:\n"
"Rank Owner Job Files Total Size\n"
"1st jsmith 287 (standard input) 22443 bytes\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:697
#, no-wrap
msgid "man:lprm[1]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:702
msgid ""
"man:lprm[1] is used to remove print jobs. Normal users are only allowed to "
"remove their own jobs. `root` can remove any or all jobs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:704
msgid "Remove all pending jobs from a printer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:714
#, no-wrap
msgid ""
"# lprm -Plp -\n"
"dfA002smithy dequeued\n"
"cfA002smithy dequeued\n"
"dfA003smithy dequeued\n"
"cfA003smithy dequeued\n"
"dfA004smithy dequeued\n"
"cfA004smithy dequeued\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:718
msgid ""
"Remove a single job from a printer. man:lpq[1] is used to find the job "
"number."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:724
#, no-wrap
msgid ""
"% lpq\n"
"Rank Owner Job Files Total Size\n"
"1st jsmith 5 (standard input) 12188 bytes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:728
#, no-wrap
msgid ""
"% lprm -Plp 5\n"
"dfA005smithy dequeued\n"
"cfA005smithy dequeued\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:731
#, no-wrap
msgid "man:lpc[8]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:738
msgid ""
"man:lpc[8] is used to check and modify printer status. `lpc` is followed by "
"a command and an optional printer name. `all` can be used instead of a "
"specific printer name, and the command will be applied to all printers. "
"Normal users can view status with man:lpc[8]. Only `root` can use commands "
"which modify printer status."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:740
msgid "Show the status of all printers:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:754
#, no-wrap
msgid ""
"% lpc status all\n"
"lp:\n"
"\tqueuing is enabled\n"
"\tprinting is enabled\n"
"\t1 entry in spool area\n"
"\tprinter idle\n"
"laser:\n"
"\tqueuing is enabled\n"
"\tprinting is enabled\n"
"\t1 entry in spool area\n"
"\twaiting for laser to come up\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:757
msgid ""
"Prevent a printer from accepting new jobs, then begin accepting new jobs "
"again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:766
#, no-wrap
msgid ""
"# lpc disable lp\n"
"lp:\n"
"\tqueuing disabled\n"
"# lpc enable lp\n"
"lp:\n"
"\tqueuing enabled\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:770
msgid ""
"Stop printing, but continue to accept new jobs. Then begin printing again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:780
#, no-wrap
msgid ""
"# lpc stop lp\n"
"lp:\n"
"\tprinting disabled\n"
"# lpc start lp\n"
"lp:\n"
"\tprinting enabled\n"
"\tdaemon started\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:783
msgid "Restart a printer after some error condition:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:791
#, no-wrap
msgid ""
"# lpc restart lp\n"
"lp:\n"
"\tno daemon to abort\n"
"\tprinting enabled\n"
"\tdaemon restarted\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:794
msgid ""
"Turn the print queue off and disable printing, with a message to explain the "
"problem to users:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:801
#, no-wrap
msgid ""
"# lpc down lp Repair parts will arrive on Monday\n"
"lp:\n"
"\tprinter and queuing disabled\n"
"\tstatus message is now: Repair parts will arrive on Monday\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:804
msgid "Re-enable a printer that is down:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:811
#, no-wrap
msgid ""
"# lpc up lp\n"
"lp:\n"
"\tprinting enabled\n"
"\tdaemon started\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:814
msgid "See man:lpc[8] for more commands and options."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:816
#, no-wrap
msgid "Shared Printers"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:820
msgid ""
"Printers are often shared by multiple users in businesses and schools. "
"Additional features are provided to make sharing printers more convenient."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:822
#, no-wrap
msgid "Aliases"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:827
msgid ""
"The printer name is set in the first line of the entry in [.filename]#/etc/"
"printcap#. Additional names, or _aliases_, can be added after that name. "
"Aliases are separated from the name and each other by vertical bars:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:831
#, no-wrap
msgid "lp|repairsprinter|salesprinter:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:835
msgid ""
"Aliases can be used in place of the printer name. For example, users in the "
"Sales department print to their printer with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:839
#, no-wrap
msgid "% lpr -Psalesprinter sales-report.txt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:842
msgid "Users in the Repairs department print to _their_ printer with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/printing/_index.adoc:846
#, no-wrap
msgid "% lpr -Prepairsprinter repairs-report.txt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:851
msgid ""
"All of the documents print on that single printer. When the Sales "
"department grows enough to need their own printer, the alias can be removed "
"from the shared printer entry and used as the name of a new printer. Users "
"in both departments continue to use the same commands, but the Sales "
"documents are sent to the new printer."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/printing/_index.adoc:853
#, no-wrap
msgid "Header Pages"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:859
msgid ""
"It can be difficult for users to locate their documents in the stack of "
"pages produced by a busy shared printer. _Header pages_ were created to "
"solve this problem. A header page with the user name and document name is "
"printed before each print job. These pages are also sometimes called "
"_banner_ or _separator_ pages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:861
msgid ""
"Enabling header pages differs depending on whether the printer is connected "
"directly to the computer with a `USB`, parallel, or serial cable, or is "
"connected remotely over a network."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:866
msgid ""
"Header pages on directly-connected printers are enabled by removing the `:sh:"
"\\` (Suppress Header) line from the entry in [.filename]#/etc/printcap#. "
"These header pages only use line feed characters for new lines. Some "
"printers will need the [.filename]#/usr/share/examples/printing/hpif# filter "
"to prevent stairstepped text. The filter configures `PCL` printers to print "
"both carriage returns and line feeds when a line feed is received."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:870
msgid ""
"Header pages for network printers must be configured on the printer itself. "
"Header page entries in [.filename]#/etc/printcap# are ignored. Settings are "
"usually available from the printer front panel or a configuration web page "
"accessible with a web browser."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:872
#, no-wrap
msgid "References"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:875
msgid "Example files: [.filename]#/usr/share/examples/printing/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:877
msgid ""
"The _4.3BSD Line Printer Spooler Manual_, [.filename]#/usr/share/doc/smm/07."
"lpd/paper.ascii.gz#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:879
msgid ""
"Manual pages: man:printcap[5], man:lpd[8], man:lpr[1], man:lpc[8], man:"
"lprm[1], man:lpq[1]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/printing/_index.adoc:881
#, no-wrap
msgid "Other Printing Systems"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:885
msgid ""
"Several other printing systems are available in addition to the built-in man:"
"lpd[8]. These systems offer support for other protocols or additional "
"features."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:887
#, no-wrap
msgid "CUPS (Common UNIX(R) Printing System)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:891
msgid ""
"CUPS is a popular printing system available on many operating systems. "
"Using CUPS on FreeBSD is documented in a separate article: extref:{cups}"
"[CUPS]"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:893
#, no-wrap
msgid "HPLIP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:900
msgid ""
"Hewlett Packard provides a printing system that supports many of their "
"inkjet and laser printers. The port is package:print/hplip[]. The main web "
"page is at https://developers.hp.com/hp-linux-imaging-and-printing[]. The "
"port handles all the installation details on FreeBSD. Configuration "
"information is shown at https://developers.hp.com/hp-linux-imaging-and-"
"printing/install[]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/printing/_index.adoc:902
#, no-wrap
msgid "LPRng"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/printing/_index.adoc:906
msgid ""
"LPRng was developed as an enhanced alternative to man:lpd[8]. The port is "
"package:sysutils/LPRng[]. For details and documentation, see http://www."
"lprng.com/[]."
msgstr ""
diff --git a/documentation/content/en/books/handbook/security/_index.po b/documentation/content/en/books/handbook/security/_index.po
index d4b083f464..22d9e972b2 100644
--- a/documentation/content/en/books/handbook/security/_index.po
+++ b/documentation/content/en/books/handbook/security/_index.po
@@ -1,5359 +1,5375 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/security/_index.adoc:1
#, no-wrap
msgid "Hundreds of standard practices have been authored about how to secure systems and networks, and as a user of FreeBSD, understanding how to protect against attacks and intruders is a must"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/security/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/security/_index.adoc:1
#, no-wrap
-msgid "Chapter 14. Security"
+msgid "Chapter 15. Security"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/security/_index.adoc:15
#, no-wrap
msgid "Security"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/security/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:57
msgid ""
"Security, whether physical or virtual, is a topic so broad that an entire "
"industry has evolved around it. Hundreds of standard practices have been "
"authored about how to secure systems and networks, and as a user of FreeBSD, "
"understanding how to protect against attacks and intruders is a must."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:60
msgid ""
"In this chapter, several fundamentals and techniques will be discussed. The "
"FreeBSD system comes with multiple layers of security, and many more third "
"party utilities may be added to enhance security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:62
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:64
msgid "Basic FreeBSD system security concepts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:65
msgid "The various crypt mechanisms available in FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:66
msgid "How to set up one-time password authentication."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:67
msgid "How to configure TCP Wrapper for use with man:inetd[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:68
msgid "How to set up Kerberos on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:69
msgid "How to configure IPsec and create a VPN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:70
msgid "How to configure and use OpenSSH on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:71
msgid "How to use file system ACLs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:72
msgid ""
"How to use pkg to audit third party software packages installed from the "
"Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:73
msgid "How to utilize FreeBSD security advisories."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:74
msgid "What Process Accounting is and how to enable it on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:75
msgid ""
"How to control user resources using login classes or the resource limits "
"database."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:77
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:79
msgid "Understand basic FreeBSD and Internet concepts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:82
msgid ""
"Additional security topics are covered elsewhere in this Handbook. For "
"example, Mandatory Access Control is discussed in crossref:mac[mac,Mandatory "
"Access Control] and Internet firewalls are discussed in crossref:"
"firewalls[firewalls,Firewalls]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/security/_index.adoc:84
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:89
msgid ""
"Security is everyone's responsibility. A weak entry point in any system "
"could allow intruders to gain access to critical information and cause havoc "
"on an entire network. One of the core principles of information security is "
"the CIA triad, which stands for the Confidentiality, Integrity, and "
"Availability of information systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:92
msgid ""
"The CIA triad is a bedrock concept of computer security as customers and "
"users expect their data to be protected. For example, a customer expects "
"that their credit card information is securely stored (confidentiality), "
"that their orders are not changed behind the scenes (integrity), and that "
"they have access to their order information at all times (availability)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:98
msgid ""
"To provide CIA, security professionals apply a defense in depth strategy. "
"The idea of defense in depth is to add several layers of security to prevent "
"one single layer failing and the entire security system collapsing. For "
"example, a system administrator cannot simply turn on a firewall and "
"consider the network or system secure. One must also audit accounts, check "
"the integrity of binaries, and ensure malicious tools are not installed. To "
"implement an effective security strategy, one must understand threats and "
"how to defend against them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:101
msgid ""
"What is a threat as it pertains to computer security? Threats are not "
"limited to remote attackers who attempt to access a system without "
"permission from a remote location. Threats also include employees, "
"malicious software, unauthorized network devices, natural disasters, "
"security vulnerabilities, and even competing corporations."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:105
msgid ""
"Systems and networks can be accessed without permission, sometimes by "
"accident, or by remote attackers, and in some cases, via corporate espionage "
"or former employees. As a user, it is important to prepare for and admit "
"when a mistake has led to a security breach and report possible issues to "
"the security team. As an administrator, it is important to know of the "
"threats and be prepared to mitigate them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:111
msgid ""
"When applying security to systems, it is recommended to start by securing "
"the basic accounts and system configuration, and then to secure the network "
"layer so that it adheres to the system policy and the organization's "
"security procedures. Many organizations already have a security policy that "
"covers the configuration of technology devices. The policy should include "
"the security configuration of workstations, desktops, mobile devices, "
"phones, production servers, and development servers. In many cases, "
"standard operating procedures (SOPs) already exist. When in doubt, ask the "
"security team."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:114
msgid ""
"The rest of this introduction describes how some of these basic security "
"configurations are performed on a FreeBSD system. The rest of this chapter "
"describes some specific tools which can be used when implementing a security "
"policy on a FreeBSD system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:116
#, no-wrap
msgid "Preventing Logins"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:121
msgid ""
"In securing a system, a good starting point is an audit of accounts. Ensure "
"that `root` has a strong password and that this password is not shared. "
"Disable any accounts that do not need login access."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:125
msgid ""
"To deny login access to accounts, two methods exist. The first is to lock "
"the account. This example locks the `toor` account:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:129
#, no-wrap
msgid "# pw lock toor\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:133
msgid ""
"The second method is to prevent login access by changing the shell to [."
"filename]#/usr/sbin/nologin#. Only the superuser can change the shell for "
"other users:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:137
#, no-wrap
msgid "# chsh -s /usr/sbin/nologin toor\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:140
msgid ""
"The [.filename]#/usr/sbin/nologin# shell prevents the system from assigning "
"a shell to the user when they attempt to login."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:142
#, no-wrap
msgid "Permitted Account Escalation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:151
msgid ""
"In some cases, system administration needs to be shared with other users. "
"FreeBSD has two methods to handle this. The first one, which is not "
"recommended, is a shared root password used by members of the `wheel` "
"group. With this method, a user types `su` and enters the password for "
"`wheel` whenever superuser access is needed. The user should then type "
"`exit` to leave privileged access after finishing the commands that required "
"administrative access. To add a user to this group, edit [.filename]#/etc/"
"group# and add the user to the end of the `wheel` entry. The user must be "
"separated by a comma character with no space."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:154
msgid ""
"The second, and recommended, method to permit privilege escalation is to "
"install the package:security/sudo[] package or port. This software provides "
"additional auditing, more fine-grained user control, and can be configured "
"to lock users into running only the specified privileged commands."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:157
msgid ""
"After installation, use `visudo` to edit [.filename]#/usr/local/etc/"
"sudoers#. This example creates a new `webadmin` group, adds the `trhodes` "
"account to that group, and configures that group access to restart package:"
"apache24[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:163
#, no-wrap
msgid ""
"# pw groupadd webadmin -M trhodes -g 6000\n"
"# visudo\n"
"%webadmin ALL=(ALL) /usr/sbin/service apache24 *\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:166
#, no-wrap
msgid "Password Hashes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:172
msgid ""
"Passwords are a necessary evil of technology. When they must be used, they "
"should be complex and a powerful hash mechanism should be used to encrypt "
"the version that is stored in the password database. FreeBSD supports the "
"DES, MD5, SHA256, SHA512, and Blowfish hash algorithms in its `crypt()` "
"library. The default of SHA512 should not be changed to a less secure "
"hashing algorithm, but can be changed to the more secure Blowfish algorithm."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/security/_index.adoc:177
msgid ""
"Blowfish is not part of AES and is not considered compliant with any Federal "
"Information Processing Standards (FIPS). Its use may not be permitted in "
"some environments."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:187
msgid ""
"To determine which hash algorithm is used to encrypt a user's password, the "
"superuser can view the hash for the user in the FreeBSD password database. "
"Each hash starts with a symbol which indicates the type of hash mechanism "
"used to encrypt the password. If DES is used, there is no beginning "
-"symbol. For MD5, the symbol is `$`. For SHA256 and SHA512, the symbol is `"
-"$6$`. For Blowfish, the symbol is `$2a$`. In this example, the password "
+"symbol. For MD5, the symbol is `$`. For SHA256 and SHA512, the symbol is "
+"`$6$`. For Blowfish, the symbol is `$2a$`. In this example, the password "
"for `dru` is hashed using the default SHA512 algorithm as the hash starts "
"with `$6$`. Note that the encrypted hash, not the password itself, is "
"stored in the password database:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:192
#, no-wrap
msgid ""
"# grep dru /etc/master.passwd\n"
"dru:$6$pzIjSvCAn.PBYQBA$PXpSeWPx3g5kscj3IMiM7tUEUSPmGexxta.8Lt9TGSi2lNQqYGKszsBPuGME0:1001:1001::0:0:dru:/usr/home/dru:/bin/csh\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:196
msgid ""
"The hash mechanism is set in the user's login class. For this example, the "
"user is in the `default` login class and the hash algorithm is set with this "
"line in [.filename]#/etc/login.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:200
#, no-wrap
msgid " :passwd_format=sha512:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:203
msgid ""
"To change the algorithm to Blowfish, modify that line to look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:207
#, no-wrap
msgid " :passwd_format=blf:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:212
msgid ""
"Then run `cap_mkdb /etc/login.conf` as described in <<users-limiting>>. "
"Note that this change will not affect any existing password hashes. This "
"means that all passwords should be re-hashed by asking users to run `passwd` "
"in order to change their password."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:219
msgid ""
"For remote logins, two-factor authentication should be used. An example of "
"two-factor authentication is \"something you have\", such as a key, and "
"\"something you know\", such as the passphrase for that key. Since OpenSSH "
"is part of the FreeBSD base system, all network logins should be over an "
"encrypted connection and use key-based authentication instead of passwords. "
"For more information, refer to <<openssh>>. Kerberos users may need to make "
"additional changes to implement OpenSSH in their network. These changes are "
"described in <<kerberos5>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:221
#, no-wrap
msgid "Password Policy Enforcement"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:225
msgid ""
"Enforcing a strong password policy for local accounts is a fundamental "
"aspect of system security. In FreeBSD, password length, password strength, "
"and password complexity can be implemented using built-in Pluggable "
"Authentication Modules (PAM)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:228
msgid ""
"This section demonstrates how to configure the minimum and maximum password "
"length and the enforcement of mixed characters using the [."
"filename]#pam_passwdqc.so# module. This module is enforced when a user "
"changes their password."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:231
msgid ""
"To configure this module, become the superuser and uncomment the line "
"containing `pam_passwdqc.so` in [.filename]#/etc/pam.d/passwd#. Then, edit "
"that line to match the password policy:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:235
#, no-wrap
msgid "password requisite pam_passwdqc.so min=disabled,disabled,disabled,12,10 similar=deny retry=3 enforce=users\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:245
msgid ""
"This example sets several requirements for new passwords. The `min` setting "
"controls the minimum password length. It has five values because this "
"module defines five different types of passwords based on their complexity. "
"Complexity is defined by the type of characters that must exist in a "
"password, such as letters, numbers, symbols, and case. The types of "
"passwords are described in man:pam_passwdqc[8]. In this example, the first "
"three types of passwords are disabled, meaning that passwords that meet "
"those complexity requirements will not be accepted, regardless of their "
"length. The `12` sets a minimum password policy of at least twelve "
"characters, if the password also contains characters with three types of "
"complexity. The `10` sets the password policy to also allow passwords of at "
"least ten characters, if the password contains characters with four types of "
"complexity."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:248
msgid ""
"The `similar` setting denies passwords that are similar to the user's "
"previous password. The `retry` setting provides a user with three "
"opportunities to enter a new password."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:250
msgid ""
"Once this file is saved, a user changing their password will see a message "
"similar to the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:256
#, no-wrap
msgid ""
"% passwd\n"
"Changing local password for trhodes\n"
"Old Password:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:267
#, no-wrap
msgid ""
"You can now choose the new password.\n"
"A valid password should be a mix of upper and lower case letters,\n"
"digits and other characters. You can use a 12 character long\n"
"password with characters from at least 3 of these 4 classes, or\n"
"a 10 character long password containing characters from all the\n"
"classes. Characters that form a common pattern are discarded by\n"
"the check.\n"
"Alternatively, if no one else can see your terminal now, you can\n"
"pick this as your password: \"trait-useful&knob\".\n"
"Enter new password:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:270
msgid ""
"If a password that does not match the policy is entered, it will be rejected "
"with a warning and the user will have an opportunity to try again, up to the "
"configured number of retries."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:274
msgid ""
"Most password policies require passwords to expire after so many days. To "
"set a password age time in FreeBSD, set `passwordtime` for the user's login "
"class in [.filename]#/etc/login.conf#. The `default` login class contains "
"an example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:278
#, no-wrap
msgid "# :passwordtime=90d:\\\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:281
msgid ""
"So, to set an expiry of 90 days for this login class, remove the comment "
-"symbol (`#`), save the edit, and run `cap_mkdb /etc/login.conf`."
+"symbol (`+#+`), save the edit, and run `cap_mkdb /etc/login.conf`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:283
msgid ""
"To set the expiration on individual users, pass an expiration date or the "
"number of days to expiry and a username to `pw`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:287
#, no-wrap
msgid "# pw usermod -p 30-apr-2015 -n trhodes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:291
msgid ""
"As seen here, an expiration date is set in the form of day, month, and "
"year. For more information, see man:pw[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:293
#, no-wrap
msgid "Detecting Rootkits"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:299
msgid ""
"A _rootkit_ is any unauthorized software that attempts to gain `root` access "
"to a system. Once installed, this malicious software will normally open up "
"another avenue of entry for an attacker. Realistically, once a system has "
"been compromised by a rootkit and an investigation has been performed, the "
"system should be reinstalled from scratch. There is tremendous risk that "
"even the most prudent security or systems engineer will miss something an "
"attacker left behind."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:303
msgid ""
"A rootkit does do one thing useful for administrators: once detected, it is "
"a sign that a compromise happened at some point. But, these types of "
"applications tend to be very well hidden. This section demonstrates a tool "
"that can be used to detect rootkits, package:security/rkhunter[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:306
msgid ""
"After installation of this package or port, the system may be checked using "
"the following command. It will produce a lot of information and will "
"require some manual pressing of kbd:[ENTER]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:310
#, no-wrap
msgid "# rkhunter -c\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:316
msgid ""
"After the process completes, a status message will be printed to the "
"screen. This message will include the amount of files checked, suspect "
"files, possible rootkits, and more. During the check, some generic security "
"warnings may be produced about hidden files, the OpenSSH protocol selection, "
"and known vulnerable versions of installed software. These can be handled "
"now or after a more detailed analysis has been performed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:321
msgid ""
"Every administrator should know what is running on the systems they are "
"responsible for. Third-party tools like rkhunter and package:sysutils/"
"lsof[], and native commands such as `netstat` and `ps`, can show a great "
"deal of information on the system. Take notes on what is normal, ask "
"questions when something seems out of place, and be paranoid. While "
"preventing a compromise is ideal, detecting a compromise is a must."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:323
#, no-wrap
msgid "Binary Verification"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:327
msgid ""
"Verification of system files and binaries is important because it provides "
"the system administration and security teams information about system "
"changes. A software application that monitors the system for changes is "
"called an Intrusion Detection System (IDS)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:331
msgid ""
"FreeBSD provides native support for a basic IDS system. While the nightly "
"security emails will notify an administrator of changes, the information is "
"stored locally and there is a chance that a malicious user could modify this "
"information in order to hide their changes to the system. As such, it is "
"recommended to create a separate set of binary signatures and store them on "
"a read-only, root-owned directory or, preferably, on a removable USB disk or "
"remote rsync server."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:337
msgid ""
"The built-in `mtree` utility can be used to generate a specification of the "
"contents of a directory. A seed, or a numeric constant, is used to generate "
"the specification and is required to check that the specification has not "
"changed. This makes it possible to determine if a file or binary has been "
"modified. Since the seed value is unknown by an attacker, faking or "
"checking the checksum values of files will be difficult to impossible. The "
"following example generates a set of SHA256 hashes, one for each system "
"binary in [.filename]#/bin#, and saves those values to a hidden file in "
"``root``'s home directory, [.filename]#/root/.bin_chksum_mtree#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:342
#, no-wrap
msgid ""
"# mtree -s 3483151339707503 -c -K cksum,sha256digest -p /bin > /root/.bin_chksum_mtree\n"
"# mtree: /bin checksum: 3427012225\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:346
msgid ""
"The _3483151339707503_ represents the seed. This value should be "
"remembered, but not shared."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:348
msgid ""
"Viewing [.filename]#/root/.bin_cksum_mtree# should yield output similar to "
"the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:355
#, no-wrap
msgid ""
"# user: root\n"
"# machine: dreadnaught\n"
"# tree: /bin\n"
"# date: Mon Feb 3 10:19:53 2014\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:371
#, no-wrap
msgid ""
"# .\n"
"/set type=file uid=0 gid=0 mode=0555 nlink=1 flags=none\n"
". type=dir mode=0755 nlink=2 size=1024 \\\n"
" time=1380277977.000000000\n"
" \\133 nlink=2 size=11704 time=1380277977.000000000 \\\n"
" cksum=484492447 \\\n"
" sha256digest=6207490fbdb5ed1904441fbfa941279055c3e24d3a4049aeb45094596400662a\n"
" cat size=12096 time=1380277975.000000000 cksum=3909216944 \\\n"
" sha256digest=65ea347b9418760b247ab10244f47a7ca2a569c9836d77f074e7a306900c1e69\n"
" chflags size=8168 time=1380277975.000000000 cksum=3949425175 \\\n"
" sha256digest=c99eb6fc1c92cac335c08be004a0a5b4c24a0c0ef3712017b12c89a978b2dac3\n"
" chio size=18520 time=1380277975.000000000 cksum=2208263309 \\\n"
" sha256digest=ddf7c8cb92a58750a675328345560d8cc7fe14fb3ccd3690c34954cbe69fc964\n"
" chmod size=8640 time=1380277975.000000000 cksum=2214429708 \\\n"
" sha256digest=a435972263bf814ad8df082c0752aa2a7bdd8b74ff01431ccbd52ed1e490bbe7\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:375
msgid ""
"The machine's hostname, the date and time the specification was created, and "
"the name of the user who created the specification are included in this "
"report. There is a checksum, size, time, and SHA256 digest for each binary "
"in the directory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:378
msgid ""
"To verify that the binary signatures have not changed, compare the current "
"contents of the directory to the previously generated specification, and "
"save the results to a file. This command requires the seed that was used to "
"generate the original specification:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:383
#, no-wrap
msgid ""
"# mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output\n"
"# mtree: /bin checksum: 3427012225\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:388
msgid ""
"This should produce the same checksum for [.filename]#/bin# that was "
"produced when the specification was created. If no changes have occurred to "
"the binaries in this directory, the [.filename]#/root/.bin_chksum_output# "
"output file will be empty. To simulate a change, change the date on [."
"filename]#/bin/cat# using `touch` and run the verification command again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/security/_index.adoc:396
#, no-wrap
msgid ""
"# touch /bin/cat\n"
"# mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output\n"
"# more /root/.bin_chksum_output\n"
"cat changed\n"
"\tmodification time expected Fri Sep 27 06:32:55 2013 found Mon Feb 3 10:28:43 2014\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:400
msgid ""
"It is recommended to create specifications for the directories which contain "
"binaries and configuration files, as well as any directories containing "
"sensitive data. Typically, specifications are created for [.filename]#/"
"bin#, [.filename]#/sbin#, [.filename]#/usr/bin#, [.filename]#/usr/sbin#, [."
"filename]#/usr/local/bin#, [.filename]#/etc#, and [.filename]#/usr/local/"
"etc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:405
msgid ""
"More advanced IDS systems exist, such as package:security/aide[]. In most "
"cases, `mtree` provides the functionality administrators need. It is "
"important to keep the seed value and the checksum output hidden from "
"malicious users. More information about `mtree` can be found in man:"
"mtree[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/security/_index.adoc:407
#, no-wrap
msgid "System Tuning for Security"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:412
msgid ""
"In FreeBSD, many system features can be tuned using `sysctl`. A few of the "
"security features which can be tuned to prevent Denial of Service (DoS) "
"attacks will be covered in this section. More information about using "
"`sysctl`, including how to temporarily change values and how to make the "
"changes permanent after testing, can be found in crossref:"
"config[configtuning-sysctl,“Tuning with sysctl(8)”]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/security/_index.adoc:417
msgid ""
"Any time a setting is changed with `sysctl`, the chance to cause undesired "
"harm is increased, affecting the availability of the system. All changes "
"should be monitored and, if possible, tried on a testing system before being "
"used on a production system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:424
msgid ""
"By default, the FreeBSD kernel boots with a security level of `-1`. This is "
"called \"insecure mode\" because immutable file flags may be turned off and "
"all devices may be read from or written to. The security level will remain "
"at `-1` unless it is altered through `sysctl` or by a setting in the startup "
"scripts. The security level may be increased during system startup by "
"setting `kern_securelevel_enable` to `YES` in [.filename]#/etc/rc.conf#, and "
"the value of `kern_securelevel` to the desired security level. See man:"
"security[7] and man:init[8] for more information on these settings and the "
"available security levels."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/security/_index.adoc:429
msgid ""
"Increasing the `securelevel` can break Xorg and cause other issues. Be "
"prepared to do some debugging."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:436
msgid ""
"The `net.inet.tcp.blackhole` and `net.inet.udp.blackhole` settings can be "
"used to drop incoming SYN packets on closed ports without sending a return "
"RST response. The default behavior is to return an RST to show a port is "
"closed. Changing the default provides some level of protection against "
"ports scans, which are used to determine which applications are running on a "
"system. Set `net.inet.tcp.blackhole` to `2` and `net.inet.udp.blackhole` to "
"`1`. Refer to man:blackhole[4] for more information about these settings."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:440
msgid ""
"The `net.inet.icmp.drop_redirect` and `net.inet.ip.redirect` settings help "
"prevent against _redirect attacks_. A redirect attack is a type of DoS "
"which sends mass numbers of ICMP type 5 packets. Since these packets are "
"not required, set `net.inet.icmp.drop_redirect` to `1` and set `net.inet.ip."
"redirect` to `0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:444
msgid ""
"Source routing is a method for detecting and accessing non-routable "
"addresses on the internal network. This should be disabled as non-routable "
"addresses are normally not routable on purpose. To disable this feature, "
"set `net.inet.ip.sourceroute` and `net.inet.ip.accept_sourceroute` to `0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:448
msgid ""
"When a machine on the network needs to send messages to all hosts on a "
"subnet, an ICMP echo request message is sent to the broadcast address. "
"However, there is no reason for an external host to perform such an action. "
"To reject all external broadcast requests, set `net.inet.icmp.bmcastecho` to "
"`0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/security/_index.adoc:450
msgid "Some additional settings are documented in man:security[7]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/security/_index.adoc:452
#, no-wrap
msgid "One-time Passwords"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:459
+#: documentation/content/en/books/handbook/security/_index.adoc:455
msgid ""
-"By default, FreeBSD includes support for One-time Passwords In Everything "
-"(OPIE). OPIE is designed to prevent replay attacks, in which an attacker "
-"discovers a user's password and uses it to access a system. Since a "
-"password is only used once in OPIE, a discovered password is of little use "
-"to an attacker. OPIE uses a secure hash and a challenge/response system to "
-"manage passwords. The FreeBSD implementation uses the MD5 hash by default."
+"By default, versions of FreeBSD prior to 14.x include support for One-time "
+"Passwords In Everything (OPIE)."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/handbook/security/_index.adoc:462
+msgid ""
+"OPIE is no longer considered secure and has been removed from FreeBSD -"
+"CURRENT; it will not be available from 14.x onwards. If you wish to use OPIE "
+"on versions of FreeBSD later than 13.x, the package:security/opie[] package "
+"or port is available, though not recommended."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:465
+#: documentation/content/en/books/handbook/security/_index.adoc:468
+msgid ""
+"OPIE is designed to prevent replay attacks, in which an attacker discovers a "
+"user's password and uses it to access a system. Since a password is only "
+"used once in OPIE, a discovered password is of little use to an attacker. "
+"OPIE uses a secure hash and a challenge/response system to manage "
+"passwords. The FreeBSD implementation uses the MD5 hash by default."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/handbook/security/_index.adoc:474
msgid ""
"OPIE uses three different types of passwords. The first is the usual "
"UNIX(R) or Kerberos password. The second is the one-time password which is "
-"generated by `opiekey`. The third type of password is the \"secret password"
-"\" which is used to generate one-time passwords. The secret password has "
-"nothing to do with, and should be different from, the UNIX(R) password."
+"generated by `opiekey`. The third type of password is the \"secret "
+"password\" which is used to generate one-time passwords. The secret "
+"password has nothing to do with, and should be different from, the UNIX(R) "
+"password."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:474
+#: documentation/content/en/books/handbook/security/_index.adoc:483
msgid ""
"There are two other pieces of data that are important to OPIE. One is the "
"\"seed\" or \"key\", consisting of two letters and five digits. The other "
"is the \"iteration count\", a number between 1 and 100. OPIE creates the "
"one-time password by concatenating the seed and the secret password, "
"applying the MD5 hash as many times as specified by the iteration count, and "
"turning the result into six short English words which represent the one-time "
"password. The authentication system keeps track of the last one-time "
"password used, and the user is authenticated if the hash of the user-"
"provided password is equal to the previous password. Since a one-way hash "
"is used, it is impossible to generate future one-time passwords if a "
"successfully used password is captured. The iteration count is decremented "
"after each successful login to keep the user and the login program in sync. "
"When the iteration count gets down to `1`, OPIE must be reinitialized."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:479
+#: documentation/content/en/books/handbook/security/_index.adoc:488
msgid ""
"There are a few programs involved in this process. A one-time password, or "
"a consecutive list of one-time passwords, is generated by passing an "
"iteration count, a seed, and a secret password to man:opiekey[1]. In "
"addition to initializing OPIE, man:opiepasswd[1] is used to change "
"passwords, iteration counts, or seeds. The relevant credential files in [."
"filename]#/etc/opiekeys# are examined by man:opieinfo[1] which prints out "
"the invoking user's current iteration count and seed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:485
+#: documentation/content/en/books/handbook/security/_index.adoc:494
msgid ""
"This section describes four different sorts of operations. The first is how "
"to set up one-time-passwords for the first time over a secure connection. "
"The second is how to use `opiepasswd` over an insecure connection. The "
"third is how to log in over an insecure connection. The fourth is how to "
"generate a number of keys which can be written down or printed out to use at "
"insecure locations."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:486
+#: documentation/content/en/books/handbook/security/_index.adoc:495
#, no-wrap
msgid "Initializing OPIE"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:489
+#: documentation/content/en/books/handbook/security/_index.adoc:498
msgid ""
"To initialize OPIE for the first time, run this command from a secure "
"location:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:500
+#: documentation/content/en/books/handbook/security/_index.adoc:509
#, no-wrap
msgid ""
"% opiepasswd -c\n"
"Adding unfurl:\n"
"Only use this method from the console; NEVER from remote. If you are using\n"
"telnet, xterm, or a dial-in, type ^C now or exit with no password.\n"
"Then run opiepasswd without the -c parameter.\n"
"Using MD5 to compute responses.\n"
"Enter new secret pass phrase:\n"
"Again new secret pass phrase:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:503
+#: documentation/content/en/books/handbook/security/_index.adoc:512
#, no-wrap
msgid ""
"ID unfurl OTP key is 499 to4268\n"
"MOS MALL GOAT ARM AVID COED\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:506
+#: documentation/content/en/books/handbook/security/_index.adoc:515
msgid ""
"The `-c` sets console mode which assumes that the command is being run from "
"a secure location, such as a computer under the user's control or an SSH "
"session to a computer under the user's control."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:510
+#: documentation/content/en/books/handbook/security/_index.adoc:519
msgid ""
"When prompted, enter the secret password which will be used to generate the "
"one-time login keys. This password should be difficult to guess and should "
"be different than the password which is associated with the user's login "
"account. It must be between 10 and 127 characters long. Remember this "
"password."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:515
+#: documentation/content/en/books/handbook/security/_index.adoc:524
msgid ""
"The `ID` line lists the login name (`unfurl`), default iteration count "
"(`499`), and default seed (`to4268`). When logging in, the system will "
"remember these parameters and display them, meaning that they do not have to "
"be memorized. The last line lists the generated one-time password which "
"corresponds to those parameters and the secret password. At the next login, "
"use this one-time password."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:516
+#: documentation/content/en/books/handbook/security/_index.adoc:525
#, no-wrap
msgid "Insecure Connection Initialization"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:522
+#: documentation/content/en/books/handbook/security/_index.adoc:531
msgid ""
"To initialize or change the secret password on an insecure system, a secure "
"connection is needed to some place where `opiekey` can be run. This might "
"be a shell prompt on a trusted machine. An iteration count is needed, where "
"100 is probably a good value, and the seed can either be specified or the "
"randomly-generated one used. On the insecure connection, the machine being "
"initialized, use man:opiepasswd[1]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:526
+#: documentation/content/en/books/handbook/security/_index.adoc:535
#, no-wrap
msgid "% opiepasswd\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:535
+#: documentation/content/en/books/handbook/security/_index.adoc:544
#, no-wrap
msgid ""
"Updating unfurl:\n"
"You need the response from an OTP generator.\n"
"Old secret pass phrase:\n"
"\totp-md5 498 to4268 ext\n"
"\tResponse: GAME GAG WELT OUT DOWN CHAT\n"
"New secret pass phrase:\n"
"\totp-md5 499 to4269\n"
"\tResponse: LINE PAP MILK NELL BUOY TROY\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:538
+#: documentation/content/en/books/handbook/security/_index.adoc:547
#, no-wrap
msgid ""
"ID mark OTP key is 499 gr4269\n"
"LINE PAP MILK NELL BUOY TROY\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:542
+#: documentation/content/en/books/handbook/security/_index.adoc:551
msgid ""
"To accept the default seed, press kbd:[Return]. Before entering an access "
"password, move over to the secure connection and give it the same parameters:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:550
-#: documentation/content/en/books/handbook/security/_index.adoc:591
+#: documentation/content/en/books/handbook/security/_index.adoc:559
+#: documentation/content/en/books/handbook/security/_index.adoc:600
#, no-wrap
msgid ""
"% opiekey 498 to4268\n"
"Using the MD5 algorithm to compute response.\n"
"Reminder: Do not use opiekey from telnet or dial-in sessions.\n"
"Enter secret pass phrase:\n"
"GAME GAG WELT OUT DOWN CHAT\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:553
+#: documentation/content/en/books/handbook/security/_index.adoc:562
msgid ""
"Switch back over to the insecure connection, and copy the generated one-time "
"password over to the relevant program."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:554
+#: documentation/content/en/books/handbook/security/_index.adoc:563
#, no-wrap
msgid "Generating a Single One-time Password"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:557
+#: documentation/content/en/books/handbook/security/_index.adoc:566
msgid ""
"After initializing OPIE and logging in, a prompt like this will be displayed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:564
+#: documentation/content/en/books/handbook/security/_index.adoc:573
#, no-wrap
msgid ""
"% telnet example.com\n"
"Trying 10.0.0.1...\n"
"Connected to example.com\n"
"Escape character is '^]'.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:566
+#: documentation/content/en/books/handbook/security/_index.adoc:575
#, no-wrap
msgid "FreeBSD/i386 (example.com) (ttypa)\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:570
+#: documentation/content/en/books/handbook/security/_index.adoc:579
#, no-wrap
msgid ""
"login: <username>\n"
"otp-md5 498 gr4269 ext\n"
"Password:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:575
+#: documentation/content/en/books/handbook/security/_index.adoc:584
msgid ""
-"The OPIE prompts provides a useful feature. If kbd:[Return] is pressed at "
+"The OPIE prompt provides a useful feature. If kbd:[Return] is pressed at "
"the password prompt, the prompt will turn echo on and display what is "
"typed. This can be useful when attempting to type in a password by hand "
"from a printout."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:581
+#: documentation/content/en/books/handbook/security/_index.adoc:590
msgid ""
"At this point, generate the one-time password to answer this login prompt. "
"This must be done on a trusted system where it is safe to run man:"
"opiekey[1]. There are versions of this command for Windows(R), Mac OS(R) "
"and FreeBSD. This command needs the iteration count and the seed as command "
"line options. Use cut-and-paste from the login prompt on the machine being "
"logged in to."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:583
+#: documentation/content/en/books/handbook/security/_index.adoc:592
msgid "On the trusted system:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:594
+#: documentation/content/en/books/handbook/security/_index.adoc:603
msgid "Once the one-time password is generated, continue to log in."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:595
+#: documentation/content/en/books/handbook/security/_index.adoc:604
#, no-wrap
msgid "Generating Multiple One-time Passwords"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:599
+#: documentation/content/en/books/handbook/security/_index.adoc:608
msgid ""
"Sometimes there is no access to a trusted machine or secure connection. In "
"this case, it is possible to use man:opiekey[1] to generate a number of one-"
"time passwords beforehand. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:611
+#: documentation/content/en/books/handbook/security/_index.adoc:620
#, no-wrap
msgid ""
"% opiekey -n 5 30 zz99999\n"
"Using the MD5 algorithm to compute response.\n"
"Reminder: Do not use opiekey from telnet or dial-in sessions.\n"
"Enter secret pass phrase: <secret password>\n"
"26: JOAN BORE FOSS DES NAY QUIT\n"
"27: LATE BIAS SLAY FOLK MUCH TRIG\n"
"28: SALT TIN ANTI LOON NEAL USE\n"
"29: RIO ODIN GO BYE FURY TIC\n"
"30: GREW JIVE SAN GIRD BOIL PHI\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:618
+#: documentation/content/en/books/handbook/security/_index.adoc:627
msgid ""
"The `-n 5` requests five keys in sequence, and `30` specifies what the last "
"iteration number should be. Note that these are printed out in _reverse_ "
"order of use. The really paranoid might want to write the results down by "
"hand; otherwise, print the list. Each line shows both the iteration count "
"and the one-time password. Scratch off the passwords as they are used."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:619
+#: documentation/content/en/books/handbook/security/_index.adoc:628
#, no-wrap
msgid "Restricting Use of UNIX(R) Passwords"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:624
+#: documentation/content/en/books/handbook/security/_index.adoc:633
msgid ""
"OPIE can restrict the use of UNIX(R) passwords based on the IP address of a "
"login session. The relevant file is [.filename]#/etc/opieaccess#, which is "
"present by default. Refer to man:opieaccess[5] for more information on this "
"file and which security considerations to be aware of when using it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:626
+#: documentation/content/en/books/handbook/security/_index.adoc:635
msgid "Here is a sample [.filename]#opieaccess#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:630
+#: documentation/content/en/books/handbook/security/_index.adoc:639
#, no-wrap
msgid "permit 192.168.0.0 255.255.0.0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:633
+#: documentation/content/en/books/handbook/security/_index.adoc:642
msgid ""
"This line allows users whose IP source address (which is vulnerable to "
"spoofing) matches the specified value and mask, to use UNIX(R) passwords at "
"any time."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:635
+#: documentation/content/en/books/handbook/security/_index.adoc:644
msgid ""
"If no rules in [.filename]#opieaccess# are matched, the default is to deny "
"non-OPIE logins."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:637
+#: documentation/content/en/books/handbook/security/_index.adoc:646
#, no-wrap
msgid "TCP Wrapper"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:642
+#: documentation/content/en/books/handbook/security/_index.adoc:651
msgid ""
"TCP Wrapper is a host-based access control system which extends the "
"abilities of crossref:network-servers[network-inetd,“The inetd Super-"
"Server”]. It can be configured to provide logging support, return messages, "
"and connection restrictions for the server daemons under the control of "
"inetd. Refer to man:tcpd[8] for more information about TCP Wrapper and its "
"features."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:645
+#: documentation/content/en/books/handbook/security/_index.adoc:654
msgid ""
"TCP Wrapper should not be considered a replacement for a properly configured "
"firewall. Instead, TCP Wrapper should be used in conjunction with a "
"firewall and other security enhancements in order to provide another layer "
"of protection in the implementation of a security policy."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:646
+#: documentation/content/en/books/handbook/security/_index.adoc:655
#, no-wrap
msgid "Initial Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:649
+#: documentation/content/en/books/handbook/security/_index.adoc:658
msgid ""
"To enable TCP Wrapper in FreeBSD, add the following lines to [.filename]#/"
"etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:654
+#: documentation/content/en/books/handbook/security/_index.adoc:663
#, no-wrap
msgid ""
"inetd_enable=\"YES\"\n"
"inetd_flags=\"-Ww\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:657
+#: documentation/content/en/books/handbook/security/_index.adoc:666
msgid "Then, properly configure [.filename]#/etc/hosts.allow#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:662
+#: documentation/content/en/books/handbook/security/_index.adoc:671
msgid ""
"Unlike other implementations of TCP Wrapper, the use of [.filename]#hosts."
"deny# is deprecated in FreeBSD. All configuration options should be placed "
"in [.filename]#/etc/hosts.allow#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:666
+#: documentation/content/en/books/handbook/security/_index.adoc:675
msgid ""
"In the simplest configuration, daemon connection policies are set to either "
"permit or block, depending on the options in [.filename]#/etc/hosts.allow#. "
"The default configuration in FreeBSD is to allow all connections to the "
"daemons started with inetd."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:670
+#: documentation/content/en/books/handbook/security/_index.adoc:679
msgid ""
"Basic configuration usually takes the form of `daemon : address : action`, "
"where `daemon` is the daemon which inetd started, `address` is a valid "
"hostname, IP address, or an IPv6 address enclosed in brackets ([ ]), and "
"`action` is either `allow` or `deny`. TCP Wrapper uses a first rule match "
"semantic, meaning that the configuration file is scanned from the beginning "
"for a matching rule. When a match is found, the rule is applied and the "
"search process stops."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:672
+#: documentation/content/en/books/handbook/security/_index.adoc:681
msgid ""
"For example, to allow POP3 connections via the package:mail/qpopper[] "
"daemon, the following lines should be appended to [.filename]#hosts.allow#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:677
+#: documentation/content/en/books/handbook/security/_index.adoc:686
#, no-wrap
msgid ""
"# This line is required for POP3 connections:\n"
"qpopper : ALL : allow\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:680
+#: documentation/content/en/books/handbook/security/_index.adoc:689
msgid "Whenever this file is edited, restart inetd:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:684
+#: documentation/content/en/books/handbook/security/_index.adoc:693
#, no-wrap
msgid "# service inetd restart\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:686
+#: documentation/content/en/books/handbook/security/_index.adoc:695
#, no-wrap
msgid "Advanced Configuration"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:693
+#: documentation/content/en/books/handbook/security/_index.adoc:702
msgid ""
"TCP Wrapper provides advanced options to allow more control over the way "
"connections are handled. In some cases, it may be appropriate to return a "
"comment to certain hosts or daemon connections. In other cases, a log entry "
"should be recorded or an email sent to the administrator. Other situations "
"may require the use of a service for local connections only. This is all "
"possible through the use of configuration options known as wildcards, "
"expansion characters, and external command execution."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:698
+#: documentation/content/en/books/handbook/security/_index.adoc:707
msgid ""
"Suppose that a situation occurs where a connection should be denied yet a "
"reason should be sent to the host who attempted to establish that "
"connection. That action is possible with `twist`. When a connection "
"attempt is made, `twist` executes a shell command or script. An example "
"exists in [.filename]#hosts.allow#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:705
+#: documentation/content/en/books/handbook/security/_index.adoc:714
#, no-wrap
msgid ""
"# The rest of the daemons are protected.\n"
"ALL : ALL \\\n"
"\t: severity auth.info \\\n"
"\t: twist /bin/echo \"You are not welcome to use %d from %h.\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:711
+#: documentation/content/en/books/handbook/security/_index.adoc:720
msgid ""
"In this example, the message \"You are not allowed to use _daemon name_ from "
"_hostname_.\" will be returned for any daemon not configured in [."
"filename]#hosts.allow#. This is useful for sending a reply back to the "
"connection initiator right after the established connection is dropped. Any "
"message returned _must_ be wrapped in quote (`\"`) characters."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:715
+#: documentation/content/en/books/handbook/security/_index.adoc:724
msgid ""
"It may be possible to launch a denial of service attack on the server if an "
"attacker floods these daemons with connection requests."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:721
+#: documentation/content/en/books/handbook/security/_index.adoc:730
msgid ""
"Another possibility is to use `spawn`. Like `twist`, `spawn` implicitly "
"denies the connection and may be used to run external shell commands or "
"scripts. Unlike `twist`, `spawn` will not send a reply back to the host who "
"established the connection. For example, consider the following "
"configuration:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:729
+#: documentation/content/en/books/handbook/security/_index.adoc:738
#, no-wrap
msgid ""
"# We do not allow connections from example.com:\n"
"ALL : .example.com \\\n"
"\t: spawn (/bin/echo %a from %h attempted to access %d >> \\\n"
"\t /var/log/connections.log) \\\n"
"\t: deny\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:734
+#: documentation/content/en/books/handbook/security/_index.adoc:743
msgid ""
"This will deny all connection attempts from `*.example.com` and log the "
"hostname, IP address, and the daemon to which access was attempted to [."
"filename]#/var/log/connections.log#. This example uses the substitution "
"characters `%a` and `%h`. Refer to man:hosts_access[5] for the complete "
"list."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:738
+#: documentation/content/en/books/handbook/security/_index.adoc:747
msgid ""
"To match every instance of a daemon, domain, or IP address, use `ALL`. "
"Another wildcard is `PARANOID` which may be used to match any host which "
"provides an IP address that may be forged because the IP address differs "
"from its resolved hostname. In this example, all connection requests to "
"Sendmail which have an IP address that varies from its hostname will be "
"denied:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:743
+#: documentation/content/en/books/handbook/security/_index.adoc:752
#, no-wrap
msgid ""
"# Block possibly spoofed requests to sendmail:\n"
"sendmail : PARANOID : deny\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:748
+#: documentation/content/en/books/handbook/security/_index.adoc:757
msgid ""
"Using the `PARANOID` wildcard will result in denied connections if the "
"client or server has a broken DNS setup."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:751
+#: documentation/content/en/books/handbook/security/_index.adoc:760
msgid ""
"To learn more about wildcards and their associated functionality, refer to "
"man:hosts_access[5]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:755
+#: documentation/content/en/books/handbook/security/_index.adoc:764
msgid ""
"When adding new configuration lines, make sure that any unneeded entries for "
"that daemon are commented out in [.filename]#hosts.allow#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:758
+#: documentation/content/en/books/handbook/security/_index.adoc:767
#, no-wrap
msgid "Kerberos"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:764
+#: documentation/content/en/books/handbook/security/_index.adoc:773
msgid ""
"Kerberos is a network authentication protocol which was originally created "
"by the Massachusetts Institute of Technology (MIT) as a way to securely "
"provide authentication across a potentially hostile network. The Kerberos "
"protocol uses strong cryptography so that both a client and server can prove "
"their identity without sending any unencrypted secrets over the network. "
"Kerberos can be described as an identity-verifying proxy system and as a "
"trusted third-party authentication system. After a user authenticates with "
"Kerberos, their communications can be encrypted to assure privacy and data "
"integrity."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:768
+#: documentation/content/en/books/handbook/security/_index.adoc:777
msgid ""
"The only function of Kerberos is to provide the secure authentication of "
"users and servers on the network. It does not provide authorization or "
"auditing functions. It is recommended that Kerberos be used with other "
"security methods which provide authorization and audit services."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:776
+#: documentation/content/en/books/handbook/security/_index.adoc:785
msgid ""
"The current version of the protocol is version 5, described in RFC 4120. "
"Several free implementations of this protocol are available, covering a wide "
"range of operating systems. MIT continues to develop their Kerberos "
"package. It is commonly used in the US as a cryptography product, and has "
"historically been subject to US export regulations. In FreeBSD, MITKerberos "
"is available as the package:security/krb5[] package or port. The Heimdal "
"Kerberos implementation was explicitly developed outside of the US to avoid "
"export regulations. The Heimdal Kerberos distribution is included in the "
"base FreeBSD installation, and another distribution with more configurable "
"options is available as package:security/heimdal[] in the Ports Collection."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:779
+#: documentation/content/en/books/handbook/security/_index.adoc:788
msgid ""
"In Kerberos users and services are identified as \"principals\" which are "
"contained within an administrative grouping, called a \"realm\". A typical "
"user principal would be of the form `_user_@_REALM_` (realms are "
"traditionally uppercase)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:781
+#: documentation/content/en/books/handbook/security/_index.adoc:790
msgid ""
"This section provides a guide on how to set up Kerberos using the Heimdal "
"distribution included in FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:783
+#: documentation/content/en/books/handbook/security/_index.adoc:792
msgid ""
"For purposes of demonstrating a Kerberos installation, the name spaces will "
"be as follows:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:785
+#: documentation/content/en/books/handbook/security/_index.adoc:794
msgid "The DNS domain (zone) will be `example.org`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:786
+#: documentation/content/en/books/handbook/security/_index.adoc:795
msgid "The Kerberos realm will be `EXAMPLE.ORG`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:791
+#: documentation/content/en/books/handbook/security/_index.adoc:800
msgid ""
"Use real domain names when setting up Kerberos, even if it will run "
"internally. This avoids DNS problems and assures inter-operation with other "
"Kerberos realms."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:793
+#: documentation/content/en/books/handbook/security/_index.adoc:802
#, no-wrap
msgid "Setting up a Heimdal KDC"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:799
+#: documentation/content/en/books/handbook/security/_index.adoc:808
msgid ""
"The Key Distribution Center (KDC) is the centralized authentication service "
"that Kerberos provides, the \"trusted third party\" of the system. It is "
"the computer that issues Kerberos tickets, which are used for clients to "
"authenticate to servers. As the KDC is considered trusted by all other "
"computers in the Kerberos realm, it has heightened security concerns. "
"Direct access to the KDC should be limited."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:801
+#: documentation/content/en/books/handbook/security/_index.adoc:810
msgid ""
"While running a KDC requires few computing resources, a dedicated machine "
"acting only as a KDC is recommended for security reasons."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:803
+#: documentation/content/en/books/handbook/security/_index.adoc:812
msgid "To begin, install the package:security/heimdal[] package as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:807
+#: documentation/content/en/books/handbook/security/_index.adoc:816
#, no-wrap
msgid "# pkg install heimdal\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:810
+#: documentation/content/en/books/handbook/security/_index.adoc:819
msgid "Next, update [.filename]#/etc/rc.conf# using `sysrc` as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:815
+#: documentation/content/en/books/handbook/security/_index.adoc:824
#, no-wrap
msgid ""
"# sysrc kdc_enable=yes\n"
"# sysrc kadmind_enable=yes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:818
+#: documentation/content/en/books/handbook/security/_index.adoc:827
msgid "Next, edit [.filename]#/etc/krb5.conf# as follows:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:830
+#: documentation/content/en/books/handbook/security/_index.adoc:839
#, no-wrap
msgid ""
"[libdefaults]\n"
" default_realm = EXAMPLE.ORG\n"
"[realms]\n"
" EXAMPLE.ORG = {\n"
"\tkdc = kerberos.example.org\n"
"\tadmin_server = kerberos.example.org\n"
" }\n"
"[domain_realm]\n"
" .example.org = EXAMPLE.ORG\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:834
+#: documentation/content/en/books/handbook/security/_index.adoc:843
msgid ""
"In this example, the KDC will use the fully-qualified hostname `kerberos."
"example.org`. The hostname of the KDC must be resolvable in the DNS."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:837
+#: documentation/content/en/books/handbook/security/_index.adoc:846
msgid ""
"Kerberos can also use the DNS to locate KDCs, instead of a `[realms]` "
"section in [.filename]#/etc/krb5.conf#. For large organizations that have "
"their own DNS servers, the above example could be trimmed to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:844
+#: documentation/content/en/books/handbook/security/_index.adoc:853
#, no-wrap
msgid ""
"[libdefaults]\n"
" default_realm = EXAMPLE.ORG\n"
"[domain_realm]\n"
" .example.org = EXAMPLE.ORG\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:847
+#: documentation/content/en/books/handbook/security/_index.adoc:856
msgid "With the following lines being included in the `example.org` zone file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:855
+#: documentation/content/en/books/handbook/security/_index.adoc:864
#, no-wrap
msgid ""
"_kerberos._udp IN SRV 01 00 88 kerberos.example.org.\n"
"_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.\n"
"_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.\n"
"_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.\n"
"_kerberos IN TXT EXAMPLE.ORG\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:860
+#: documentation/content/en/books/handbook/security/_index.adoc:869
msgid ""
"In order for clients to be able to find the Kerberos services, they _must_ "
"have either a fully configured [.filename]#/etc/krb5.conf# or a minimally "
"configured [.filename]#/etc/krb5.conf# _and_ a properly configured DNS "
"server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:866
+#: documentation/content/en/books/handbook/security/_index.adoc:875
msgid ""
"Next, create the Kerberos database which contains the keys of all principals "
"(users and hosts) encrypted with a master password. It is not required to "
"remember this password as it will be stored in [.filename]#/var/heimdal/m-"
"key#; it would be reasonable to use a 45-character random password for this "
"purpose. To create the master key, run `kstash` and enter a password:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:872
+#: documentation/content/en/books/handbook/security/_index.adoc:881
#, no-wrap
msgid ""
"# kstash\n"
"Master key: xxxxxxxxxxxxxxxxxxxxxxx\n"
"Verifying password - Master key: xxxxxxxxxxxxxxxxxxxxxxx\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:878
+#: documentation/content/en/books/handbook/security/_index.adoc:887
msgid ""
"Once the master key has been created, the database should be initialized. "
"The Kerberos administrative tool man:kadmin[8] can be used on the KDC in a "
"mode that operates directly on the database, without using the man:"
"kadmind[8] network service, as `kadmin -l`. This resolves the chicken-and-"
"egg problem of trying to connect to the database before it is created. At "
"the `kadmin` prompt, use `init` to create the realm's initial database:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:884
+#: documentation/content/en/books/handbook/security/_index.adoc:893
#, no-wrap
msgid ""
"# kadmin -l\n"
"kadmin> init EXAMPLE.ORG\n"
"Realm max ticket life [unlimited]:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:889
+#: documentation/content/en/books/handbook/security/_index.adoc:898
msgid ""
"Lastly, while still in `kadmin`, create the first principal using `add`. "
"Stick to the default options for the principal for now, as these can be "
"changed later with `modify`. Type `?` at the prompt to see the available "
"options."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:900
+#: documentation/content/en/books/handbook/security/_index.adoc:909
#, no-wrap
msgid ""
"kadmin> add tillman\n"
"Max ticket life [unlimited]:\n"
"Max renewable life [unlimited]:\n"
"Principal expiration time [never]:\n"
"Password expiration time [never]:\n"
"Attributes []:\n"
"Password: xxxxxxxx\n"
"Verifying password - Password: xxxxxxxx\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:903
+#: documentation/content/en/books/handbook/security/_index.adoc:912
msgid "Next, start the KDC services by running:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:908
+#: documentation/content/en/books/handbook/security/_index.adoc:917
#, no-wrap
msgid ""
"# service kdc start\n"
"# service kadmind start\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:911
+#: documentation/content/en/books/handbook/security/_index.adoc:920
msgid ""
"While there will not be any kerberized daemons running at this point, it is "
"possible to confirm that the KDC is functioning by obtaining a ticket for "
"the principal that was just created:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:916
+#: documentation/content/en/books/handbook/security/_index.adoc:925
#, no-wrap
msgid ""
"% kinit tillman\n"
"tillman@EXAMPLE.ORG's Password:\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:919
+#: documentation/content/en/books/handbook/security/_index.adoc:928
msgid "Confirm that a ticket was successfully obtained using `klist`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:925
+#: documentation/content/en/books/handbook/security/_index.adoc:934
#, no-wrap
msgid ""
"% klist\n"
"Credentials cache: FILE:/tmp/krb5cc_1001\n"
"\tPrincipal: tillman@EXAMPLE.ORG\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:928
+#: documentation/content/en/books/handbook/security/_index.adoc:937
#, no-wrap
msgid ""
" Issued Expires Principal\n"
"Aug 27 15:37:58 2013 Aug 28 01:37:58 2013 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:931
+#: documentation/content/en/books/handbook/security/_index.adoc:940
msgid "The temporary ticket can be destroyed when the test is finished:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:935
+#: documentation/content/en/books/handbook/security/_index.adoc:944
#, no-wrap
msgid "% kdestroy\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:937
+#: documentation/content/en/books/handbook/security/_index.adoc:946
#, no-wrap
msgid "Configuring a Server to Use Kerberos"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:941
+#: documentation/content/en/books/handbook/security/_index.adoc:950
msgid ""
"The first step in configuring a server to use Kerberos authentication is to "
"ensure that it has the correct configuration in [.filename]#/etc/krb5."
"conf#. The version from the KDC can be used as-is, or it can be regenerated "
"on the new system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:950
+#: documentation/content/en/books/handbook/security/_index.adoc:959
msgid ""
"Next, create [.filename]#/etc/krb5.keytab# on the server. This is the main "
"part of \"Kerberizing\" a service - it corresponds to generating a secret "
"shared between the service and the KDC. The secret is a cryptographic key, "
"stored in a \"keytab\". The keytab contains the server's host key, which "
"allows it and the KDC to verify each others' identity. It must be "
"transmitted to the server in a secure fashion, as the security of the server "
"can be broken if the key is made public. Typically, the [.filename]#keytab# "
"is generated on an administrator's trusted machine using `kadmin`, then "
"securely transferred to the server, e.g., with man:scp[1]; it can also be "
"created directly on the server if that is consistent with the desired "
"security policy. It is very important that the keytab is transmitted to the "
"server in a secure fashion: if the key is known by some other party, that "
"party can impersonate any user to the server! Using `kadmin` on the server "
"directly is convenient, because the entry for the host principal in the KDC "
"database is also created using `kadmin`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:954
+#: documentation/content/en/books/handbook/security/_index.adoc:963
msgid ""
"Of course, `kadmin` is a kerberized service; a Kerberos ticket is needed to "
"authenticate to the network service, but to ensure that the user running "
"`kadmin` is actually present (and their session has not been hijacked), "
"`kadmin` will prompt for the password to get a fresh ticket. The principal "
"authenticating to the kadmin service must be permitted to use the `kadmin` "
"interface, as specified in [.filename]#/var/heimdal/kadmind.acl#. See the "
"section titled \"Remote administration\" in `info heimdal` for details on "
"designing access control lists. Instead of enabling remote `kadmin` access, "
"the administrator could securely connect to the KDC via the local console or "
"man:ssh[1], and perform administration locally using `kadmin -l`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:958
+#: documentation/content/en/books/handbook/security/_index.adoc:967
msgid ""
"After installing [.filename]#/etc/krb5.conf#, use `add --random-key` in "
"`kadmin`. This adds the server's host principal to the database, but does "
"not extract a copy of the host principal key to a keytab. To generate the "
"keytab, use `ext` to extract the server's host principal key to its own "
"keytab:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:970
+#: documentation/content/en/books/handbook/security/_index.adoc:979
#, no-wrap
msgid ""
"# kadmin\n"
"kadmin> add --random-key host/myserver.example.org\n"
"Max ticket life [unlimited]:\n"
"Max renewable life [unlimited]:\n"
"Principal expiration time [never]:\n"
"Password expiration time [never]:\n"
"Attributes []:\n"
"kadmin> ext_keytab host/myserver.example.org\n"
"kadmin> exit\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:974
+#: documentation/content/en/books/handbook/security/_index.adoc:983
msgid ""
"Note that `ext_keytab` stores the extracted key in [.filename]#/etc/krb5."
"keytab# by default. This is good when being run on the server being "
"kerberized, but the `--keytab _path/to/file_` argument should be used when "
"the keytab is being extracted elsewhere:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:980
+#: documentation/content/en/books/handbook/security/_index.adoc:989
#, no-wrap
msgid ""
"# kadmin\n"
"kadmin> ext_keytab --keytab=/tmp/example.keytab host/myserver.example.org\n"
"kadmin> exit\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:984
+#: documentation/content/en/books/handbook/security/_index.adoc:993
msgid ""
"The keytab can then be securely copied to the server using man:scp[1] or a "
"removable media. Be sure to specify a non-default keytab name to avoid "
"inserting unneeded keys into the system's keytab."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:989
+#: documentation/content/en/books/handbook/security/_index.adoc:998
msgid ""
"At this point, the server can read encrypted messages from the KDC using its "
"shared key, stored in [.filename]#krb5.keytab#. It is now ready for the "
"Kerberos-using services to be enabled. One of the most common such services "
"is man:sshd[8], which supports Kerberos via the GSS-API. In [.filename]#/"
"etc/ssh/sshd_config#, add the line:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:993
+#: documentation/content/en/books/handbook/security/_index.adoc:1002
#, no-wrap
msgid "GSSAPIAuthentication yes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:996
+#: documentation/content/en/books/handbook/security/_index.adoc:1005
msgid ""
"After making this change, man:sshd[8] must be restarted for the new "
"configuration to take effect: `service sshd restart`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:997
+#: documentation/content/en/books/handbook/security/_index.adoc:1006
#, no-wrap
msgid "Configuring a Client to Use Kerberos"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1001
+#: documentation/content/en/books/handbook/security/_index.adoc:1010
msgid ""
"As it was for the server, the client requires configuration in [.filename]#/"
"etc/krb5.conf#. Copy the file in place (securely) or re-enter it as needed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1006
+#: documentation/content/en/books/handbook/security/_index.adoc:1015
msgid ""
"Test the client by using `kinit`, `klist`, and `kdestroy` from the client to "
"obtain, show, and then delete a ticket for an existing principal. Kerberos "
"applications should also be able to connect to Kerberos enabled servers. If "
"that does not work but obtaining a ticket does, the problem is likely with "
"the server and not with the client or the KDC. In the case of kerberized "
"man:ssh[1], GSS-API is disabled by default, so test using `ssh -o "
"GSSAPIAuthentication=yes _hostname_`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1008
+#: documentation/content/en/books/handbook/security/_index.adoc:1017
msgid ""
"When testing a Kerberized application, try using a packet sniffer such as "
"`tcpdump` to confirm that no sensitive information is sent in the clear."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1011
+#: documentation/content/en/books/handbook/security/_index.adoc:1020
msgid ""
"Various Kerberos client applications are available. With the advent of a "
"bridge so that applications using SASL for authentication can use GSS-API "
"mechanisms as well, large classes of client applications can use Kerberos "
"for authentication, from Jabber clients to IMAP clients."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1016
+#: documentation/content/en/books/handbook/security/_index.adoc:1025
msgid ""
"Users within a realm typically have their Kerberos principal mapped to a "
"local user account. Occasionally, one needs to grant access to a local user "
"account to someone who does not have a matching Kerberos principal. For "
"example, `tillman@EXAMPLE.ORG` may need access to the local user account "
"`webdevelopers`. Other principals may also need access to that local "
"account."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1019
+#: documentation/content/en/books/handbook/security/_index.adoc:1028
msgid ""
"The [.filename]#.k5login# and [.filename]#.k5users# files, placed in a "
"user's home directory, can be used to solve this problem. For example, if "
"the following [.filename]#.k5login# is placed in the home directory of "
"`webdevelopers`, both principals listed will have access to that account "
"without requiring a shared password:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1024
+#: documentation/content/en/books/handbook/security/_index.adoc:1033
#, no-wrap
msgid ""
"tillman@example.org\n"
"jdoe@example.org\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1027
+#: documentation/content/en/books/handbook/security/_index.adoc:1036
msgid "Refer to man:ksu[1] for more information about [.filename]#.k5users#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1028
+#: documentation/content/en/books/handbook/security/_index.adoc:1037
#, no-wrap
msgid "MIT Differences"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1032
+#: documentation/content/en/books/handbook/security/_index.adoc:1041
msgid ""
"The major difference between the MIT and Heimdal implementations is that "
"`kadmin` has a different, but equivalent, set of commands and uses a "
"different protocol. If the KDC is MIT, the Heimdal version of `kadmin` "
"cannot be used to administer the KDC remotely, and vice versa."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1036
+#: documentation/content/en/books/handbook/security/_index.adoc:1045
msgid ""
"Client applications may also use slightly different command line options to "
"accomplish the same tasks. Following the instructions at http://web.mit.edu/"
"Kerberos/www/[http://web.mit.edu/Kerberos/www/] is recommended. Be careful "
"of path issues: the MIT port installs into [.filename]#/usr/local/# by "
"default, and the FreeBSD system applications run instead of the MIT versions "
"if `PATH` lists the system directories first."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1038
+#: documentation/content/en/books/handbook/security/_index.adoc:1047
msgid ""
"When using MIT Kerberos as a KDC on FreeBSD, the following edits should also "
"be made to [.filename]#rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1046
+#: documentation/content/en/books/handbook/security/_index.adoc:1055
#, no-wrap
msgid ""
"kdc_program=\"/usr/local/sbin/kdc\"\n"
"kadmind_program=\"/usr/local/sbin/kadmind\"\n"
"kdc_flags=\"\"\n"
"kdc_enable=\"YES\"\n"
"kadmind_enable=\"YES\"\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1048
+#: documentation/content/en/books/handbook/security/_index.adoc:1057
#, no-wrap
msgid "Kerberos Tips, Tricks, and Troubleshooting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1051
+#: documentation/content/en/books/handbook/security/_index.adoc:1060
msgid ""
"When configuring and troubleshooting Kerberos, keep the following points in "
"mind:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1053
+#: documentation/content/en/books/handbook/security/_index.adoc:1062
msgid ""
"When using either Heimdal or MITKerberos from ports, ensure that the `PATH` "
"lists the port's versions of the client applications before the system "
"versions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1054
+#: documentation/content/en/books/handbook/security/_index.adoc:1063
msgid ""
"If all the computers in the realm do not have synchronized time settings, "
"authentication may fail. crossref:network-servers[network-ntp,“Clock "
"Synchronization with NTP”] describes how to synchronize clocks using NTP."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1055
+#: documentation/content/en/books/handbook/security/_index.adoc:1064
msgid ""
"If the hostname is changed, the `host/` principal must be changed and the "
"keytab updated. This also applies to special keytab entries like the `HTTP/` "
"principal used for Apache's package:www/mod_auth_kerb[]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1056
+#: documentation/content/en/books/handbook/security/_index.adoc:1065
msgid ""
"All hosts in the realm must be both forward and reverse resolvable in DNS "
"or, at a minimum, exist in [.filename]#/etc/hosts#. CNAMEs will work, but "
"the A and PTR records must be correct and in place. The error message for "
"unresolvable hosts is not intuitive: `Kerberos5 refuses authentication "
"because Read req failed: Key table entry not found`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1057
+#: documentation/content/en/books/handbook/security/_index.adoc:1066
msgid ""
"Some operating systems that act as clients to the KDC do not set the "
"permissions for `ksu` to be setuid `root`. This means that `ksu` does not "
"work. This is a permissions problem, not a KDC error."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1058
+#: documentation/content/en/books/handbook/security/_index.adoc:1067
msgid ""
"With MITKerberos, to allow a principal to have a ticket life longer than the "
"default lifetime of ten hours, use `modify_principal` at the man:kadmin[8] "
"prompt to change the `maxlife` of both the principal in question and the "
"`krbtgt` principal. The principal can then use `kinit -l` to request a "
"ticket with a longer lifetime."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1059
+#: documentation/content/en/books/handbook/security/_index.adoc:1068
msgid ""
"When running a packet sniffer on the KDC to aid in troubleshooting while "
"running `kinit` from a workstation, the Ticket Granting Ticket (TGT) is sent "
"immediately, even before the password is typed. This is because the Kerberos "
"server freely transmits a TGT to any unauthorized request. However, every "
"TGT is encrypted in a key derived from the user's password. When a user "
"types their password, it is not sent to the KDC, it is instead used to "
"decrypt the TGT that `kinit` already obtained. If the decryption process "
"results in a valid ticket with a valid time stamp, the user has valid "
"Kerberos credentials. These credentials include a session key for "
"establishing secure communications with the Kerberos server in the future, "
"as well as the actual TGT, which is encrypted with the Kerberos server's own "
"key. This second layer of encryption allows the Kerberos server to verify "
"the authenticity of each TGT."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1060
+#: documentation/content/en/books/handbook/security/_index.adoc:1069
msgid ""
"Host principals can have a longer ticket lifetime. If the user principal has "
"a lifetime of a week but the host being connected to has a lifetime of nine "
"hours, the user cache will have an expired host principal and the ticket "
"cache will not work as expected."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1061
+#: documentation/content/en/books/handbook/security/_index.adoc:1070
msgid ""
"When setting up [.filename]#krb5.dict# to prevent specific bad passwords "
"from being used as described in man:kadmind[8], remember that it only "
"applies to principals that have a password policy assigned to them. The "
"format used in [.filename]#krb5.dict# is one string per line. Creating a "
"symbolic link to [.filename]#/usr/share/dict/words# might be useful."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1062
+#: documentation/content/en/books/handbook/security/_index.adoc:1071
#, no-wrap
msgid "Mitigating Kerberos Limitations"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1067
+#: documentation/content/en/books/handbook/security/_index.adoc:1076
msgid ""
"Since Kerberos is an all or nothing approach, every service enabled on the "
"network must either be modified to work with Kerberos or be otherwise "
"secured against network attacks. This is to prevent user credentials from "
"being stolen and re-used. An example is when Kerberos is enabled on all "
"remote shells but the non-Kerberized POP3 mail server sends passwords in "
"plain text."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1072
+#: documentation/content/en/books/handbook/security/_index.adoc:1081
msgid ""
"The KDC is a single point of failure. By design, the KDC must be as secure "
"as its master password database. The KDC should have absolutely no other "
"services running on it and should be physically secure. The danger is high "
"because Kerberos stores all passwords encrypted with the same master key "
"which is stored as a file on the KDC."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1076
+#: documentation/content/en/books/handbook/security/_index.adoc:1085
msgid ""
"A compromised master key is not quite as bad as one might fear. The master "
"key is only used to encrypt the Kerberos database and as a seed for the "
"random number generator. As long as access to the KDC is secure, an "
"attacker cannot do much with the master key."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1079
+#: documentation/content/en/books/handbook/security/_index.adoc:1088
msgid ""
"If the KDC is unavailable, network services are unusable as authentication "
"cannot be performed. This can be alleviated with a single master KDC and "
"one or more slaves, and with careful implementation of secondary or fall-"
"back authentication using PAM."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1084
+#: documentation/content/en/books/handbook/security/_index.adoc:1093
msgid ""
"Kerberos allows users, hosts and services to authenticate between "
"themselves. It does not have a mechanism to authenticate the KDC to the "
"users, hosts, or services. This means that a trojaned `kinit` could record "
"all user names and passwords. File system integrity checking tools like "
"package:security/tripwire[] can alleviate this."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1085
+#: documentation/content/en/books/handbook/security/_index.adoc:1094
#, no-wrap
msgid "Resources and Further Information"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1088
+#: documentation/content/en/books/handbook/security/_index.adoc:1097
msgid ""
"http://www.faqs.org/faqs/Kerberos-faq/general/preamble.html[The Kerberos FAQ]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1089
+#: documentation/content/en/books/handbook/security/_index.adoc:1098
msgid ""
"http://web.mit.edu/Kerberos/www/dialogue.html[Designing an Authentication "
"System: a Dialog in Four Scenes]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1090
+#: documentation/content/en/books/handbook/security/_index.adoc:1099
msgid ""
"https://www.ietf.org/rfc/rfc4120.txt[RFC 4120, The Kerberos Network "
"Authentication Service (V5)]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1091
+#: documentation/content/en/books/handbook/security/_index.adoc:1100
msgid "http://web.mit.edu/Kerberos/www/[MIT Kerberos home page]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1092
+#: documentation/content/en/books/handbook/security/_index.adoc:1101
msgid ""
"https://github.com/heimdal/heimdal/wiki[Heimdal Kerberos project wiki page]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:1094
+#: documentation/content/en/books/handbook/security/_index.adoc:1103
#, no-wrap
msgid "OpenSSL"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1098
+#: documentation/content/en/books/handbook/security/_index.adoc:1107
msgid ""
"OpenSSL is an open source implementation of the SSL and TLS protocols. It "
"provides an encryption transport layer on top of the normal communications "
"layer, allowing it to be intertwined with many network applications and "
"services."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1100
+#: documentation/content/en/books/handbook/security/_index.adoc:1109
msgid ""
"The version of OpenSSL included in FreeBSD supports Transport Layer Security "
"1.0/1.1/1.2/1.3 (TLSv1/TLSv1.1/TLSv1.2/TLSv1.3) network security protocols "
"and can be used as a general cryptographic library."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1105
+#: documentation/content/en/books/handbook/security/_index.adoc:1114
msgid ""
"OpenSSL is often used to encrypt authentication of mail clients and to "
"secure web based transactions such as credit card payments. Some ports, "
"such as package:www/apache24[] and package:databases/postgresql11-server[], "
"include a compile option for building with OpenSSL. If selected, the port "
"will add support using OpenSSL from the base system. To instead have the "
"port compile against OpenSSL from the package:security/openssl[] port, add "
"the following to [.filename]#/etc/make.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1109
+#: documentation/content/en/books/handbook/security/_index.adoc:1118
#, no-wrap
msgid "DEFAULT_VERSIONS+= ssl=openssl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1117
+#: documentation/content/en/books/handbook/security/_index.adoc:1126
msgid ""
"Another common use of OpenSSL is to provide certificates for use with "
"software applications. Certificates can be used to verify the credentials "
"of a company or individual. If a certificate has not been signed by an "
"external _Certificate Authority_ (CA), such as http://www.verisign."
"com[http://www.verisign.com], the application that uses the certificate will "
"produce a warning. There is a cost associated with obtaining a signed "
"certificate and using a signed certificate is not mandatory as certificates "
"can be self-signed. However, using an external authority will prevent "
"warnings and can put users at ease."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1120
+#: documentation/content/en/books/handbook/security/_index.adoc:1129
msgid ""
"This section demonstrates how to create and use certificates on a FreeBSD "
"system. Refer to crossref:network-servers[ldap-config,“Configuring an LDAP "
"Server”] for an example of how to create a CA for signing one's own "
"certificates."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1122
+#: documentation/content/en/books/handbook/security/_index.adoc:1131
msgid ""
"For more information about SSL, read the free https://www.feistyduck.com/"
"books/openssl-cookbook/[OpenSSL Cookbook]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1123
+#: documentation/content/en/books/handbook/security/_index.adoc:1132
#, no-wrap
msgid "Generating Certificates"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1129
+#: documentation/content/en/books/handbook/security/_index.adoc:1138
msgid ""
"To generate a certificate that will be signed by an external CA, issue the "
"following command and input the information requested at the prompts. This "
"input information will be written to the certificate. At the `Common Name` "
"prompt, input the fully qualified name for the system that will use the "
"certificate. If this name does not match the server, the application "
"verifying the certificate will issue a warning to the user, rendering the "
"verification provided by the certificate as useless."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1152
+#: documentation/content/en/books/handbook/security/_index.adoc:1161
#, no-wrap
msgid ""
"# openssl req -new -nodes -out req.pem -keyout cert.key -sha256 -newkey rsa:2048\n"
"Generating a 2048 bit RSA private key\n"
"..................+++\n"
".............................................................+++\n"
"writing new private key to 'cert.key'\n"
"-----\n"
"You are about to be asked to enter information that will be incorporated\n"
"into your certificate request.\n"
"What you are about to enter is what is called a Distinguished Name or a DN.\n"
"There are quite a few fields but you can leave some blank\n"
"For some fields there will be a default value,\n"
"If you enter '.', the field will be left blank.\n"
"-----\n"
"Country Name (2 letter code) [AU]:US\n"
"State or Province Name (full name) [Some-State]:PA\n"
"Locality Name (e.g., city) []:Pittsburgh\n"
"Organization Name (e.g., company) [Internet Widgits Pty Ltd]:My Company\n"
"Organizational Unit Name (e.g., section) []:Systems Administrator\n"
"Common Name (e.g., YOUR name) []:localhost.example.org\n"
"Email Address []:trhodes@FreeBSD.org\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1157
+#: documentation/content/en/books/handbook/security/_index.adoc:1166
#, no-wrap
msgid ""
"Please enter the following 'extra' attributes\n"
"to be sent with your certificate request\n"
"A challenge password []:\n"
"An optional company name []:Another Name\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1161
+#: documentation/content/en/books/handbook/security/_index.adoc:1170
msgid ""
"Other options, such as the expire time and alternate encryption algorithms, "
"are available when creating a certificate. A complete list of options is "
"described in man:openssl[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1166
+#: documentation/content/en/books/handbook/security/_index.adoc:1175
msgid ""
"This command will create two files in the current directory. The "
"certificate request, [.filename]#req.pem#, can be sent to a CA who will "
"validate the entered credentials, sign the request, and return the signed "
"certificate. The second file, [.filename]#cert.key#, is the private key for "
"the certificate and should be stored in a secure location. If this falls in "
"the hands of others, it can be used to impersonate the user or the server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1169
+#: documentation/content/en/books/handbook/security/_index.adoc:1178
msgid ""
"Alternately, if a signature from a CA is not required, a self-signed "
"certificate can be created. First, generate the RSA key:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1178
+#: documentation/content/en/books/handbook/security/_index.adoc:1187
#, no-wrap
msgid ""
"# openssl genrsa -rand -genkey -out cert.key 2048\n"
"0 semi-random bytes loaded\n"
"Generating RSA private key, 2048 bit long modulus\n"
".............................................+++\n"
".................................................................................................................+++\n"
"e is 65537 (0x10001)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1181
+#: documentation/content/en/books/handbook/security/_index.adoc:1190
msgid ""
"Use this key to create a self-signed certificate. Follow the usual prompts "
"for creating a certificate:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1199
+#: documentation/content/en/books/handbook/security/_index.adoc:1208
#, no-wrap
msgid ""
"# openssl req -new -x509 -days 365 -key cert.key -out cert.crt -sha256\n"
"You are about to be asked to enter information that will be incorporated\n"
"into your certificate request.\n"
"What you are about to enter is what is called a Distinguished Name or a DN.\n"
"There are quite a few fields but you can leave some blank\n"
"For some fields there will be a default value,\n"
"If you enter '.', the field will be left blank.\n"
"-----\n"
"Country Name (2 letter code) [AU]:US\n"
"State or Province Name (full name) [Some-State]:PA\n"
"Locality Name (e.g., city) []:Pittsburgh\n"
"Organization Name (e.g., company) [Internet Widgits Pty Ltd]:My Company\n"
"Organizational Unit Name (e.g., section) []:Systems Administrator\n"
"Common Name (e.g. server FQDN or YOUR name) []:localhost.example.org\n"
"Email Address []:trhodes@FreeBSD.org\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1204
+#: documentation/content/en/books/handbook/security/_index.adoc:1213
msgid ""
"This will create two new files in the current directory: a private key file "
"[.filename]#cert.key#, and the certificate itself, [.filename]#cert.crt#. "
"These should be placed in a directory, preferably under [.filename]#/etc/ssl/"
"#, which is readable only by `root`. Permissions of `0700` are appropriate "
"for these files and can be set using `chmod`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1205
+#: documentation/content/en/books/handbook/security/_index.adoc:1214
#, no-wrap
msgid "Using Certificates"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1208
+#: documentation/content/en/books/handbook/security/_index.adoc:1217
msgid ""
"One use for a certificate is to encrypt connections to the Sendmail mail "
"server in order to prevent the use of clear text authentication."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1213
+#: documentation/content/en/books/handbook/security/_index.adoc:1222
msgid ""
"Some mail clients will display an error if the user has not installed a "
"local copy of the certificate. Refer to the documentation included with the "
"software for more information on certificate installation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1217
+#: documentation/content/en/books/handbook/security/_index.adoc:1226
msgid ""
"In FreeBSD 10.0-RELEASE and above, it is possible to create a self-signed "
"certificate for Sendmail automatically. To enable this, add the following "
"lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1223
+#: documentation/content/en/books/handbook/security/_index.adoc:1232
#, no-wrap
msgid ""
"sendmail_enable=\"YES\"\n"
"sendmail_cert_create=\"YES\"\n"
"sendmail_cert_cn=\"localhost.example.org\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1228
+#: documentation/content/en/books/handbook/security/_index.adoc:1237
msgid ""
"This will automatically create a self-signed certificate, [.filename]#/etc/"
"mail/certs/host.cert#, a signing key, [.filename]#/etc/mail/certs/host.key#, "
"and a CA certificate, [.filename]#/etc/mail/certs/cacert.pem#. The "
"certificate will use the `Common Name` specified in `sendmail_cert_cn`. "
"After saving the edits, restart Sendmail:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1232
+#: documentation/content/en/books/handbook/security/_index.adoc:1241
#, no-wrap
msgid "# service sendmail restart\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1236
+#: documentation/content/en/books/handbook/security/_index.adoc:1245
msgid ""
"If all went well, there will be no error messages in [.filename]#/var/log/"
"maillog#. For a simple test, connect to the mail server's listening port "
"using `telnet`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1259
+#: documentation/content/en/books/handbook/security/_index.adoc:1268
#, no-wrap
msgid ""
"# telnet example.com 25\n"
"Trying 192.0.34.166...\n"
"Connected to example.com.\n"
"Escape character is '^]'.\n"
"220 example.com ESMTP Sendmail 8.14.7/8.14.7; Fri, 18 Apr 2014 11:50:32 -0400 (EDT)\n"
"ehlo example.com\n"
"250-example.com Hello example.com [192.0.34.166], pleased to meet you\n"
"250-ENHANCEDSTATUSCODES\n"
"250-PIPELINING\n"
"250-8BITMIME\n"
"250-SIZE\n"
"250-DSN\n"
"250-ETRN\n"
"250-AUTH LOGIN PLAIN\n"
"250-STARTTLS\n"
"250-DELIVERBY\n"
"250 HELP\n"
"quit\n"
"221 2.0.0 example.com closing connection\n"
"Connection closed by foreign host.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1262
+#: documentation/content/en/books/handbook/security/_index.adoc:1271
msgid ""
"If the `STARTTLS` line appears in the output, everything is working "
"correctly."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:1264
+#: documentation/content/en/books/handbook/security/_index.adoc:1273
#, no-wrap
msgid "VPN over IPsec"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1269
+#: documentation/content/en/books/handbook/security/_index.adoc:1278
msgid ""
"Internet Protocol Security (IPsec) is a set of protocols which sit on top of "
"the Internet Protocol (IP) layer. It allows two or more hosts to "
"communicate in a secure manner by authenticating and encrypting each IP "
"packet of a communication session. The FreeBSD IPsec network stack is based "
"on the http://www.kame.net/[http://www.kame.net/] implementation and "
"supports both IPv4 and IPv6 sessions."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1271
+#: documentation/content/en/books/handbook/security/_index.adoc:1280
msgid "IPsec is comprised of the following sub-protocols:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1273
+#: documentation/content/en/books/handbook/security/_index.adoc:1282
msgid ""
"_Encapsulated Security Payload (ESP)_: this protocol protects the IP packet "
"data from third party interference by encrypting the contents using "
"symmetric cryptography algorithms such as Blowfish and 3DES."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1274
+#: documentation/content/en/books/handbook/security/_index.adoc:1283
msgid ""
"_Authentication Header (AH)_: this protocol protects the IP packet header "
"from third party interference and spoofing by computing a cryptographic "
"checksum and hashing the IP packet header fields with a secure hashing "
"function. This is then followed by an additional header that contains the "
"hash, to allow the information in the packet to be authenticated."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1275
+#: documentation/content/en/books/handbook/security/_index.adoc:1284
msgid ""
"_IP Payload Compression Protocol (IPComp_): this protocol tries to increase "
"communication performance by compressing the IP payload in order to reduce "
"the amount of data sent."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1277
+#: documentation/content/en/books/handbook/security/_index.adoc:1286
msgid ""
"These protocols can either be used together or separately, depending on the "
"environment."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1282
+#: documentation/content/en/books/handbook/security/_index.adoc:1291
msgid ""
"IPsec supports two modes of operation. The first mode, _Transport Mode_, "
"protects communications between two hosts. The second mode, _Tunnel Mode_, "
"is used to build virtual tunnels, commonly known as Virtual Private Networks "
"(VPNs). Consult man:ipsec[4] for detailed information on the IPsec "
"subsystem in FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1285
+#: documentation/content/en/books/handbook/security/_index.adoc:1294
msgid ""
"IPsec support is enabled by default on FreeBSD 11 and later. For previous "
"versions of FreeBSD, add these options to a custom kernel configuration file "
"and rebuild the kernel using the instructions in crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1290
+#: documentation/content/en/books/handbook/security/_index.adoc:1299
#, no-wrap
msgid ""
"options IPSEC IP security\n"
"device crypto\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1293
+#: documentation/content/en/books/handbook/security/_index.adoc:1302
msgid ""
"If IPsec debugging support is desired, the following kernel option should "
"also be added:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1297
+#: documentation/content/en/books/handbook/security/_index.adoc:1306
#, no-wrap
msgid "options IPSEC_DEBUG debug for IP security\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1301
+#: documentation/content/en/books/handbook/security/_index.adoc:1310
msgid ""
"This rest of this chapter demonstrates the process of setting up an IPsecVPN "
"between a home network and a corporate network. In the example scenario:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1303
+#: documentation/content/en/books/handbook/security/_index.adoc:1312
msgid ""
"Both sites are connected to the Internet through a gateway that is running "
"FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1304
+#: documentation/content/en/books/handbook/security/_index.adoc:1313
msgid ""
"The gateway on each network has at least one external IP address. In this "
"example, the corporate LAN's external IP address is `172.16.5.4` and the "
"home LAN's external IP address is `192.168.1.12`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1305
+#: documentation/content/en/books/handbook/security/_index.adoc:1314
msgid ""
"The internal addresses of the two networks can be either public or private "
"IP addresses. However, the address space must not overlap. In this example, "
"the corporate LAN's internal IP address is `10.246.38.1` and the home LAN's "
"internal IP address is `10.0.0.5`."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1310
+#: documentation/content/en/books/handbook/security/_index.adoc:1319
#, no-wrap
msgid ""
" corporate home\n"
"10.246.38.1/24 -- 172.16.5.4 <--> 192.168.1.12 -- 10.0.0.5/24\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1312
+#: documentation/content/en/books/handbook/security/_index.adoc:1321
#, no-wrap
msgid "Configuring a VPN on FreeBSD"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1316
+#: documentation/content/en/books/handbook/security/_index.adoc:1325
msgid ""
"To begin, package:security/ipsec-tools[] must be installed from the Ports "
"Collection. This software provides a number of applications which support "
"the configuration."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1319
+#: documentation/content/en/books/handbook/security/_index.adoc:1328
msgid ""
"The next requirement is to create two man:gif[4] pseudo-devices which will "
"be used to tunnel packets and allow both networks to communicate properly. "
"As `root`, run the following command on each gateway:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1325
+#: documentation/content/en/books/handbook/security/_index.adoc:1334
#, no-wrap
msgid ""
"corp-gw# ifconfig gif0 create\n"
"corp-gw# ifconfig gif0 10.246.38.1 10.0.0.5\n"
"corp-gw# ifconfig gif0 tunnel 172.16.5.4 192.168.1.12\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1332
+#: documentation/content/en/books/handbook/security/_index.adoc:1341
#, no-wrap
msgid ""
"home-gw# ifconfig gif0 create\n"
"home-gw# ifconfig gif0 10.0.0.5 10.246.38.1\n"
"home-gw# ifconfig gif0 tunnel 192.168.1.12 172.16.5.4\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1336
+#: documentation/content/en/books/handbook/security/_index.adoc:1345
msgid ""
"Verify the setup on each gateway, using `ifconfig gif0`. Here is the output "
"from the home gateway:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1343
+#: documentation/content/en/books/handbook/security/_index.adoc:1352
#, no-wrap
msgid ""
"gif0: flags=8051 mtu 1280\n"
"tunnel inet 172.16.5.4 --> 192.168.1.12\n"
"inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6\n"
"inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1346
+#: documentation/content/en/books/handbook/security/_index.adoc:1355
msgid "Here is the output from the corporate gateway:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1353
+#: documentation/content/en/books/handbook/security/_index.adoc:1362
#, no-wrap
msgid ""
"gif0: flags=8051 mtu 1280\n"
"tunnel inet 192.168.1.12 --> 172.16.5.4\n"
"inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00\n"
"inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1356
+#: documentation/content/en/books/handbook/security/_index.adoc:1365
msgid ""
"Once complete, both internal IP addresses should be reachable using man:"
"ping[8]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1368
+#: documentation/content/en/books/handbook/security/_index.adoc:1377
#, no-wrap
msgid ""
"home-gw# ping 10.0.0.5\n"
"PING 10.0.0.5 (10.0.0.5): 56 data bytes\n"
"64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms\n"
"64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms\n"
"64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms\n"
"64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms\n"
"--- 10.0.0.5 ping statistics ---\n"
"4 packets transmitted, 4 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1379
+#: documentation/content/en/books/handbook/security/_index.adoc:1388
#, no-wrap
msgid ""
"corp-gw# ping 10.246.38.1\n"
"PING 10.246.38.1 (10.246.38.1): 56 data bytes\n"
"64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms\n"
"64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms\n"
"64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms\n"
"64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms\n"
"64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms\n"
"--- 10.246.38.1 ping statistics ---\n"
"5 packets transmitted, 5 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 ms\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1384
+#: documentation/content/en/books/handbook/security/_index.adoc:1393
msgid ""
"As expected, both sides have the ability to send and receive ICMP packets "
"from the privately configured addresses. Next, both gateways must be told "
"how to route packets in order to correctly send traffic from the networks "
"behind each gateway. The following commands will achieve this goal:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1391
+#: documentation/content/en/books/handbook/security/_index.adoc:1400
#, no-wrap
msgid ""
"corp-gw# route add 10.0.0.0 10.0.0.5 255.255.255.0\n"
"corp-gw# route add net 10.0.0.0: gateway 10.0.0.5\n"
"home-gw# route add 10.246.38.0 10.246.38.1 255.255.255.0\n"
"home-gw# route add host 10.246.38.0: gateway 10.246.38.1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1395
+#: documentation/content/en/books/handbook/security/_index.adoc:1404
msgid ""
"Internal machines should be reachable from each gateway as well as from "
"machines behind the gateways. Again, use man:ping[8] to confirm:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1406
+#: documentation/content/en/books/handbook/security/_index.adoc:1415
#, no-wrap
msgid ""
"corp-gw# ping -c 3 10.0.0.8\n"
"PING 10.0.0.8 (10.0.0.8): 56 data bytes\n"
"64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms\n"
"64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms\n"
"64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms\n"
"--- 10.0.0.8 ping statistics ---\n"
"3 packets transmitted, 3 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1415
+#: documentation/content/en/books/handbook/security/_index.adoc:1424
#, no-wrap
msgid ""
"home-gw# ping -c 3 10.246.38.107\n"
"PING 10.246.38.1 (10.246.38.107): 56 data bytes\n"
"64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms\n"
"64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms\n"
"64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms\n"
"--- 10.246.38.107 ping statistics ---\n"
"3 packets transmitted, 3 packets received, 0% packet loss\n"
"round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 ms\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1420
+#: documentation/content/en/books/handbook/security/_index.adoc:1429
msgid ""
"At this point, traffic is flowing between the networks encapsulated in a gif "
"tunnel but without any encryption. Next, use IPSec to encrypt traffic using "
"pre-shared keys (PSK). Other than the IP addresses, [.filename]#/usr/local/"
"etc/racoon/racoon.conf# on both gateways will be identical and look similar "
"to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1425
+#: documentation/content/en/books/handbook/security/_index.adoc:1434
#, no-wrap
msgid ""
"path pre_shared_key \"/usr/local/etc/racoon/psk.txt\"; #location of pre-shared key file\n"
"log debug;\t#log verbosity setting: set to 'notify' when testing and debugging is complete\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1433
+#: documentation/content/en/books/handbook/security/_index.adoc:1442
#, no-wrap
msgid ""
"padding\t# options are not to be changed\n"
"{\n"
" maximum_length 20;\n"
" randomize off;\n"
" strict_check off;\n"
" exclusive_tail off;\n"
"}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1443
+#: documentation/content/en/books/handbook/security/_index.adoc:1452
#, no-wrap
msgid ""
"timer\t# timing options. change as needed\n"
"{\n"
" counter 5;\n"
" interval 20 sec;\n"
" persend 1;\n"
"# natt_keepalive 15 sec;\n"
" phase1 30 sec;\n"
" phase2 15 sec;\n"
"}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1449
+#: documentation/content/en/books/handbook/security/_index.adoc:1458
#, no-wrap
msgid ""
"listen\t# address [port] that racoon will listen on\n"
"{\n"
" isakmp 172.16.5.4 [500];\n"
" isakmp_natt 172.16.5.4 [4500];\n"
"}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1462
+#: documentation/content/en/books/handbook/security/_index.adoc:1471
#, no-wrap
msgid ""
"remote 192.168.1.12 [500]\n"
"{\n"
" exchange_mode main,aggressive;\n"
" doi ipsec_doi;\n"
" situation identity_only;\n"
" my_identifier address 172.16.5.4;\n"
" peers_identifier address 192.168.1.12;\n"
" lifetime time 8 hour;\n"
" passive off;\n"
" proposal_check obey;\n"
"# nat_traversal off;\n"
" generate_policy off;\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1471
+#: documentation/content/en/books/handbook/security/_index.adoc:1480
#, no-wrap
msgid ""
" proposal {\n"
" encryption_algorithm blowfish;\n"
" hash_algorithm md5;\n"
" authentication_method pre_shared_key;\n"
" lifetime time 30 sec;\n"
" dh_group 1;\n"
" }\n"
"}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1480
+#: documentation/content/en/books/handbook/security/_index.adoc:1489
#, no-wrap
msgid ""
"sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any)\t# address $network/$netmask $type address $network/$netmask $type ( $type being any or esp)\n"
"{\t\t\t\t\t\t\t\t# $network must be the two internal networks you are joining.\n"
" pfs_group 1;\n"
" lifetime time 36000 sec;\n"
" encryption_algorithm blowfish,3des;\n"
" authentication_algorithm hmac_md5,hmac_sha1;\n"
" compression_algorithm deflate;\n"
"}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1483
+#: documentation/content/en/books/handbook/security/_index.adoc:1492
msgid ""
"For descriptions of each available option, refer to the manual page for [."
"filename]#racoon.conf#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1485
+#: documentation/content/en/books/handbook/security/_index.adoc:1494
msgid ""
"The Security Policy Database (SPD) needs to be configured so that FreeBSD "
"and racoon are able to encrypt and decrypt network traffic between the hosts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1488
+#: documentation/content/en/books/handbook/security/_index.adoc:1497
msgid ""
"This can be achieved with a shell script, similar to the following, on the "
"corporate gateway. This file will be used during system initialization and "
"should be saved as [.filename]#/usr/local/etc/racoon/setkey.conf#."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1496
+#: documentation/content/en/books/handbook/security/_index.adoc:1505
#, no-wrap
msgid ""
"flush;\n"
"spdflush;\n"
"# To the home network\n"
"spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use;\n"
"spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1499
+#: documentation/content/en/books/handbook/security/_index.adoc:1508
msgid ""
"Once in place, racoon may be started on both gateways using the following "
"command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1503
+#: documentation/content/en/books/handbook/security/_index.adoc:1512
#, no-wrap
msgid "# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1506
+#: documentation/content/en/books/handbook/security/_index.adoc:1515
msgid "The output should be similar to the following:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1521
+#: documentation/content/en/books/handbook/security/_index.adoc:1530
#, no-wrap
msgid ""
"corp-gw# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf\n"
"Foreground mode.\n"
"2006-01-30 01:35:47: INFO: begin Identity Protection mode.\n"
"2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon\n"
"2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon\n"
"2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a\n"
"2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]\n"
"2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2)\n"
"2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=47784998(0x2d92426)\n"
"2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]\n"
"2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b)\n"
"2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1525
+#: documentation/content/en/books/handbook/security/_index.adoc:1534
msgid ""
"To ensure the tunnel is working properly, switch to another console and use "
"man:tcpdump[1] to view network traffic using the following command. Replace "
"`em0` with the network interface card as required:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1529
+#: documentation/content/en/books/handbook/security/_index.adoc:1538
#, no-wrap
msgid "corp-gw# tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1533
+#: documentation/content/en/books/handbook/security/_index.adoc:1542
msgid ""
"Data similar to the following should appear on the console. If not, there "
"is an issue and debugging the returned data will be required."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1539
+#: documentation/content/en/books/handbook/security/_index.adoc:1548
#, no-wrap
msgid ""
"01:47:32.021683 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xa)\n"
"01:47:33.022442 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xb)\n"
"01:47:34.024218 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xc)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1545
+#: documentation/content/en/books/handbook/security/_index.adoc:1554
msgid ""
"At this point, both networks should be available and seem to be part of the "
"same network. Most likely both networks are protected by a firewall. To "
"allow traffic to flow between them, rules need to be added to pass packets. "
"For the man:ipfw[8] firewall, add the following lines to the firewall "
"configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1552
+#: documentation/content/en/books/handbook/security/_index.adoc:1561
#, no-wrap
msgid ""
"ipfw add 00201 allow log esp from any to any\n"
"ipfw add 00202 allow log ah from any to any\n"
"ipfw add 00203 allow log ipencap from any to any\n"
"ipfw add 00204 allow log udp from any 500 to any\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1557
+#: documentation/content/en/books/handbook/security/_index.adoc:1566
msgid ""
"The rule numbers may need to be altered depending on the current host "
"configuration."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1560
+#: documentation/content/en/books/handbook/security/_index.adoc:1569
msgid ""
"For users of man:pf[4] or man:ipf[8], the following rules should do the "
"trick:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1573
+#: documentation/content/en/books/handbook/security/_index.adoc:1582
#, no-wrap
msgid ""
"pass in quick proto esp from any to any\n"
"pass in quick proto ah from any to any\n"
"pass in quick proto ipencap from any to any\n"
"pass in quick proto udp from any port = 500 to any port = 500\n"
"pass in quick on gif0 from any to any\n"
"pass out quick proto esp from any to any\n"
"pass out quick proto ah from any to any\n"
"pass out quick proto ipencap from any to any\n"
"pass out quick proto udp from any port = 500 to any port = 500\n"
"pass out quick on gif0 from any to any\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1576
+#: documentation/content/en/books/handbook/security/_index.adoc:1585
msgid ""
"Finally, to allow the machine to start support for the VPN during system "
"initialization, add the following lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1583
+#: documentation/content/en/books/handbook/security/_index.adoc:1592
#, no-wrap
msgid ""
"ipsec_enable=\"YES\"\n"
"ipsec_program=\"/usr/local/sbin/setkey\"\n"
"ipsec_file=\"/usr/local/etc/racoon/setkey.conf\" # allows setting up spd policies on boot\n"
"racoon_enable=\"yes\"\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:1586
+#: documentation/content/en/books/handbook/security/_index.adoc:1595
#, no-wrap
msgid "OpenSSH"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1591
+#: documentation/content/en/books/handbook/security/_index.adoc:1600
msgid ""
"OpenSSH is a set of network connectivity tools used to provide secure access "
"to remote machines. Additionally, TCP/IP connections can be tunneled or "
"forwarded securely through SSH connections. OpenSSH encrypts all traffic to "
"effectively eliminate eavesdropping, connection hijacking, and other network-"
"level attacks."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1593
+#: documentation/content/en/books/handbook/security/_index.adoc:1602
msgid ""
"OpenSSH is maintained by the OpenBSD project and is installed by default in "
"FreeBSD."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1597
+#: documentation/content/en/books/handbook/security/_index.adoc:1606
msgid ""
"When data is sent over the network in an unencrypted form, network sniffers "
"anywhere in between the client and server can steal user/password "
"information or data transferred during the session. OpenSSH offers a "
"variety of authentication and encryption methods to prevent this from "
"happening. More information about OpenSSH is available from http://www."
"openssh.com/[http://www.openssh.com/]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1601
+#: documentation/content/en/books/handbook/security/_index.adoc:1610
msgid ""
"This section provides an overview of the built-in client utilities to "
"securely access other systems and securely transfer files from a FreeBSD "
"system. It then describes how to configure a SSH server on a FreeBSD "
"system. More information is available in the man pages mentioned in this "
"chapter."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1602
+#: documentation/content/en/books/handbook/security/_index.adoc:1611
#, no-wrap
msgid "Using the SSH Client Utilities"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1606
+#: documentation/content/en/books/handbook/security/_index.adoc:1615
msgid ""
"To log into a SSH server, use `ssh` and specify a username that exists on "
"that server and the IP address or hostname of the server. If this is the "
"first time a connection has been made to the specified server, the user will "
"be prompted to first verify the server's fingerprint:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1615
+#: documentation/content/en/books/handbook/security/_index.adoc:1624
#, no-wrap
msgid ""
"# ssh user@example.com\n"
"The authenticity of host 'example.com (10.0.0.1)' can't be established.\n"
"ECDSA key fingerprint is 25:cc:73:b5:b3:96:75:3d:56:19:49:d2:5c:1f:91:3b.\n"
"Are you sure you want to continue connecting (yes/no)? yes\n"
"Permanently added 'example.com' (ECDSA) to the list of known hosts.\n"
"Password for user@example.com: user_password\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1621
+#: documentation/content/en/books/handbook/security/_index.adoc:1630
msgid ""
"SSH utilizes a key fingerprint system to verify the authenticity of the "
"server when the client connects. When the user accepts the key's "
"fingerprint by typing `yes` when connecting for the first time, a copy of "
"the key is saved to [.filename]#.ssh/known_hosts# in the user's home "
"directory. Future attempts to login are verified against the saved key and "
"`ssh` will display an alert if the server's key does not match the saved "
"key. If this occurs, the user should first verify why the key has changed "
"before continuing with the connection."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1624
+#: documentation/content/en/books/handbook/security/_index.adoc:1633
msgid ""
"Recent versions of OpenSSH only accept SSHv2 connections. SSH protocol "
"version 1 is obsolete."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1627
+#: documentation/content/en/books/handbook/security/_index.adoc:1636
msgid ""
"Use man:scp[1] to securely copy a file to or from a remote machine. This "
"example copies [.filename]#COPYRIGHT# on the remote system to a file of the "
"same name in the current directory of the local system:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1635
+#: documentation/content/en/books/handbook/security/_index.adoc:1644
#, no-wrap
msgid ""
"# scp user@example.com:/COPYRIGHT COPYRIGHT\n"
"Password for user@example.com: *******\n"
"COPYRIGHT 100% |*****************************| 4735\n"
"00:00\n"
"#\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1638
+#: documentation/content/en/books/handbook/security/_index.adoc:1647
msgid ""
"Since the fingerprint was already verified for this host, the server's key "
"is automatically checked before prompting for the user's password."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1643
+#: documentation/content/en/books/handbook/security/_index.adoc:1652
msgid ""
"The arguments passed to `scp` are similar to `cp`. The file or files to "
"copy is the first argument and the destination to copy to is the second. "
"Since the file is fetched over the network, one or more of the file "
"arguments takes the form `user@host:<path_to_remote_file>`. Be aware when "
"copying directories recursively that `scp` uses `-r`, whereas `cp` uses `-R`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1646
+#: documentation/content/en/books/handbook/security/_index.adoc:1655
msgid ""
"To open an interactive session for copying files, use `sftp`. Refer to man:"
"sftp[1] for a list of available commands while in an `sftp` session."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/security/_index.adoc:1648
+#: documentation/content/en/books/handbook/security/_index.adoc:1657
#, no-wrap
msgid "Key-based Authentication"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1654
+#: documentation/content/en/books/handbook/security/_index.adoc:1663
msgid ""
"Instead of using passwords, a client can be configured to connect to the "
"remote machine using keys. To generate RSA authentication keys, use `ssh-"
"keygen`. To generate a public and private key pair, specify the type of key "
"and follow the prompts. It is recommended to protect the keys with a "
"memorable, but hard to guess passphrase."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1678
+#: documentation/content/en/books/handbook/security/_index.adoc:1687
#, no-wrap
msgid ""
"% ssh-keygen -t rsa\n"
"Generating public/private rsa key pair.\n"
"Enter file in which to save the key (/home/user/.ssh/id_rsa):\n"
"Enter passphrase (empty for no passphrase): <.>\n"
"Enter same passphrase again: <.>\n"
"Your identification has been saved in /home/user/.ssh/id_rsa.\n"
"Your public key has been saved in /home/user/.ssh/id_rsa.pub.\n"
"The key fingerprint is:\n"
"SHA256:54Xm9Uvtv6H4NOo6yjP/YCfODryvUU7yWHzMqeXwhq8 user@host.example.com\n"
"The key's randomart image is:\n"
"+---[RSA 2048]----+\n"
"| |\n"
"| |\n"
"| |\n"
"| . o.. |\n"
"| .S*+*o |\n"
"| . O=Oo . . |\n"
"| = Oo= oo..|\n"
"| .oB.* +.oo.|\n"
"| =OE**.o..=|\n"
"+----[SHA256]-----+\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1681
+#: documentation/content/en/books/handbook/security/_index.adoc:1690
msgid "Type a passphrase here. It can contain spaces and symbols."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1682
+#: documentation/content/en/books/handbook/security/_index.adoc:1691
msgid "Retype the passphrase to verify it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1685
+#: documentation/content/en/books/handbook/security/_index.adoc:1694
msgid ""
"The private key is stored in [.filename]#~/.ssh/id_rsa# and the public key "
"is stored in [.filename]#~/.ssh/id_rsa.pub#. The _public_ key must be "
"copied to [.filename]#~/.ssh/authorized_keys# on the remote machine for key-"
"based authentication to work."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1694
+#: documentation/content/en/books/handbook/security/_index.adoc:1703
msgid ""
"Many users believe that keys are secure by design and will use a key without "
"a passphrase. This is _dangerous_ behavior. An administrator can verify "
"that a key pair is protected by a passphrase by viewing the private key "
"manually. If the private key file contains the word `ENCRYPTED`, the key "
"owner is using a passphrase. In addition, to better secure end users, "
-"`from` may be placed in the public key file. For example, adding `from="
-"\"192.168.10.5\"` in front of the `ssh-rsa` prefix will only allow that "
-"specific user to log in from that IP address."
+"`from` may be placed in the public key file. For example, adding "
+"`from=\"192.168.10.5\"` in front of the `ssh-rsa` prefix will only allow "
+"that specific user to log in from that IP address."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1698
+#: documentation/content/en/books/handbook/security/_index.adoc:1707
msgid ""
"The options and files vary with different versions of OpenSSH. To avoid "
"problems, consult man:ssh-keygen[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1701
+#: documentation/content/en/books/handbook/security/_index.adoc:1710
msgid ""
"If a passphrase is used, the user is prompted for the passphrase each time a "
"connection is made to the server. To load SSH keys into memory and remove "
"the need to type the passphrase each time, use man:ssh-agent[1] and man:ssh-"
"add[1]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1704
+#: documentation/content/en/books/handbook/security/_index.adoc:1713
msgid ""
"Authentication is handled by `ssh-agent`, using the private keys that are "
"loaded into it. `ssh-agent` can be used to launch another application like "
"a shell or a window manager."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1709
+#: documentation/content/en/books/handbook/security/_index.adoc:1718
msgid ""
"To use `ssh-agent` in a shell, start it with a shell as an argument. Add "
"the identity by running `ssh-add` and entering the passphrase for the "
"private key. The user will then be able to `ssh` to any host that has the "
"corresponding public key installed. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1717
+#: documentation/content/en/books/handbook/security/_index.adoc:1726
#, no-wrap
msgid ""
"% ssh-agent csh\n"
"% ssh-add\n"
"Enter passphrase for key '/usr/home/user/.ssh/id_rsa': <.>\n"
"Identity added: /usr/home/user/.ssh/id_rsa (/usr/home/user/.ssh/id_rsa)\n"
"%\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1720
+#: documentation/content/en/books/handbook/security/_index.adoc:1729
msgid "Enter the passphrase for the key."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1724
+#: documentation/content/en/books/handbook/security/_index.adoc:1733
msgid ""
"To use `ssh-agent` in Xorg, add an entry for it in [.filename]#~/.xinitrc#. "
"This provides the `ssh-agent` services to all programs launched in Xorg. An "
"example [.filename]#~/.xinitrc# might look like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1728
+#: documentation/content/en/books/handbook/security/_index.adoc:1737
#, no-wrap
msgid "exec ssh-agent startxfce4\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1732
+#: documentation/content/en/books/handbook/security/_index.adoc:1741
msgid ""
"This launches `ssh-agent`, which in turn launches XFCE, every time Xorg "
"starts. Once Xorg has been restarted so that the changes can take effect, "
"run `ssh-add` to load all of the SSH keys."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/handbook/security/_index.adoc:1734
+#: documentation/content/en/books/handbook/security/_index.adoc:1743
#, no-wrap
msgid "SSH Tunneling"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1737
+#: documentation/content/en/books/handbook/security/_index.adoc:1746
msgid ""
"OpenSSH has the ability to create a tunnel to encapsulate another protocol "
"in an encrypted session."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1739
+#: documentation/content/en/books/handbook/security/_index.adoc:1748
msgid "The following command tells `ssh` to create a tunnel for telnet:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1744
+#: documentation/content/en/books/handbook/security/_index.adoc:1753
#, no-wrap
msgid ""
"% ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com\n"
"%\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1747
+#: documentation/content/en/books/handbook/security/_index.adoc:1756
msgid "This example uses the following options:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/security/_index.adoc:1748
+#: documentation/content/en/books/handbook/security/_index.adoc:1757
#, no-wrap
msgid "`-2`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1750
+#: documentation/content/en/books/handbook/security/_index.adoc:1759
msgid "Forces `ssh` to use version 2 to connect to the server."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/security/_index.adoc:1751
+#: documentation/content/en/books/handbook/security/_index.adoc:1760
#, no-wrap
msgid "`-N`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1754
+#: documentation/content/en/books/handbook/security/_index.adoc:1763
msgid ""
"Indicates no command, or tunnel only. If omitted, `ssh` initiates a normal "
"session."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/security/_index.adoc:1755
+#: documentation/content/en/books/handbook/security/_index.adoc:1764
#, no-wrap
msgid "`-f`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1757
+#: documentation/content/en/books/handbook/security/_index.adoc:1766
msgid "Forces `ssh` to run in the background."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/security/_index.adoc:1758
+#: documentation/content/en/books/handbook/security/_index.adoc:1767
#, no-wrap
msgid "`-L`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1760
+#: documentation/content/en/books/handbook/security/_index.adoc:1769
msgid "Indicates a local tunnel in _localport:remotehost:remoteport_ format."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/handbook/security/_index.adoc:1761
+#: documentation/content/en/books/handbook/security/_index.adoc:1770
#, no-wrap
msgid "`user@foo.example.com`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1763
+#: documentation/content/en/books/handbook/security/_index.adoc:1772
msgid "The login name to use on the specified remote SSH server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1768
+#: documentation/content/en/books/handbook/security/_index.adoc:1777
msgid ""
"An SSH tunnel works by creating a listen socket on `localhost` on the "
"specified `localport`. It then forwards any connections received on "
"`localport` via the SSH connection to the specified `remotehost:"
"remoteport`. In the example, port `5023` on the client is forwarded to port "
"`23` on the remote machine. Since port 23 is used by telnet, this creates "
"an encrypted telnet session through an SSH tunnel."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1770
+#: documentation/content/en/books/handbook/security/_index.adoc:1779
msgid ""
"This method can be used to wrap any number of insecure TCP protocols such as "
"SMTP, POP3, and FTP, as seen in the following examples."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/security/_index.adoc:1771
+#: documentation/content/en/books/handbook/security/_index.adoc:1780
#, no-wrap
msgid "Create a Secure Tunnel for SMTP"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1784
+#: documentation/content/en/books/handbook/security/_index.adoc:1793
#, no-wrap
msgid ""
"% ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com\n"
"user@mailserver.example.com's password: *****\n"
"% telnet localhost 5025\n"
"Trying 127.0.0.1...\n"
"Connected to localhost.\n"
"Escape character is '^]'.\n"
"220 mailserver.example.com ESMTP\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1787
+#: documentation/content/en/books/handbook/security/_index.adoc:1796
msgid ""
"This can be used in conjunction with `ssh-keygen` and additional user "
"accounts to create a more seamless SSH tunneling environment. Keys can be "
"used in place of typing a password, and the tunnels can be run as a separate "
"user."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/security/_index.adoc:1789
+#: documentation/content/en/books/handbook/security/_index.adoc:1798
#, no-wrap
msgid "Secure Access of a POP3 Server"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1795
+#: documentation/content/en/books/handbook/security/_index.adoc:1804
msgid ""
"In this example, there is an SSH server that accepts connections from the "
"outside. On the same network resides a mail server running a POP3 server. "
"To check email in a secure manner, create an SSH connection to the SSH "
"server and tunnel through to the mail server:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1800
+#: documentation/content/en/books/handbook/security/_index.adoc:1809
#, no-wrap
msgid ""
"% ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com\n"
"user@ssh-server.example.com's password: ******\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1804
+#: documentation/content/en/books/handbook/security/_index.adoc:1813
msgid ""
"Once the tunnel is up and running, point the email client to send POP3 "
"requests to `localhost` on port 2110. This connection will be forwarded "
"securely across the tunnel to `mail.example.com`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/security/_index.adoc:1806
+#: documentation/content/en/books/handbook/security/_index.adoc:1815
#, no-wrap
msgid "Bypassing a Firewall"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1812
+#: documentation/content/en/books/handbook/security/_index.adoc:1821
msgid ""
"Some firewalls filter both incoming and outgoing connections. For example, "
"a firewall might limit access from remote machines to ports 22 and 80 to "
"only allow SSH and web surfing. This prevents access to any other service "
"which uses a port other than 22 or 80."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1814
+#: documentation/content/en/books/handbook/security/_index.adoc:1823
msgid ""
"The solution is to create an SSH connection to a machine outside of the "
"network's firewall and use it to tunnel to the desired service:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1819
+#: documentation/content/en/books/handbook/security/_index.adoc:1828
#, no-wrap
msgid ""
"% ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org\n"
"user@unfirewalled-system.example.org's password: *******\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1822
+#: documentation/content/en/books/handbook/security/_index.adoc:1831
msgid ""
"In this example, a streaming Ogg Vorbis client can now be pointed to "
"`localhost` port 8888, which will be forwarded over to `music.example.com` "
"on port 8000, successfully bypassing the firewall."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1824
+#: documentation/content/en/books/handbook/security/_index.adoc:1833
#, no-wrap
msgid "Enabling the SSH Server"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1827
+#: documentation/content/en/books/handbook/security/_index.adoc:1836
msgid ""
"In addition to providing built-in SSH client utilities, a FreeBSD system can "
"be configured as an SSH server, accepting connections from other SSH clients."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1829
+#: documentation/content/en/books/handbook/security/_index.adoc:1838
msgid "To see if sshd is operating, use the man:service[8] command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1833
+#: documentation/content/en/books/handbook/security/_index.adoc:1842
#, no-wrap
msgid "# service sshd status\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1836
+#: documentation/content/en/books/handbook/security/_index.adoc:1845
msgid ""
"If the service is not running, add the following line to [.filename]#/etc/rc."
"conf#."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1840
+#: documentation/content/en/books/handbook/security/_index.adoc:1849
#, no-wrap
msgid "sshd_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1843
+#: documentation/content/en/books/handbook/security/_index.adoc:1852
msgid ""
"This will start sshd, the daemon program for OpenSSH, the next time the "
"system boots. To start it now:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1847
+#: documentation/content/en/books/handbook/security/_index.adoc:1856
#, no-wrap
msgid "# service sshd start\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1851
+#: documentation/content/en/books/handbook/security/_index.adoc:1860
msgid ""
"The first time sshd starts on a FreeBSD system, the system's host keys will "
"be automatically created and the fingerprint will be displayed on the "
"console. Provide users with the fingerprint so that they can verify it the "
"first time they connect to the server."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1853
+#: documentation/content/en/books/handbook/security/_index.adoc:1862
msgid ""
"Refer to man:sshd[8] for the list of available options when starting sshd "
"and a more complete discussion about authentication, the login process, and "
"the various configuration files."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1855
+#: documentation/content/en/books/handbook/security/_index.adoc:1864
msgid ""
"At this point, the sshd should be available to all users with a username and "
"password on the system."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1856
+#: documentation/content/en/books/handbook/security/_index.adoc:1865
#, no-wrap
msgid "SSH Server Security"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1860
+#: documentation/content/en/books/handbook/security/_index.adoc:1869
msgid ""
"While sshd is the most widely used remote administration facility for "
"FreeBSD, brute force and drive by attacks are common to any system exposed "
"to public networks. Several additional parameters are available to prevent "
"the success of these attacks and will be described in this section."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1863
+#: documentation/content/en/books/handbook/security/_index.adoc:1872
msgid ""
"It is a good idea to limit which users can log into the SSH server and from "
"where using the `AllowUsers` keyword in the OpenSSH server configuration "
"file. For example, to only allow `root` to log in from `192.168.1.32`, add "
"this line to [.filename]#/etc/ssh/sshd_config#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1867
+#: documentation/content/en/books/handbook/security/_index.adoc:1876
#, no-wrap
msgid "AllowUsers root@192.168.1.32\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1870
+#: documentation/content/en/books/handbook/security/_index.adoc:1879
msgid ""
"To allow `admin` to log in from anywhere, list that user without specifying "
"an IP address:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1874
+#: documentation/content/en/books/handbook/security/_index.adoc:1883
#, no-wrap
msgid "AllowUsers admin\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1877
+#: documentation/content/en/books/handbook/security/_index.adoc:1886
msgid "Multiple users should be listed on the same line, like so:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1881
+#: documentation/content/en/books/handbook/security/_index.adoc:1890
#, no-wrap
msgid "AllowUsers root@192.168.1.32 admin\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1884
+#: documentation/content/en/books/handbook/security/_index.adoc:1893
msgid ""
"After making changes to [.filename]#/etc/ssh/sshd_config#, tell sshd to "
"reload its configuration file by running:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1888
+#: documentation/content/en/books/handbook/security/_index.adoc:1897
#, no-wrap
msgid "# service sshd reload\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1898
+#: documentation/content/en/books/handbook/security/_index.adoc:1907
msgid ""
"When this keyword is used, it is important to list each user that needs to "
"log into this machine. Any user that is not specified in that line will be "
"locked out. Also, the keywords used in the OpenSSH server configuration "
"file are case-sensitive. If the keyword is not spelled correctly, including "
"its case, it will be ignored. Always test changes to this file to make sure "
"that the edits are working as expected. Refer to man:sshd_config[5] to "
"verify the spelling and use of the available keywords."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1904
+#: documentation/content/en/books/handbook/security/_index.adoc:1913
msgid ""
"In addition, users may be forced to use two factor authentication via the "
"use of a public and private key. When required, the user may generate a key "
"pair through the use of man:ssh-keygen[1] and send the administrator the "
"public key. This key file will be placed in the [."
"filename]#authorized_keys# as described above in the client section. To "
"force the users to use keys only, the following option may be configured:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1908
+#: documentation/content/en/books/handbook/security/_index.adoc:1917
#, no-wrap
msgid "AuthenticationMethods publickey\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1916
+#: documentation/content/en/books/handbook/security/_index.adoc:1925
msgid ""
"Do not confuse [.filename]#/etc/ssh/sshd_config# with [.filename]#/etc/ssh/"
"ssh_config# (note the extra `d` in the first filename). The first file "
"configures the server and the second file configures the client. Refer to "
"man:ssh_config[5] for a listing of the available client settings."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:1919
+#: documentation/content/en/books/handbook/security/_index.adoc:1928
#, no-wrap
msgid "Access Control Lists"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1923
+#: documentation/content/en/books/handbook/security/_index.adoc:1932
msgid ""
"Access Control Lists (ACLs) extend the standard UNIX(R) permission model in "
"a POSIX(R).1e compatible way. This permits an administrator to take "
"advantage of a more fine-grained permissions model."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1926
+#: documentation/content/en/books/handbook/security/_index.adoc:1935
msgid ""
"The FreeBSD [.filename]#GENERIC# kernel provides ACL support for UFS file "
"systems. Users who prefer to compile a custom kernel must include the "
"following option in their custom kernel configuration file:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1930
+#: documentation/content/en/books/handbook/security/_index.adoc:1939
#, no-wrap
msgid "options UFS_ACL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1934
+#: documentation/content/en/books/handbook/security/_index.adoc:1943
msgid ""
"If this option is not compiled in, a warning message will be displayed when "
"attempting to mount a file system with ACL support. ACLs rely on extended "
"attributes which are natively supported in UFS2."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1936
+#: documentation/content/en/books/handbook/security/_index.adoc:1945
msgid ""
"This chapter describes how to enable ACL support and provides some usage "
"examples."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1937
+#: documentation/content/en/books/handbook/security/_index.adoc:1946
#, no-wrap
msgid "Enabling ACL Support"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1942
+#: documentation/content/en/books/handbook/security/_index.adoc:1951
msgid ""
"ACLs are enabled by the mount-time administrative flag, `acls`, which may be "
"added to [.filename]#/etc/fstab#. The mount-time flag can also be "
"automatically set in a persistent manner using man:tunefs[8] to modify a "
"superblock ACLs flag in the file system header. In general, it is preferred "
"to use the superblock flag for several reasons:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1944
+#: documentation/content/en/books/handbook/security/_index.adoc:1953
msgid ""
"The superblock flag cannot be changed by a remount using `mount -u` as it "
"requires a complete `umount` and fresh `mount`. This means that ACLs cannot "
"be enabled on the root file system after boot. It also means that ACL "
"support on a file system cannot be changed while the system is in use."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1945
+#: documentation/content/en/books/handbook/security/_index.adoc:1954
msgid ""
"Setting the superblock flag causes the file system to always be mounted with "
"ACLs enabled, even if there is not an [.filename]#fstab# entry or if the "
"devices re-order. This prevents accidental mounting of the file system "
"without ACL support."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1950
+#: documentation/content/en/books/handbook/security/_index.adoc:1959
msgid ""
"It is desirable to discourage accidental mounting without ACLs enabled "
"because nasty things can happen if ACLs are enabled, then disabled, then re-"
"enabled without flushing the extended attributes. In general, once ACLs are "
"enabled on a file system, they should not be disabled, as the resulting file "
"protections may not be compatible with those intended by the users of the "
"system, and re-enabling ACLs may re-attach the previous ACLs to files that "
"have since had their permissions changed, resulting in unpredictable "
"behavior."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1953
+#: documentation/content/en/books/handbook/security/_index.adoc:1962
msgid ""
"File systems with ACLs enabled will show a plus (`+`) sign in their "
"permission settings:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1961
+#: documentation/content/en/books/handbook/security/_index.adoc:1970
#, no-wrap
msgid ""
"drwx------ 2 robert robert 512 Dec 27 11:54 private\n"
"drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1\n"
"drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2\n"
"drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3\n"
"drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1964
+#: documentation/content/en/books/handbook/security/_index.adoc:1973
msgid ""
"In this example, [.filename]#directory1#, [.filename]#directory2#, and [."
"filename]#directory3# are all taking advantage of ACLs, whereas [."
"filename]#private# and [.filename]#public_html# are not."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:1965
+#: documentation/content/en/books/handbook/security/_index.adoc:1974
#, no-wrap
msgid "Using ACLs"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1969
+#: documentation/content/en/books/handbook/security/_index.adoc:1978
msgid ""
"File system ACLs can be viewed using `getfacl`. For instance, to view the "
"ACL settings on [.filename]#test#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1979
+#: documentation/content/en/books/handbook/security/_index.adoc:1988
#, no-wrap
msgid ""
"% getfacl test\n"
"\t#file:test\n"
"\t#owner:1001\n"
"\t#group:1001\n"
"\tuser::rw-\n"
"\tgroup::r--\n"
"\tother::r--\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1984
+#: documentation/content/en/books/handbook/security/_index.adoc:1993
msgid ""
"To change the ACL settings on this file, use `setfacl`. To remove all of "
"the currently defined ACLs from a file or file system, include `-k`. "
"However, the preferred method is to use `-b` as it leaves the basic fields "
"required for ACLs to work."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1988
+#: documentation/content/en/books/handbook/security/_index.adoc:1997
#, no-wrap
msgid "% setfacl -k test\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:1991
+#: documentation/content/en/books/handbook/security/_index.adoc:2000
msgid "To modify the default ACL entries, use `-m`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:1995
+#: documentation/content/en/books/handbook/security/_index.adoc:2004
#, no-wrap
msgid "% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2000
+#: documentation/content/en/books/handbook/security/_index.adoc:2009
msgid ""
"In this example, there were no pre-defined entries, as they were removed by "
"the previous command. This command restores the default options and assigns "
"the options listed. If a user or group is added which does not exist on the "
"system, an `Invalid argument` error will be displayed."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2002
+#: documentation/content/en/books/handbook/security/_index.adoc:2011
msgid ""
"Refer to man:getfacl[1] and man:setfacl[1] for more information about the "
"options available for these commands."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2004
+#: documentation/content/en/books/handbook/security/_index.adoc:2013
#, no-wrap
msgid "Monitoring Third Party Security Issues"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2008
+#: documentation/content/en/books/handbook/security/_index.adoc:2017
msgid ""
"In recent years, the security world has made many improvements to how "
"vulnerability assessment is handled. The threat of system intrusion "
"increases as third party utilities are installed and configured for "
"virtually any operating system available today."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2013
+#: documentation/content/en/books/handbook/security/_index.adoc:2022
msgid ""
"Vulnerability assessment is a key factor in security. While FreeBSD "
"releases advisories for the base system, doing so for every third party "
"utility is beyond the FreeBSD Project's capability. There is a way to "
"mitigate third party vulnerabilities and warn administrators of known "
"security issues. A FreeBSD add on utility known as pkg includes options "
"explicitly for this purpose."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2016
+#: documentation/content/en/books/handbook/security/_index.adoc:2025
msgid ""
"pkg polls a database for security issues. The database is updated and "
"maintained by the FreeBSD Security Team and ports developers."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2018
+#: documentation/content/en/books/handbook/security/_index.adoc:2027
msgid ""
"Please refer to crossref:ports[pkgng-intro,instructions] for installing pkg."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2022
+#: documentation/content/en/books/handbook/security/_index.adoc:2031
msgid ""
"Installation provides man:periodic[8] configuration files for maintaining "
"the pkg audit database, and provides a programmatic method of keeping it "
"updated. This functionality is enabled if "
"`daily_status_security_pkgaudit_enable` is set to `YES` in man:periodic."
"conf[5]. Ensure that daily security run emails, which are sent to "
"``root``'s email account, are being read."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2024
+#: documentation/content/en/books/handbook/security/_index.adoc:2033
msgid ""
"After installation, and to audit third party utilities as part of the Ports "
"Collection at any time, an administrator may choose to update the database "
"and view known vulnerabilities of installed packages by invoking:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2028
+#: documentation/content/en/books/handbook/security/_index.adoc:2037
#, no-wrap
msgid "# pkg audit -F\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2031
+#: documentation/content/en/books/handbook/security/_index.adoc:2040
msgid ""
"pkg displays messages any published vulnerabilities in installed packages:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2037
+#: documentation/content/en/books/handbook/security/_index.adoc:2046
#, no-wrap
msgid ""
"Affected package: cups-base-1.1.22.0_1\n"
"Type of problem: cups-base -- HPGL buffer overflow vulnerability.\n"
"Reference: <https://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2039
+#: documentation/content/en/books/handbook/security/_index.adoc:2048
#, no-wrap
msgid "1 problem(s) in your installed packages found.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2041
+#: documentation/content/en/books/handbook/security/_index.adoc:2050
#, no-wrap
msgid "You are advised to update or deinstall the affected package(s) immediately.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2045
+#: documentation/content/en/books/handbook/security/_index.adoc:2054
msgid ""
"By pointing a web browser to the displayed URL, an administrator may obtain "
"more information about the vulnerability. This will include the versions "
"affected, by FreeBSD port version, along with other web sites which may "
"contain security advisories."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2047
+#: documentation/content/en/books/handbook/security/_index.adoc:2056
msgid ""
"pkg is a powerful utility and is extremely useful when coupled with package:"
"ports-mgmt/portmaster[]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2049
+#: documentation/content/en/books/handbook/security/_index.adoc:2058
#, no-wrap
msgid "FreeBSD Security Advisories"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2053
+#: documentation/content/en/books/handbook/security/_index.adoc:2062
msgid ""
"Like many producers of quality operating systems, the FreeBSD Project has a "
"security team which is responsible for determining the End-of-Life (EoL) "
"date for each FreeBSD release and to provide security updates for supported "
"releases which have not yet reached their EoL. More information about the "
"FreeBSD security team and the supported releases is available on the link:"
"https://www.FreeBSD.org/security[FreeBSD security page]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2058
+#: documentation/content/en/books/handbook/security/_index.adoc:2067
msgid ""
"One task of the security team is to respond to reported security "
"vulnerabilities in the FreeBSD operating system. Once a vulnerability is "
"confirmed, the security team verifies the steps necessary to fix the "
"vulnerability and updates the source code with the fix. It then publishes "
"the details as a \"Security Advisory\". Security advisories are published "
"on the link:https://www.FreeBSD.org/security/advisories/[FreeBSD website] "
"and mailed to the {freebsd-security-notifications}, {freebsd-security}, and "
"{freebsd-announce} mailing lists."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2060
+#: documentation/content/en/books/handbook/security/_index.adoc:2069
msgid "This section describes the format of a FreeBSD security advisory."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:2061
+#: documentation/content/en/books/handbook/security/_index.adoc:2070
#, no-wrap
msgid "Format of a Security Advisory"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2064
+#: documentation/content/en/books/handbook/security/_index.adoc:2073
msgid "Here is an example of a FreeBSD security advisory:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2070
+#: documentation/content/en/books/handbook/security/_index.adoc:2079
#, no-wrap
msgid ""
"=============================================================================\n"
"-----BEGIN PGP SIGNED MESSAGE-----\n"
"Hash: SHA512\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2074
+#: documentation/content/en/books/handbook/security/_index.adoc:2083
#, no-wrap
msgid ""
"=============================================================================\n"
"FreeBSD-SA-14:04.bind Security Advisory\n"
" The FreeBSD Project\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2076
+#: documentation/content/en/books/handbook/security/_index.adoc:2085
#, no-wrap
msgid "Topic: BIND remote denial of service vulnerability\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2089
+#: documentation/content/en/books/handbook/security/_index.adoc:2098
#, no-wrap
msgid ""
"Category: contrib\n"
"Module: bind\n"
"Announced: 2014-01-14\n"
"Credits: ISC\n"
"Affects: FreeBSD 8.x and FreeBSD 9.x\n"
"Corrected: 2014-01-14 19:38:37 UTC (stable/9, 9.2-STABLE)\n"
" 2014-01-14 19:42:28 UTC (releng/9.2, 9.2-RELEASE-p3)\n"
" 2014-01-14 19:42:28 UTC (releng/9.1, 9.1-RELEASE-p10)\n"
" 2014-01-14 19:38:37 UTC (stable/8, 8.4-STABLE)\n"
" 2014-01-14 19:42:28 UTC (releng/8.4, 8.4-RELEASE-p7)\n"
" 2014-01-14 19:42:28 UTC (releng/8.3, 8.3-RELEASE-p14)\n"
"CVE Name: CVE-2014-0591\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2093
+#: documentation/content/en/books/handbook/security/_index.adoc:2102
#, no-wrap
msgid ""
"For general information regarding FreeBSD Security Advisories,\n"
"including descriptions of the fields above, security branches, and the\n"
"following sections, please visit <URL:http://security.FreeBSD.org/>.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2095
+#: documentation/content/en/books/handbook/security/_index.adoc:2104
#, no-wrap
msgid "I. Background\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2098
+#: documentation/content/en/books/handbook/security/_index.adoc:2107
#, no-wrap
msgid ""
"BIND 9 is an implementation of the Domain Name System (DNS) protocols.\n"
"The named(8) daemon is an Internet Domain Name Server.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2100
+#: documentation/content/en/books/handbook/security/_index.adoc:2109
#, no-wrap
msgid "II. Problem Description\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2105
+#: documentation/content/en/books/handbook/security/_index.adoc:2114
#, no-wrap
msgid ""
"Because of a defect in handling queries for NSEC3-signed zones, BIND can\n"
"crash with an \"INSIST\" failure in name.c when processing queries possessing\n"
"certain properties. This issue only affects authoritative nameservers with\n"
"at least one NSEC3-signed zone. Recursive-only servers are not at risk.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2107
+#: documentation/content/en/books/handbook/security/_index.adoc:2116
#, no-wrap
msgid "III. Impact\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2110
+#: documentation/content/en/books/handbook/security/_index.adoc:2119
#, no-wrap
msgid ""
"An attacker who can send a specially crafted query could cause named(8)\n"
"to crash, resulting in a denial of service.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2112
+#: documentation/content/en/books/handbook/security/_index.adoc:2121
#, no-wrap
msgid "IV. Workaround\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2115
+#: documentation/content/en/books/handbook/security/_index.adoc:2124
#, no-wrap
msgid ""
"No workaround is available, but systems not running authoritative DNS service\n"
"with at least one NSEC3-signed zone using named(8) are not vulnerable.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2117
+#: documentation/content/en/books/handbook/security/_index.adoc:2126
#, no-wrap
msgid "V. Solution\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2119
+#: documentation/content/en/books/handbook/security/_index.adoc:2128
#, no-wrap
msgid "Perform one of the following:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2122
+#: documentation/content/en/books/handbook/security/_index.adoc:2131
#, no-wrap
msgid ""
"1) Upgrade your vulnerable system to a supported FreeBSD stable or\n"
"release / security branch (releng) dated after the correction date.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2124
+#: documentation/content/en/books/handbook/security/_index.adoc:2133
#, no-wrap
msgid "2) To update your vulnerable system via a source code patch:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2127
+#: documentation/content/en/books/handbook/security/_index.adoc:2136
#, no-wrap
msgid ""
"The following patches have been verified to apply to the applicable\n"
"FreeBSD release branches.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2130
+#: documentation/content/en/books/handbook/security/_index.adoc:2139
#, no-wrap
msgid ""
"a) Download the relevant patch from the location below, and verify the\n"
"detached PGP signature using your PGP utility.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2135
+#: documentation/content/en/books/handbook/security/_index.adoc:2144
#, no-wrap
msgid ""
"[FreeBSD 8.3, 8.4, 9.1, 9.2-RELEASE and 8.4-STABLE]\n"
"# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch\n"
"# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch.asc\n"
"# gpg --verify bind-release.patch.asc\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2140
+#: documentation/content/en/books/handbook/security/_index.adoc:2149
#, no-wrap
msgid ""
"[FreeBSD 9.2-STABLE]\n"
"# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch\n"
"# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch.asc\n"
"# gpg --verify bind-stable-9.patch.asc\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2142
+#: documentation/content/en/books/handbook/security/_index.adoc:2151
#, no-wrap
msgid "b) Execute the following commands as root:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2145
+#: documentation/content/en/books/handbook/security/_index.adoc:2154
#, no-wrap
msgid ""
"# cd /usr/src\n"
"# patch < /path/to/patch\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2148
+#: documentation/content/en/books/handbook/security/_index.adoc:2157
#, no-wrap
msgid ""
"Recompile the operating system using buildworld and installworld as\n"
"described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2150
+#: documentation/content/en/books/handbook/security/_index.adoc:2159
#, no-wrap
msgid "Restart the applicable daemons, or reboot the system.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2152
+#: documentation/content/en/books/handbook/security/_index.adoc:2161
#, no-wrap
msgid "3) To update your vulnerable system via a binary patch:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2155
+#: documentation/content/en/books/handbook/security/_index.adoc:2164
#, no-wrap
msgid ""
"Systems running a RELEASE version of FreeBSD on the i386 or amd64\n"
"platforms can be updated via the man:freebsd-update[8] utility:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2158
+#: documentation/content/en/books/handbook/security/_index.adoc:2167
#, no-wrap
msgid ""
"# freebsd-update fetch\n"
"# freebsd-update install\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2160
+#: documentation/content/en/books/handbook/security/_index.adoc:2169
#, no-wrap
msgid "VI. Correction details\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2163
+#: documentation/content/en/books/handbook/security/_index.adoc:2172
#, no-wrap
msgid ""
"The following list contains the correction revision numbers for each\n"
"affected branch.\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2173
+#: documentation/content/en/books/handbook/security/_index.adoc:2182
#, no-wrap
msgid ""
"Branch/path Revision\n"
"- -------------------------------------------------------------------------\n"
"stable/8/ r260646\n"
"releng/8.3/ r260647\n"
"releng/8.4/ r260647\n"
"stable/9/ r260646\n"
"releng/9.1/ r260647\n"
"releng/9.2/ r260647\n"
"- -------------------------------------------------------------------------\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2177
+#: documentation/content/en/books/handbook/security/_index.adoc:2186
#, no-wrap
msgid ""
"To see which files were modified by a particular revision, run the\n"
"following command, replacing NNNNNN with the revision number, on a\n"
"machine with Subversion installed:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2179
+#: documentation/content/en/books/handbook/security/_index.adoc:2188
#, no-wrap
msgid "# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2181
+#: documentation/content/en/books/handbook/security/_index.adoc:2190
#, no-wrap
msgid "Or visit the following URL, replacing NNNNNN with the revision number:\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2183
+#: documentation/content/en/books/handbook/security/_index.adoc:2192
#, no-wrap
msgid "<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2185
+#: documentation/content/en/books/handbook/security/_index.adoc:2194
#, no-wrap
msgid "VII. References\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2187
+#: documentation/content/en/books/handbook/security/_index.adoc:2196
#, no-wrap
msgid "<URL:https://kb.isc.org/article/AA-01078>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2189
+#: documentation/content/en/books/handbook/security/_index.adoc:2198
#, no-wrap
msgid "<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0591>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2193
+#: documentation/content/en/books/handbook/security/_index.adoc:2202
#, no-wrap
msgid ""
"The latest revision of this advisory is available at\n"
"<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:04.bind.asc>\n"
"-----BEGIN PGP SIGNATURE-----\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2208
+#: documentation/content/en/books/handbook/security/_index.adoc:2217
#, no-wrap
msgid ""
"iQIcBAEBCgAGBQJS1ZTYAAoJEO1n7NZdz2rnOvQP/2/68/s9Cu35PmqNtSZVVxVG\n"
"ZSQP5EGWx/lramNf9566iKxOrLRMq/h3XWcC4goVd+gZFrvITJSVOWSa7ntDQ7TO\n"
"XcinfRZ/iyiJbs/Rg2wLHc/t5oVSyeouyccqODYFbOwOlk35JjOTMUG1YcX+Zasg\n"
"ax8RV+7Zt1QSBkMlOz/myBLXUjlTZ3Xg2FXVsfFQW5/g2CjuHpRSFx1bVNX6ysoG\n"
"9DT58EQcYxIS8WfkHRbbXKh9I1nSfZ7/Hky/kTafRdRMrjAgbqFgHkYTYsBZeav5\n"
"fYWKGQRJulYfeZQ90yMTvlpF42DjCC3uJYamJnwDIu8OhS1WRBI8fQfr9DRzmRua\n"
"OK3BK9hUiScDZOJB6OqeVzUTfe7MAA4/UwrDtTYQ+PqAenv1PK8DZqwXyxA9ThHb\n"
"zKO3OwuKOVHJnKvpOcr+eNwo7jbnHlis0oBksj/mrq2P9m2ueF9gzCiq5Ri5Syag\n"
"Wssb1HUoMGwqU0roS8+pRpNC8YgsWpsttvUWSZ8u6Vj/FLeHpiV3mYXPVMaKRhVm\n"
"067BA2uj4Th1JKtGleox+Em0R7OFbCc/9aWC67wiqI6KRyit9pYiF3npph+7D5Eq\n"
"7zPsUdDd+qc+UTiLp3liCRp5w6484wWdhZO6wRtmUgxGjNkxFoNnX8CitzF8AaqO\n"
"UWWemqWuz3lAZuORQ9KX\n"
"=OQzQ\n"
"-----END PGP SIGNATURE-----\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2211
+#: documentation/content/en/books/handbook/security/_index.adoc:2220
msgid "Every security advisory uses the following format:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2213
+#: documentation/content/en/books/handbook/security/_index.adoc:2222
msgid ""
"Each security advisory is signed by the PGP key of the Security Officer. The "
"public key for the Security Officer can be verified at crossref:"
"pgpkeys[pgpkeys,OpenPGP Keys]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2214
+#: documentation/content/en/books/handbook/security/_index.adoc:2223
msgid ""
"The name of the security advisory always begins with `FreeBSD-SA-` (for "
"FreeBSD Security Advisory), followed by the year in two digit format (`14:"
"`), followed by the advisory number for that year (`04.`), followed by the "
"name of the affected application or subsystem (`bind`). The advisory shown "
"here is the fourth advisory for 2014 and it affects BIND."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2215
+#: documentation/content/en/books/handbook/security/_index.adoc:2224
msgid "The `Topic` field summarizes the vulnerability."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2216
+#: documentation/content/en/books/handbook/security/_index.adoc:2225
msgid ""
"The `Category` refers to the affected part of the system which may be one of "
"`core`, `contrib`, or `ports`. The `core` category means that the "
"vulnerability affects a core component of the FreeBSD operating system. The "
"`contrib` category means that the vulnerability affects software included "
"with FreeBSD, such as BIND. The `ports` category indicates that the "
"vulnerability affects software available through the Ports Collection."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2217
+#: documentation/content/en/books/handbook/security/_index.adoc:2226
msgid ""
"The `Module` field refers to the component location. In this example, the "
"`bind` module is affected; therefore, this vulnerability affects an "
"application installed with the operating system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2218
+#: documentation/content/en/books/handbook/security/_index.adoc:2227
msgid ""
"The `Announced` field reflects the date the security advisory was published. "
"This means that the security team has verified that the problem exists and "
"that a patch has been committed to the FreeBSD source code repository."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2219
+#: documentation/content/en/books/handbook/security/_index.adoc:2228
msgid ""
"The `Credits` field gives credit to the individual or organization who "
"noticed the vulnerability and reported it."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2220
+#: documentation/content/en/books/handbook/security/_index.adoc:2229
msgid ""
"The `Affects` field explains which releases of FreeBSD are affected by this "
"vulnerability."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2221
+#: documentation/content/en/books/handbook/security/_index.adoc:2230
msgid ""
"The `Corrected` field indicates the date, time, time offset, and releases "
"that were corrected. The section in parentheses shows each branch for which "
"the fix has been merged, and the version number of the corresponding release "
"from that branch. The release identifier itself includes the version number "
"and, if appropriate, the patch level. The patch level is the letter `p` "
"followed by a number, indicating the sequence number of the patch, allowing "
"users to track which patches have already been applied to the system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2222
+#: documentation/content/en/books/handbook/security/_index.adoc:2231
msgid ""
"The `CVE Name` field lists the advisory number, if one exists, in the public "
"http://cve.mitre.org[cve.mitre.org] security vulnerabilities database."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2223
+#: documentation/content/en/books/handbook/security/_index.adoc:2232
msgid "The `Background` field provides a description of the affected module."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2224
+#: documentation/content/en/books/handbook/security/_index.adoc:2233
msgid ""
"The `Problem Description` field explains the vulnerability. This can include "
"information about the flawed code and how the utility could be maliciously "
"used."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2225
+#: documentation/content/en/books/handbook/security/_index.adoc:2234
msgid ""
"The `Impact` field describes what type of impact the problem could have on a "
"system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2226
+#: documentation/content/en/books/handbook/security/_index.adoc:2235
msgid ""
"The `Workaround` field indicates if a workaround is available to system "
"administrators who cannot immediately patch the system ."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2227
+#: documentation/content/en/books/handbook/security/_index.adoc:2236
msgid ""
"The `Solution` field provides the instructions for patching the affected "
"system. This is a step by step tested and verified method for getting a "
"system patched and working securely."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2228
+#: documentation/content/en/books/handbook/security/_index.adoc:2237
msgid ""
"The `Correction Details` field displays each affected Subversion branch with "
"the revision number that contains the corrected code."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2229
+#: documentation/content/en/books/handbook/security/_index.adoc:2238
msgid ""
"The `References` field offers sources of additional information regarding "
"the vulnerability."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2231
+#: documentation/content/en/books/handbook/security/_index.adoc:2240
#, no-wrap
msgid "Process Accounting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2234
+#: documentation/content/en/books/handbook/security/_index.adoc:2243
msgid ""
"Process accounting is a security method in which an administrator may keep "
"track of system resources used and their allocation among users, provide for "
"system monitoring, and minimally track a user's commands."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2239
+#: documentation/content/en/books/handbook/security/_index.adoc:2248
msgid ""
"Process accounting has both positive and negative points. One of the "
"positives is that an intrusion may be narrowed down to the point of entry. "
"A negative is the amount of logs generated by process accounting, and the "
"disk space they may require. This section walks an administrator through "
"the basics of process accounting."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2243
+#: documentation/content/en/books/handbook/security/_index.adoc:2252
msgid ""
"If more fine-grained accounting is needed, refer to crossref:audit[audit,"
"Security Event Auditing]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:2245
+#: documentation/content/en/books/handbook/security/_index.adoc:2254
#, no-wrap
msgid "Enabling and Utilizing Process Accounting"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2248
+#: documentation/content/en/books/handbook/security/_index.adoc:2257
msgid ""
"Before using process accounting, it must be enabled using the following "
"commands:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2253
+#: documentation/content/en/books/handbook/security/_index.adoc:2262
#, no-wrap
msgid ""
"# sysrc accounting_enable=yes\n"
"# service accounting start\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2259
+#: documentation/content/en/books/handbook/security/_index.adoc:2268
msgid ""
"The accounting information is stored in files located in [.filename]#/var/"
"account#, which is automatically created, if necessary, the first time the "
"accounting service starts. These files contain sensitive information, "
"including all the commands issued by all users. Write access to the files "
"is limited to `root`, and read access is limited to `root` and members of "
"the `wheel` group. To also prevent members of `wheel` from reading the "
"files, change the mode of the [.filename]#/var/account# directory to allow "
"access only by `root`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2264
+#: documentation/content/en/books/handbook/security/_index.adoc:2273
msgid ""
"Once enabled, accounting will begin to track information such as CPU "
"statistics and executed commands. All accounting logs are in a non-human "
"readable format which can be viewed using `sa`. If issued without any "
"options, `sa` prints information relating to the number of per-user calls, "
"the total elapsed time in minutes, total CPU and user time in minutes, and "
"the average number of I/O operations. Refer to man:sa[8] for the list of "
"available options which control the output."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2267
+#: documentation/content/en/books/handbook/security/_index.adoc:2276
msgid ""
"To display the commands issued by users, use `lastcomm`. For example, this "
"command prints out all usage of `ls` by `trhodes` on the `ttyp1` terminal:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2271
+#: documentation/content/en/books/handbook/security/_index.adoc:2280
#, no-wrap
msgid "# lastcomm ls trhodes ttyp1\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2274
+#: documentation/content/en/books/handbook/security/_index.adoc:2283
msgid ""
"Many other useful options exist and are explained in man:lastcomm[1], man:"
"acct[5], and man:sa[8]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2276
+#: documentation/content/en/books/handbook/security/_index.adoc:2285
#, no-wrap
msgid "Resource Limits"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2281
+#: documentation/content/en/books/handbook/security/_index.adoc:2290
msgid ""
"FreeBSD provides several methods for an administrator to limit the amount of "
"system resources an individual may use. Disk quotas limit the amount of "
"disk space available to users. Quotas are discussed in crossref:"
"disks[quotas,\"Disk Quotas\"]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2286
+#: documentation/content/en/books/handbook/security/_index.adoc:2295
msgid ""
"Limits to other resources, such as CPU and memory, can be set using either a "
"flat file or a command to configure a resource limits database. The "
"traditional method defines login classes by editing [.filename]#/etc/login."
"conf#. While this method is still supported, any changes require a multi-"
"step process of editing this file, rebuilding the resource database, making "
"necessary changes to [.filename]#/etc/master.passwd#, and rebuilding the "
"password database. This can become time consuming, depending upon the "
"number of users to configure."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2289
+#: documentation/content/en/books/handbook/security/_index.adoc:2298
msgid ""
"`rctl` can be used to provide a more fine-grained method for controlling "
"resource limits. This command supports more than user limits as it can also "
"be used to set resource constraints on processes and jails."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2291
+#: documentation/content/en/books/handbook/security/_index.adoc:2300
msgid ""
"This section demonstrates both methods for controlling resources, beginning "
"with the traditional method."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:2293
+#: documentation/content/en/books/handbook/security/_index.adoc:2302
#, no-wrap
msgid "Configuring Login Classes"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2299
+#: documentation/content/en/books/handbook/security/_index.adoc:2308
msgid ""
"In the traditional method, login classes and the resource limits to apply to "
"a login class are defined in [.filename]#/etc/login.conf#. Each user "
"account can be assigned to a login class, where `default` is the default "
"login class. Each login class has a set of login capabilities associated "
"with it. A login capability is a `_name_=_value_` pair, where _name_ is a "
"well-known identifier and _value_ is an arbitrary string which is processed "
"accordingly depending on the _name_."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2303
+#: documentation/content/en/books/handbook/security/_index.adoc:2312
msgid ""
"Whenever [.filename]#/etc/login.conf# is edited, the [.filename]#/etc/login."
"conf.db# must be updated by executing the following command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2307
+#: documentation/content/en/books/handbook/security/_index.adoc:2316
#, no-wrap
msgid "# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2316
+#: documentation/content/en/books/handbook/security/_index.adoc:2325
msgid ""
"Resource limits differ from the default login capabilities in two ways. "
"First, for every limit, there is a _soft_ and _hard_ limit. A soft limit "
"may be adjusted by the user or application, but may not be set higher than "
"the hard limit. The hard limit may be lowered by the user, but can only be "
"raised by the superuser. Second, most resource limits apply per process to "
"a specific user."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2319
+#: documentation/content/en/books/handbook/security/_index.adoc:2328
msgid ""
"<<resource-limits>> lists the most commonly used resource limits. All of "
"the available resource limits and capabilities are described in detail in "
"man:login.conf[5]."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/handbook/security/_index.adoc:2321
+#: documentation/content/en/books/handbook/security/_index.adoc:2330
#, no-wrap
msgid "Login Class Resource Limits"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2325
+#: documentation/content/en/books/handbook/security/_index.adoc:2334
#, no-wrap
msgid "Resource Limit"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2327
+#: documentation/content/en/books/handbook/security/_index.adoc:2336
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2328
+#: documentation/content/en/books/handbook/security/_index.adoc:2337
#, no-wrap
msgid "coredumpsize"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2330
+#: documentation/content/en/books/handbook/security/_index.adoc:2339
#, no-wrap
msgid "The limit on the size of a core file generated by a program is subordinate to other limits on disk usage, such as `filesize` or disk quotas. This limit is often used as a less severe method of controlling disk space consumption. Since users do not generate core files and often do not delete them, this setting may save them from running out of disk space should a large program crash."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2331
+#: documentation/content/en/books/handbook/security/_index.adoc:2340
#, no-wrap
msgid "cputime"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2333
+#: documentation/content/en/books/handbook/security/_index.adoc:2342
#, no-wrap
msgid "The maximum amount of CPU time a user's process may consume. Offending processes will be killed by the kernel. This is a limit on CPU _time_ consumed, not the percentage of the CPU as displayed in some of the fields generated by `top` and `ps`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2334
+#: documentation/content/en/books/handbook/security/_index.adoc:2343
#, no-wrap
msgid "filesize"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2336
+#: documentation/content/en/books/handbook/security/_index.adoc:2345
#, no-wrap
msgid "The maximum size of a file the user may own. Unlike disk quotas (crossref:disks[quotas,\"Disk Quotas\"]), this limit is enforced on individual files, not the set of all files a user owns."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2337
+#: documentation/content/en/books/handbook/security/_index.adoc:2346
#, no-wrap
msgid "maxproc"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2339
+#: documentation/content/en/books/handbook/security/_index.adoc:2348
#, no-wrap
msgid "The maximum number of foreground and background processes a user can run. This limit may not be larger than the system limit specified by `kern.maxproc`. Setting this limit too small may hinder a user's productivity as some tasks, such as compiling a large program, start lots of processes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2340
+#: documentation/content/en/books/handbook/security/_index.adoc:2349
#, no-wrap
msgid "memorylocked"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2342
+#: documentation/content/en/books/handbook/security/_index.adoc:2351
#, no-wrap
msgid "The maximum amount of memory a process may request to be locked into main memory using man:mlock[2]. Some system-critical programs, such as man:amd[8], lock into main memory so that if the system begins to swap, they do not contribute to disk thrashing."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2343
+#: documentation/content/en/books/handbook/security/_index.adoc:2352
#, no-wrap
msgid "memoryuse"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2345
+#: documentation/content/en/books/handbook/security/_index.adoc:2354
#, no-wrap
msgid "The maximum amount of memory a process may consume at any given time. It includes both core memory and swap usage. This is not a catch-all limit for restricting memory consumption, but is a good start."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2346
+#: documentation/content/en/books/handbook/security/_index.adoc:2355
#, no-wrap
msgid "openfiles"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2348
+#: documentation/content/en/books/handbook/security/_index.adoc:2357
#, no-wrap
msgid "The maximum number of files a process may have open. In FreeBSD, files are used to represent sockets and IPC channels, so be careful not to set this too low. The system-wide limit for this is defined by `kern.maxfiles`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2349
+#: documentation/content/en/books/handbook/security/_index.adoc:2358
#, no-wrap
msgid "sbsize"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2351
+#: documentation/content/en/books/handbook/security/_index.adoc:2360
#, no-wrap
msgid "The limit on the amount of network memory a user may consume. This can be generally used to limit network communications."
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2352
+#: documentation/content/en/books/handbook/security/_index.adoc:2361
#, no-wrap
msgid "stacksize"
msgstr ""
#. type: Table
-#: documentation/content/en/books/handbook/security/_index.adoc:2353
+#: documentation/content/en/books/handbook/security/_index.adoc:2362
#, no-wrap
msgid "The maximum size of a process stack. This alone is not sufficient to limit the amount of memory a program may use, so it should be used in conjunction with other limits."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2356
+#: documentation/content/en/books/handbook/security/_index.adoc:2365
msgid "There are a few other things to remember when setting resource limits:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2358
+#: documentation/content/en/books/handbook/security/_index.adoc:2367
msgid ""
"Processes started at system startup by [.filename]#/etc/rc# are assigned to "
"the `daemon` login class."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2359
+#: documentation/content/en/books/handbook/security/_index.adoc:2368
msgid ""
"Although the default [.filename]#/etc/login.conf# is a good source of "
"reasonable values for most limits, they may not be appropriate for every "
"system. Setting a limit too high may open the system up to abuse, while "
"setting it too low may put a strain on productivity."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2360
+#: documentation/content/en/books/handbook/security/_index.adoc:2369
msgid ""
"Xorg takes a lot of resources and encourages users to run more programs "
"simultaneously."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2361
+#: documentation/content/en/books/handbook/security/_index.adoc:2370
msgid ""
"Many limits apply to individual processes, not the user as a whole. For "
"example, setting `openfiles` to `50` means that each process the user runs "
"may open up to `50` files. The total amount of files a user may open is the "
"value of `openfiles` multiplied by the value of `maxproc`. This also applies "
"to memory consumption."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2363
+#: documentation/content/en/books/handbook/security/_index.adoc:2372
msgid ""
"For further information on resource limits and login classes and "
"capabilities in general, refer to man:cap.mkdb[1], man:getrlimit[2], and man:"
"login.conf[5]."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:2364
+#: documentation/content/en/books/handbook/security/_index.adoc:2373
#, no-wrap
msgid "Enabling and Configuring Resource Limits"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2368
+#: documentation/content/en/books/handbook/security/_index.adoc:2377
msgid ""
"The `kern.racct.enable` tunable must be set to a non-zero value. Custom "
"kernels require specific configuration:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2373
+#: documentation/content/en/books/handbook/security/_index.adoc:2382
#, no-wrap
msgid ""
"options RACCT\n"
"options RCTL\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2376
+#: documentation/content/en/books/handbook/security/_index.adoc:2385
msgid ""
"Once the system has rebooted into the new kernel, `rctl` may be used to set "
"rules for the system."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2378
+#: documentation/content/en/books/handbook/security/_index.adoc:2387
msgid ""
"Rule syntax is controlled through the use of a subject, subject-id, "
"resource, and action, as seen in this example rule:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2382
+#: documentation/content/en/books/handbook/security/_index.adoc:2391
#, no-wrap
msgid "user:trhodes:maxproc:deny=10/user\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2387
+#: documentation/content/en/books/handbook/security/_index.adoc:2396
msgid ""
"In this rule, the subject is `user`, the subject-id is `trhodes`, the "
"resource, `maxproc`, is the maximum number of processes, and the action is "
"`deny`, which blocks any new processes from being created. This means that "
"the user, `trhodes`, will be constrained to no greater than `10` processes. "
"Other possible actions include logging to the console, passing a "
"notification to man:devd[8], or sending a sigterm to the process."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2391
+#: documentation/content/en/books/handbook/security/_index.adoc:2400
msgid ""
"Some care must be taken when adding rules. Since this user is constrained "
"to `10` processes, this example will prevent the user from performing other "
"tasks after logging in and executing a `screen` session. Once a resource "
"limit has been hit, an error will be printed, as in this example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2397
+#: documentation/content/en/books/handbook/security/_index.adoc:2406
#, no-wrap
msgid ""
"% man test\n"
" /usr/bin/man: Cannot fork: Resource temporarily unavailable\n"
"eval: Cannot fork: Resource temporarily unavailable\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2401
+#: documentation/content/en/books/handbook/security/_index.adoc:2410
msgid ""
"As another example, a jail can be prevented from exceeding a memory limit. "
"This rule could be written as:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2405
+#: documentation/content/en/books/handbook/security/_index.adoc:2414
#, no-wrap
msgid "# rctl -a jail:httpd:memoryuse:deny=2G/jail\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2409
+#: documentation/content/en/books/handbook/security/_index.adoc:2418
msgid ""
"Rules will persist across reboots if they have been added to [.filename]#/"
"etc/rctl.conf#. The format is a rule, without the preceding command. For "
"example, the previous rule could be added as:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2414
+#: documentation/content/en/books/handbook/security/_index.adoc:2423
#, no-wrap
msgid ""
"# Block jail from using more than 2G memory:\n"
"jail:httpd:memoryuse:deny=2G/jail\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2417
+#: documentation/content/en/books/handbook/security/_index.adoc:2426
msgid "To remove a rule, use `rctl` to remove it from the list:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2421
+#: documentation/content/en/books/handbook/security/_index.adoc:2430
#, no-wrap
msgid "# rctl -r user:trhodes:maxproc:deny=10/user\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2425
+#: documentation/content/en/books/handbook/security/_index.adoc:2434
msgid ""
"A method for removing all rules is documented in man:rctl[8]. However, if "
"removing all rules for a single user is required, this command may be issued:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2429
+#: documentation/content/en/books/handbook/security/_index.adoc:2438
#, no-wrap
msgid "# rctl -r user:trhodes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2433
+#: documentation/content/en/books/handbook/security/_index.adoc:2442
msgid ""
"Many other resources exist which can be used to exert additional control "
"over various `subjects`. See man:rctl[8] to learn about them."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2435
+#: documentation/content/en/books/handbook/security/_index.adoc:2444
#, no-wrap
msgid "Shared Administration with Sudo"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2441
+#: documentation/content/en/books/handbook/security/_index.adoc:2450
msgid ""
"System administrators often need the ability to grant enhanced permissions "
"to users so they may perform privileged tasks. The idea that team members "
"are provided access to a FreeBSD system to perform their specific tasks "
"opens up unique challenges to every administrator. These team members only "
"need a subset of access beyond normal end user levels; however, they almost "
"always tell management they are unable to perform their tasks without "
"superuser access. Thankfully, there is no reason to provide such access to "
"end users because tools exist to manage this exact requirement."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2448
+#: documentation/content/en/books/handbook/security/_index.adoc:2457
msgid ""
"Up to this point, the security chapter has covered permitting access to "
"authorized users and attempting to prevent unauthorized access. Another "
"problem arises once authorized users have access to the system resources. "
"In many cases, some users may need access to application startup scripts, or "
"a team of administrators need to maintain the system. Traditionally, the "
"standard users and groups, file permissions, and even the man:su[1] command "
"would manage this access. And as applications required more access, as more "
"users needed to use system resources, a better solution was required. The "
"most used application is currently Sudo."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2452
+#: documentation/content/en/books/handbook/security/_index.adoc:2461
msgid ""
"Sudo allows administrators to configure more rigid access to system commands "
"and provide for some advanced logging features. As a tool, it is available "
"from the Ports Collection as package:security/sudo[] or by use of the man:"
"pkg[8] utility. To use the man:pkg[8] tool:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2456
+#: documentation/content/en/books/handbook/security/_index.adoc:2465
#, no-wrap
msgid "# pkg install sudo\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2460
+#: documentation/content/en/books/handbook/security/_index.adoc:2469
msgid ""
"After the installation is complete, the installed `visudo` will open the "
"configuration file with a text editor. Using `visudo` is highly recommended "
"as it comes with a built in syntax checker to verify there are no errors "
"before the file is saved."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2464
+#: documentation/content/en/books/handbook/security/_index.adoc:2473
msgid ""
"The configuration file is made up of several small sections which allow for "
"extensive configuration. In the following example, web application "
"maintainer, user1, needs to start, stop, and restart the web application "
"known as _webservice_. To grant this user permission to perform these "
"tasks, add this line to the end of [.filename]#/usr/local/etc/sudoers#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2468
+#: documentation/content/en/books/handbook/security/_index.adoc:2477
#, no-wrap
msgid "user1 ALL=(ALL) /usr/sbin/service webservice *\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2471
+#: documentation/content/en/books/handbook/security/_index.adoc:2480
msgid "The user may now start _webservice_ using this command:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2475
+#: documentation/content/en/books/handbook/security/_index.adoc:2484
#, no-wrap
msgid "% sudo /usr/sbin/service webservice start\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2481
+#: documentation/content/en/books/handbook/security/_index.adoc:2490
msgid ""
"While this configuration allows a single user access to the webservice "
"service; however, in most organizations, there is an entire web team in "
"charge of managing the service. A single line can also give access to an "
"entire group. These steps will create a web group, add a user to this "
"group, and allow all members of the group to manage the service:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2485
+#: documentation/content/en/books/handbook/security/_index.adoc:2494
#, no-wrap
msgid "# pw groupadd -g 6001 -n webteam\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2488
+#: documentation/content/en/books/handbook/security/_index.adoc:2497
msgid ""
"Using the same man:pw[8] command, the user is added to the webteam group:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2492
+#: documentation/content/en/books/handbook/security/_index.adoc:2501
#, no-wrap
msgid "# pw groupmod -m user1 -n webteam\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2495
+#: documentation/content/en/books/handbook/security/_index.adoc:2504
msgid ""
"Finally, this line in [.filename]#/usr/local/etc/sudoers# allows any member "
"of the webteam group to manage _webservice_:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2499
+#: documentation/content/en/books/handbook/security/_index.adoc:2508
#, no-wrap
msgid "%webteam ALL=(ALL) /usr/sbin/service webservice *\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2504
+#: documentation/content/en/books/handbook/security/_index.adoc:2513
msgid ""
"Unlike man:su[1], Sudo only requires the end user password. This adds an "
"advantage where users will not need shared passwords, a finding in most "
"security audits and just bad all the way around."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2508
+#: documentation/content/en/books/handbook/security/_index.adoc:2517
msgid ""
"Users permitted to run applications with Sudo only enter their own "
"passwords. This is more secure and gives better control than man:su[1], "
"where the `root` password is entered and the user acquires all `root` "
"permissions."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2516
+#: documentation/content/en/books/handbook/security/_index.adoc:2525
msgid ""
"Most organizations are moving or have moved toward a two factor "
"authentication model. In these cases, the user may not have a password to "
"enter. Sudo provides for these cases with the `NOPASSWD` variable. Adding "
"it to the configuration above will allow all members of the _webteam_ group "
"to manage the service without the password requirement:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2520
+#: documentation/content/en/books/handbook/security/_index.adoc:2529
#, no-wrap
msgid "%webteam ALL=(ALL) NOPASSWD: /usr/sbin/service webservice *\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/handbook/security/_index.adoc:2525
+#: documentation/content/en/books/handbook/security/_index.adoc:2534
#, no-wrap
msgid "Logging Output"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2532
+#: documentation/content/en/books/handbook/security/_index.adoc:2541
msgid ""
"An advantage to implementing Sudo is the ability to enable session logging. "
"Using the built in log mechanisms and the included sudoreplay command, all "
"commands initiated through Sudo are logged for later verification. To "
"enable this feature, add a default log directory entry, this example uses a "
"user variable. Several other log filename conventions exist, consult the "
"manual page for sudoreplay for additional information."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2536
+#: documentation/content/en/books/handbook/security/_index.adoc:2545
#, no-wrap
msgid "Defaults iolog_dir=/var/log/sudo-io/%{user}\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2545
+#: documentation/content/en/books/handbook/security/_index.adoc:2554
msgid ""
"This directory will be created automatically after the logging is "
"configured. It is best to let the system create directory with default "
"permissions just to be safe. In addition, this entry will also log "
"administrators who use the sudoreplay command. To change this behavior, "
"read and uncomment the logging options inside [.filename]#sudoers#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2549
+#: documentation/content/en/books/handbook/security/_index.adoc:2558
msgid ""
"Once this directive has been added to the [.filename]#sudoers# file, any "
"user configuration can be updated with the request to log access. In the "
"example shown, the updated _webteam_ entry would have the following "
"additional changes:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2553
+#: documentation/content/en/books/handbook/security/_index.adoc:2562
#, no-wrap
msgid "%webteam ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: /usr/sbin/service webservice *\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2557
+#: documentation/content/en/books/handbook/security/_index.adoc:2566
msgid ""
"From this point on, all _webteam_ members altering the status of the "
"_webservice_ application will be logged. The list of previous and current "
"sessions can be displayed with:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2561
+#: documentation/content/en/books/handbook/security/_index.adoc:2570
#, no-wrap
msgid "# sudoreplay -l\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2565
+#: documentation/content/en/books/handbook/security/_index.adoc:2574
msgid ""
"In the output, to replay a specific session, search for the `TSID=` entry, "
"and pass that to sudoreplay with no other options to replay the session at "
"normal speed. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2569
+#: documentation/content/en/books/handbook/security/_index.adoc:2578
#, no-wrap
msgid "# sudoreplay user1/00/00/02\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2576
+#: documentation/content/en/books/handbook/security/_index.adoc:2585
msgid ""
"While sessions are logged, any administrator is able to remove sessions and "
"leave only a question of why they had done so. It is worthwhile to add a "
"daily check through an intrusion detection system (IDS) or similar software "
"so that other administrators are alerted to manual alterations."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2580
+#: documentation/content/en/books/handbook/security/_index.adoc:2589
msgid ""
"The `sudoreplay` is extremely extendable. Consult the documentation for "
"more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/handbook/security/_index.adoc:2582
+#: documentation/content/en/books/handbook/security/_index.adoc:2591
#, no-wrap
msgid "Using doas as an alternative to sudo"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2585
+#: documentation/content/en/books/handbook/security/_index.adoc:2594
msgid ""
"As an alternative to package:security/sudo[] package:security/doas[] can be "
"used to provide the ability for users to get enhanced privileges."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2587
+#: documentation/content/en/books/handbook/security/_index.adoc:2596
msgid ""
"The doas utility is available via the ports collection in package:security/"
"doas[] or via the man:pkg[8] utility."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2589
+#: documentation/content/en/books/handbook/security/_index.adoc:2598
msgid ""
"After the installation [.filename]#/usr/local/etc/doas.conf# must be "
"configured to grant access for users for specific commands, or roles."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2591
+#: documentation/content/en/books/handbook/security/_index.adoc:2600
msgid ""
"The simpliest entry could be the following, which grants local_user root "
"permissions without asking for its password when executing the doas command."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2595
+#: documentation/content/en/books/handbook/security/_index.adoc:2604
#, no-wrap
msgid "permit nopass local_user as root\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2598
+#: documentation/content/en/books/handbook/security/_index.adoc:2607
msgid "For more configuration examples, please read man:doas.conf[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/security/_index.adoc:2600
+#: documentation/content/en/books/handbook/security/_index.adoc:2609
msgid ""
"After the installation and configuration of the `doas` utility, a command "
"can now be executed with enhanced privileges, like for example."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/handbook/security/_index.adoc:2604
+#: documentation/content/en/books/handbook/security/_index.adoc:2613
#, no-wrap
msgid "$ doas vi /etc/rc.conf\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/serialcomms/_index.po b/documentation/content/en/books/handbook/serialcomms/_index.po
index 7f260dba4c..0c629fe3ef 100644
--- a/documentation/content/en/books/handbook/serialcomms/_index.po
+++ b/documentation/content/en/books/handbook/serialcomms/_index.po
@@ -1,2486 +1,2486 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-30 14:38-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1
#, no-wrap
msgid "This chapter covers some of the ways serial communications can be used on FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1
#, no-wrap
msgid "Part IV. Network Communication"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1
#, no-wrap
-msgid "Chapter 27. Serial Communications"
+msgid "Chapter 28. Serial Communications"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:15
#, no-wrap
msgid "Serial Communications"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:58
msgid ""
"UNIX(R) has always had support for serial communications as the very first "
"UNIX(R) machines relied on serial lines for user input and output. Things "
"have changed a lot from the days when the average terminal consisted of a 10-"
"character-per-second serial printer and a keyboard. This chapter covers "
"some of the ways serial communications can be used on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:60
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:62
msgid "How to connect terminals to a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:63
msgid "How to use a modem to dial out to remote hosts."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:64
msgid "How to allow remote users to login to a FreeBSD system with a modem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:65
msgid "How to boot a FreeBSD system from a serial console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:67
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:69
msgid ""
"Know how to crossref:kernelconfig[kernelconfig, configure and install a "
"custom kernel]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:70
msgid "Understand crossref:basics[basics, FreeBSD permissions and processes]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:71
msgid ""
"Have access to the technical manual for the serial hardware to be used with "
"FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:73
#, no-wrap
msgid "Serial Terminology and Hardware"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:76
msgid "The following terms are often used in serial communications:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:77
#, no-wrap
msgid "bps"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:79
msgid "Bits per Second (bps) is the rate at which data is transmitted."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:80
#, no-wrap
msgid "DTE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:83
msgid ""
"Data Terminal Equipment (DTE) is one of two endpoints in a serial "
"communication. An example would be a computer."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:84
#, no-wrap
msgid "DCE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:87
msgid ""
"Data Communications Equipment (DCE) is the other endpoint in a serial "
"communication. Typically, it is a modem or serial terminal."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:88
#, no-wrap
msgid "RS-232"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:91
msgid ""
"The original standard which defined hardware serial communications. It has "
"since been renamed to TIA-232."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:94
msgid ""
"When referring to communication data rates, this section does not use the "
"term _baud_. Baud refers to the number of electrical state transitions made "
"in a period of time, while bps is the correct term to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:97
msgid ""
"To connect a serial terminal to a FreeBSD system, a serial port on the "
"computer and the proper cable to connect to the serial device are needed. "
"Users who are already familiar with serial hardware and cabling can safely "
"skip this section."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:99
#, no-wrap
msgid "Serial Cables and Ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:104
msgid ""
"There are several different kinds of serial cables. The two most common "
"types are null-modem cables and standard RS-232 cables. The documentation "
"for the hardware should describe the type of cable required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:110
msgid ""
"These two types of cables differ in how the wires are connected to the "
"connector. Each wire represents a signal, with the defined signals "
"summarized in <<serialcomms-signal-names>>. A standard serial cable passes "
"all of the RS-232C signals straight through. For example, the \"Transmitted "
"Data\" pin on one end of the cable goes to the \"Transmitted Data\" pin on "
"the other end. This is the type of cable used to connect a modem to the "
"FreeBSD system, and is also appropriate for some terminals."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:113
msgid ""
"A null-modem cable switches the \"Transmitted Data\" pin of the connector on "
"one end with the \"Received Data\" pin on the other end. The connector can "
"be either a DB-25 or a DB-9."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:118
msgid ""
"A null-modem cable can be constructed using the pin connections summarized "
"in <<nullmodem-db25>>, <<nullmodem-db9>>, and <<nullmodem-db9-25>>. While "
-"the standard calls for a straight-through pin 1 to pin 1 \"Protective Ground"
-"\" line, it is often omitted. Some terminals work using only pins 2, 3, and "
-"7, while others require different configurations. When in doubt, refer to "
-"the documentation for the hardware."
+"the standard calls for a straight-through pin 1 to pin 1 \"Protective "
+"Ground\" line, it is often omitted. Some terminals work using only pins 2, "
+"3, and 7, while others require different configurations. When in doubt, "
+"refer to the documentation for the hardware."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:120
#, no-wrap
msgid "RS-232C Signal Names"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:124
#, no-wrap
msgid "Acronyms"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:126
#, no-wrap
msgid "Names"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:127
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:173
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:174
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:227
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:238
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:292
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:303
#, no-wrap
msgid "RD"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:129
#, no-wrap
msgid "Received Data"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:130
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:168
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:179
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:232
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:233
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:297
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:298
#, no-wrap
msgid "TD"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:132
#, no-wrap
msgid "Transmitted Data"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:133
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:192
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:198
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:209
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:214
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:239
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:245
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:262
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:268
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:304
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:310
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:327
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:333
#, no-wrap
msgid "DTR"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:135
#, no-wrap
msgid "Data Terminal Ready"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:136
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:197
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:204
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:244
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:257
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:309
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:322
#, no-wrap
msgid "DSR"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:138
#, no-wrap
msgid "Data Set Ready"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:139
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:203
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:210
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:250
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:263
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:315
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:328
#, no-wrap
msgid "DCD"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:141
#, no-wrap
msgid "Data Carrier Detect"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:142
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:162
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:167
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:251
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:256
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:316
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:321
#, no-wrap
msgid "SG"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:144
#, no-wrap
msgid "Signal Ground"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:145
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:180
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:191
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:269
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:279
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:334
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:344
#, no-wrap
msgid "RTS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:147
#, no-wrap
msgid "Request to Send"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:148
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:185
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:186
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:274
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:275
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:339
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:340
#, no-wrap
msgid "CTS"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:149
#, no-wrap
msgid "Clear to Send"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:152
#, no-wrap
msgid "DB-25 to DB-25 Null-Modem Cable"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:156
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:161
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:221
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:226
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:286
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:291
#, no-wrap
msgid "Signal"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:157
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:159
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:222
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:224
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:287
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:289
#, no-wrap
msgid "Pin #"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:163
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:165
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:270
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:278
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:319
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:335
#, no-wrap
msgid "7"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:164
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:170
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:176
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:182
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:188
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:194
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:200
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:206
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:212
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:229
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:235
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:241
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:247
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:253
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:259
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:265
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:271
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:277
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:294
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:300
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:306
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:312
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:318
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:324
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:330
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:336
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:342
#, no-wrap
msgid "connects to"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:169
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:177
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:228
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:236
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:293
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:295
#, no-wrap
msgid "2"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:171
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:175
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:230
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:234
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:299
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:301
#, no-wrap
msgid "3"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:181
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:189
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:240
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:246
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:260
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:266
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:305
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:311
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:343
#, no-wrap
msgid "4"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:183
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:187
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:252
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:254
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:317
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:337
#, no-wrap
msgid "5"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:193
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:199
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:207
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:213
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:325
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:331
#, no-wrap
msgid "20"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:195
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:205
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:242
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:258
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:307
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:323
#, no-wrap
msgid "6"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:201
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:211
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:272
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:276
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:313
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:341
#, no-wrap
msgid "8"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:217
#, no-wrap
msgid "DB-9 to DB-9 Null-Modem Cable"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:248
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:264
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:329
#, no-wrap
msgid "1"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:282
#, no-wrap
msgid "DB-9 to DB-25 Null-Modem Cable"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:349
msgid ""
"When one pin at one end connects to a pair of pins at the other end, it is "
"usually implemented with one short wire between the pair of pins in their "
"connector and a long wire to the other single pin."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:354
msgid ""
"Serial ports are the devices through which data is transferred between the "
"FreeBSD host computer and the terminal. Several kinds of serial ports "
"exist. Before purchasing or constructing a cable, make sure it will fit the "
"ports on the terminal and on the FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:359
msgid ""
"Most terminals have DB-25 ports. Personal computers may have DB-25 or DB-9 "
"ports. A multiport serial card may have RJ-12 or RJ-45/ ports. See the "
"documentation that accompanied the hardware for specifications on the kind "
"of port or visually verify the type of port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:362
msgid ""
"In FreeBSD, each serial port is accessed through an entry in [.filename]#/"
"dev#. There are two different kinds of entries:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:364
msgid ""
"Call-in ports are named [.filename]#/dev/ttyuN# where _N_ is the port "
"number, starting from zero. If a terminal is connected to the first serial "
"port ([.filename]#COM1#), use [.filename]#/dev/ttyu0# to refer to the "
"terminal. If the terminal is on the second serial port ([.filename]#COM2#), "
"use [.filename]#/dev/ttyu1#, and so forth. Generally, the call-in port is "
"used for terminals. Call-in ports require that the serial line assert the "
"\"Data Carrier Detect\" signal to work correctly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:365
msgid ""
"Call-out ports are named [.filename]#/dev/cuauN# on FreeBSD versions 8.X and "
"higher and [.filename]#/dev/cuadN# on FreeBSD versions 7.X and lower. Call-"
"out ports are usually not used for terminals, but are used for modems. The "
"call-out port can be used if the serial cable or the terminal does not "
"support the \"Data Carrier Detect\" signal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:370
msgid ""
"FreeBSD also provides initialization devices ([.filename]#/dev/ttyuN.init# "
"and [.filename]#/dev/cuauN.init# or [.filename]#/dev/cuadN.init#) and "
"locking devices ([.filename]#/dev/ttyuN.lock# and [.filename]#/dev/cuauN."
"lock# or [.filename]#/dev/cuadN.lock#). The initialization devices are used "
"to initialize communications port parameters each time a port is opened, "
"such as `crtscts` for modems which use `RTS/CTS` signaling for flow "
"control. The locking devices are used to lock flags on ports to prevent "
"users or programs changing certain parameters. Refer to man:termios[4], man:"
"uart[4], and man:stty[1] for information on terminal settings, locking and "
"initializing devices, and setting terminal options, respectively."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:372
#, no-wrap
msgid "Serial Port Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:377
msgid ""
"By default, FreeBSD supports four serial ports which are commonly known as [."
"filename]#COM1#, [.filename]#COM2#, [.filename]#COM3#, and [."
"filename]#COM4#. FreeBSD also supports dumb multi-port serial interface "
"cards, such as the BocaBoard 1008 and 2016, as well as more intelligent "
"multi-port cards such as those made by Digiboard. However, the default "
"kernel only looks for the standard [.filename]#COM# ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:379
msgid ""
"To see if the system recognizes the serial ports, look for system boot "
"messages that start with `uart`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:383
#, no-wrap
msgid "# grep uart /var/run/dmesg.boot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:389
msgid ""
"If the system does not recognize all of the needed serial ports, additional "
"entries can be added to [.filename]#/boot/device.hints#. This file already "
"contains `hint.uart.0.\\*` entries for [.filename]#COM1# and `hint.uart.1.*` "
"entries for [.filename]#COM2#. When adding a port entry for [."
"filename]#COM3# use `0x3E8`, and for [.filename]#COM4# use `0x2E8`. Common "
"IRQ addresses are `5` for [.filename]#COM3# and `9` for [.filename]#COM4#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:392
msgid ""
"To determine the default set of terminal I/O settings used by the port, "
"specify its device name. This example determines the settings for the call-"
"in port on [.filename]#COM2#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:396
#, no-wrap
msgid "# stty -a -f /dev/ttyu1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:404
msgid ""
"System-wide initialization of serial devices is controlled by [.filename]#/"
"etc/rc.d/serial#. This file affects the default settings of serial "
"devices. To change the settings for a device, use `stty`. By default, the "
"changed settings are in effect until the device is closed and when the "
"device is reopened, it goes back to the default set. To permanently change "
"the default set, open and adjust the settings of the initialization device. "
"For example, to turn on `CLOCAL` mode, 8 bit communication, and `XON/XOFF` "
"flow control for [.filename]#ttyu5#, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:408
#, no-wrap
msgid "# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:412
msgid ""
"To prevent certain settings from being changed by an application, make "
"adjustments to the locking device. For example, to lock the speed of [."
"filename]#ttyu5# to 57600 bps, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:416
#, no-wrap
msgid "# stty -f /dev/ttyu5.lock 57600\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:419
msgid ""
"Now, any application that opens [.filename]#ttyu5# and tries to change the "
"speed of the port will be stuck with 57600 bps."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:421
#, no-wrap
msgid "Terminals"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:425
msgid ""
"Terminals provide a convenient and low-cost way to access a FreeBSD system "
"when not at the computer's console or on a connected network. This section "
"describes how to use terminals with FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:428
msgid ""
"The original UNIX(R) systems did not have consoles. Instead, users logged "
"in and ran programs through terminals that were connected to the computer's "
"serial ports."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:431
msgid ""
"The ability to establish a login session on a serial port still exists in "
"nearly every UNIX(R)-like operating system today, including FreeBSD. By "
"using a terminal attached to an unused serial port, a user can log in and "
"run any text program that can normally be run on the console or in an "
"`xterm` window."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:435
msgid ""
"Many terminals can be attached to a FreeBSD system. An older spare computer "
"can be used as a terminal wired into a more powerful computer running "
"FreeBSD. This can turn what might otherwise be a single-user computer into "
"a powerful multiple-user system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:437
msgid "FreeBSD supports three types of terminals:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:438
#, no-wrap
msgid "Dumb terminals"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:442
msgid ""
"Dumb terminals are specialized hardware that connect to computers over "
"serial lines. They are called \"dumb\" because they have only enough "
"computational power to display, send, and receive text. No programs can be "
"run on these devices. Instead, dumb terminals connect to a computer that "
"runs the needed programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:445
msgid ""
"There are hundreds of kinds of dumb terminals made by many manufacturers, "
"and just about any kind will work with FreeBSD. Some high-end terminals can "
"even display graphics, but only certain software packages can take advantage "
"of these advanced features."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:447
msgid ""
"Dumb terminals are popular in work environments where workers do not need "
"access to graphical applications."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:448
#, no-wrap
msgid "Computers Acting as Terminals"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:451
msgid ""
"Since a dumb terminal has just enough ability to display, send, and receive "
"text, any spare computer can be a dumb terminal. All that is needed is the "
"proper cable and some _terminal emulation_ software to run on the computer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:454
msgid ""
"This configuration can be useful. For example, if one user is busy working "
"at the FreeBSD system's console, another user can do some text-only work at "
"the same time from a less powerful personal computer hooked up as a terminal "
"to the FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:456
msgid ""
"There are at least two utilities in the base-system of FreeBSD that can be "
"used to work through a serial connection: man:cu[1] and man:tip[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:458
msgid ""
"For example, to connect from a client system that runs FreeBSD to the serial "
"connection of another system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:462
#, no-wrap
msgid "# cu -l /dev/cuauN\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:466
msgid ""
"Ports are numbered starting from zero. This means that [.filename]#COM1# is "
"[.filename]#/dev/cuau0#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:468
msgid ""
"Additional programs are available through the Ports Collection, such as "
"package:comms/minicom[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:469
#, no-wrap
msgid "X Terminals"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:473
msgid ""
"X terminals are the most sophisticated kind of terminal available. Instead "
"of connecting to a serial port, they usually connect to a network like "
"Ethernet. Instead of being relegated to text-only applications, they can "
"display any Xorg application."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:475
msgid ""
"This chapter does not cover the setup, configuration, or use of X terminals."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:477
#, no-wrap
msgid "Terminal Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:481
msgid ""
"This section describes how to configure a FreeBSD system to enable a login "
"session on a serial terminal. It assumes that the system recognizes the "
"serial port to which the terminal is connected and that the terminal is "
"connected with the correct cable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:489
msgid ""
"In FreeBSD, `init` reads [.filename]#/etc/ttys# and starts a `getty` process "
"on the available terminals. The `getty` process is responsible for reading "
"a login name and starting the `login` program. The ports on the FreeBSD "
"system which allow logins are listed in [.filename]#/etc/ttys#. For "
"example, the first virtual console, [.filename]#ttyv0#, has an entry in this "
"file, allowing logins on the console. This file also contains entries for "
"the other virtual consoles, serial ports, and pseudo-ttys. For a hardwired "
"terminal, the serial port's [.filename]#/dev# entry is listed without the `/"
"dev` part. For example, [.filename]#/dev/ttyv0# is listed as `ttyv0`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:491
msgid ""
"The default [.filename]#/etc/ttys# configures support for the first four "
"serial ports, [.filename]#ttyu0# through [.filename]#ttyu3#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:498
#, no-wrap
msgid ""
"ttyu0 \"/usr/libexec/getty std.9600\" dialup off secure\n"
"ttyu1 \"/usr/libexec/getty std.9600\" dialup off secure\n"
"ttyu2 \"/usr/libexec/getty std.9600\" dialup off secure\n"
"ttyu3 \"/usr/libexec/getty std.9600\" dialup off secure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:502
msgid ""
"When attaching a terminal to one of those ports, modify the default entry to "
"set the required speed and terminal type, to turn the device `on` and, if "
"needed, to change the port's `secure` setting. If the terminal is connected "
"to another port, add an entry for the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:507
msgid ""
"<<ex-etc-ttys>> configures two terminals in [.filename]#/etc/ttys#. The "
"first entry configures a Wyse-50 connected to [.filename]#COM2#. The second "
"entry configures an old computer running Procomm terminal software emulating "
"a VT-100 terminal. The computer is connected to the sixth serial port on a "
"multi-port serial card."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:510
#, no-wrap
msgid "Configuring Terminal Entries"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:517
#, no-wrap
msgid ""
"ttyu1 \"/usr/libexec/getty std.38400\" wy50 on insecure \n"
"ttyu5 \"/usr/libexec/getty std.19200\" vt100 on insecure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:520
msgid "The first field specifies the device name of the serial terminal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:530
msgid ""
"The second field tells `getty` to initialize and open the line, set the line "
"speed, prompt for a user name, and then execute the `login` program. The "
"optional _getty type_ configures characteristics on the terminal line, like "
"bps rate and parity. The available getty types are listed in [.filename]#/"
"etc/gettytab#. In almost all cases, the getty types that start with `std` "
"will work for hardwired terminals as these entries ignore parity. There is "
"a `std` entry for each bps rate from 110 to 115200. Refer to man:"
"gettytab[5] for more information. When setting the getty type, make sure to "
"match the communications settings used by the terminal. For this example, "
"the Wyse-50 uses no parity and connects at 38400 bps. The computer uses no "
"parity and connects at 19200 bps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:535
msgid ""
"The third field is the type of terminal. For dial-up ports, `unknown` or "
"`dialup` is typically used since users may dial up with practically any type "
"of terminal or software. Since the terminal type does not change for "
"hardwired terminals, a real terminal type from [.filename]#/etc/termcap# can "
"be specified. For this example, the Wyse-50 uses the real terminal type "
"while the computer running Procomm is set to emulate a VT-100."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:538
msgid ""
"The fourth field specifies if the port should be enabled. To enable logins "
"on this port, this field must be set to `on`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:544
msgid ""
"The final field is used to specify whether the port is secure. Marking a "
"port as `secure` means that it is trusted enough to allow `root` to login "
"from that port. Insecure ports do not allow `root` logins. On an insecure "
"port, users must login from unprivileged accounts and then use `su` or a "
"similar mechanism to gain superuser privileges, as described in crossref:"
"basics[users-superuser,“The Superuser Account”]. For security reasons, it "
"is recommended to change this setting to `insecure`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:547
msgid ""
"After making any changes to [.filename]#/etc/ttys#, send a SIGHUP (hangup) "
"signal to the `init` process to force it to re-read its configuration file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:551
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:725
#, no-wrap
msgid "# kill -HUP 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:554
msgid ""
"Since `init` is always the first process run on a system, it always has a "
"process ID of `1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:556
msgid ""
"If everything is set up correctly, all cables are in place, and the "
"terminals are powered up, a `getty` process should now be running on each "
"terminal and login prompts should be available on each terminal."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:558
#, no-wrap
msgid "Troubleshooting the Connection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:562
msgid ""
"Even with the most meticulous attention to detail, something could still go "
"wrong while setting up a terminal. Here is a list of common symptoms and "
"some suggested fixes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:565
msgid ""
"If no login prompt appears, make sure the terminal is plugged in and powered "
"up. If it is a personal computer acting as a terminal, make sure it is "
"running terminal emulation software on the correct serial port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:568
msgid ""
"Make sure the cable is connected firmly to both the terminal and the FreeBSD "
"computer. Make sure it is the right kind of cable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:572
msgid ""
"Make sure the terminal and FreeBSD agree on the bps rate and parity "
"settings. For a video display terminal, make sure the contrast and "
"brightness controls are turned up. If it is a printing terminal, make sure "
"paper and ink are in good supply."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:575
msgid ""
"Use `ps` to make sure that a `getty` process is running and serving the "
"terminal. For example, the following listing shows that a `getty` is "
"running on the second serial port, [.filename]#ttyu1#, and is using the "
"`std.38400` entry in [.filename]#/etc/gettytab#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:580
#, no-wrap
msgid ""
"# ps -axww|grep ttyu\n"
"22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyu1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:584
msgid ""
"If no `getty` process is running, make sure the port is enabled in [."
"filename]#/etc/ttys#. Remember to run `kill -HUP 1` after modifying [."
"filename]#/etc/ttys#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:589
msgid ""
"If the `getty` process is running but the terminal still does not display a "
"login prompt, or if it displays a prompt but will not accept typed input, "
"the terminal or cable may not support hardware handshaking. Try changing "
"the entry in [.filename]#/etc/ttys# from `std.38400` to `3wire.38400`, then "
"run `kill -HUP 1` after modifying [.filename]#/etc/ttys#. The `3wire` entry "
"is similar to `std`, but ignores hardware handshaking. The bps may also "
"need to be reduced or software flow control enabled when using `3wire` to "
"prevent buffer overflows."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:593
msgid ""
"If garbage appears instead of a login prompt, make sure the terminal and "
"FreeBSD agree on the bps rate and parity settings. Check the `getty` "
"processes to make sure the correct _getty_ type is in use. If not, edit [."
"filename]#/etc/ttys# and run `kill -HUP 1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:595
msgid ""
"If characters appear doubled and the password appears when typed, switch the "
"terminal, or the terminal emulation software, from \"half duplex\" or "
"\"local echo\" to \"full duplex.\""
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:597
#, no-wrap
msgid "Dial-in Service"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:601
msgid ""
"Configuring a FreeBSD system for dial-in service is similar to configuring "
"terminals, except that modems are used instead of terminal devices. FreeBSD "
"supports both external and internal modems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:603
msgid ""
"External modems are more convenient because they often can be configured via "
"parameters stored in non-volatile RAM and they usually provide lighted "
"indicators that display the state of important RS-232 signals, indicating "
"whether the modem is operating properly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:606
msgid ""
"Internal modems usually lack non-volatile RAM, so their configuration may be "
"limited to setting DIP switches. If the internal modem has any signal "
"indicator lights, they are difficult to view when the system's cover is in "
"place."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:609
msgid ""
"When using an external modem, a proper cable is needed. A standard RS-232C "
"serial cable should suffice."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:613
msgid ""
"FreeBSD needs the RTS and CTS signals for flow control at speeds above 2400 "
"bps, the CD signal to detect when a call has been answered or the line has "
"been hung up, and the DTR signal to reset the modem after a session is "
"complete. Some cables are wired without all of the needed signals, so if a "
"login session does not go away when the line hangs up, there may be a "
"problem with the cable. Refer to <<term-cables-null>> for more information "
"about these signals."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:616
msgid ""
"Like other UNIX(R)-like operating systems, FreeBSD uses the hardware signals "
"to find out when a call has been answered or a line has been hung up and to "
"hangup and reset the modem after a call. FreeBSD avoids sending commands to "
"the modem or watching for status reports from the modem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:623
msgid ""
"FreeBSD supports the NS8250, NS16450, NS16550, and NS16550A-based RS-232C "
"(CCITT V.24) communications interfaces. The 8250 and 16450 devices have "
"single-character buffers. The 16550 device provides a 16-character buffer, "
"which allows for better system performance. Bugs in plain 16550 devices "
"prevent the use of the 16-character buffer, so use 16550A devices if "
"possible. As single-character-buffer devices require more work by the "
"operating system than the 16-character-buffer devices, 16550A-based serial "
"interface cards are preferred. If the system has many active serial ports "
"or will have a heavy load, 16550A-based cards are better for low-error-rate "
"communications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:625
msgid ""
"The rest of this section demonstrates how to configure a modem to receive "
"incoming connections, how to communicate with the modem, and offers some "
"troubleshooting tips."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:627
#, no-wrap
msgid "Modem Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:634
msgid ""
"As with terminals, `init` spawns a `getty` process for each configured "
"serial port used for dial-in connections. When a user dials the modem's "
"line and the modems connect, the \"Carrier Detect\" signal is reported by "
"the modem. The kernel notices that the carrier has been detected and "
"instructs `getty` to open the port and display a `login:` prompt at the "
"specified initial line speed. In a typical configuration, if garbage "
"characters are received, usually due to the modem's connection speed being "
"different than the configured speed, `getty` tries adjusting the line speeds "
"until it receives reasonable characters. After the user enters their login "
"name, `getty` executes `login`, which completes the login process by asking "
"for the user's password and then starting the user's shell."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:639
msgid ""
"There are two schools of thought regarding dial-up modems. One "
"configuration method is to set the modems and systems so that no matter at "
"what speed a remote user dials in, the dial-in RS-232 interface runs at a "
"locked speed. The benefit of this configuration is that the remote user "
"always sees a system login prompt immediately. The downside is that the "
"system does not know what a user's true data rate is, so full-screen "
"programs like Emacs will not adjust their screen-painting methods to make "
"their response better for slower connections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:646
msgid ""
"The second method is to configure the RS-232 interface to vary its speed "
"based on the remote user's connection speed. As `getty` does not understand "
"any particular modem's connection speed reporting, it gives a `login:` "
"message at an initial speed and watches the characters that come back in "
"response. If the user sees junk, they should press kbd:[Enter] until they "
"see a recognizable prompt. If the data rates do not match, `getty` sees "
"anything the user types as junk, tries the next speed, and gives the `login:"
"` prompt again. This procedure normally only takes a keystroke or two "
"before the user sees a good prompt. This login sequence does not look as "
"clean as the locked-speed method, but a user on a low-speed connection "
"should receive better interactive response from full-screen programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:653
msgid ""
"When locking a modem's data communications rate at a particular speed, no "
"changes to [.filename]#/etc/gettytab# should be needed. However, for a "
"matching-speed configuration, additional entries may be required in order to "
"define the speeds to use for the modem. This example configures a 14.4 Kbps "
"modem with a top interface speed of 19.2 Kbps using 8-bit, no parity "
"connections. It configures `getty` to start the communications rate for a "
"V.32bis connection at 19.2 Kbps, then cycles through 9600 bps, 2400 bps, "
"1200 bps, 300 bps, and back to 19.2 Kbps. Communications rate cycling is "
"implemented with the `nx=` (next table) capability. Each line uses a `tc=` "
"(table continuation) entry to pick up the rest of the settings for a "
"particular data rate."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:669
#, no-wrap
msgid ""
"#\n"
"# Additions for a V.32bis Modem\n"
"#\n"
"um|V300|High Speed Modem at 300,8-bit:\\\n"
" :nx=V19200:tc=std.300:\n"
"un|V1200|High Speed Modem at 1200,8-bit:\\\n"
" :nx=V300:tc=std.1200:\n"
"uo|V2400|High Speed Modem at 2400,8-bit:\\\n"
" :nx=V1200:tc=std.2400:\n"
"up|V9600|High Speed Modem at 9600,8-bit:\\\n"
" :nx=V2400:tc=std.9600:\n"
"uq|V19200|High Speed Modem at 19200,8-bit:\\\n"
" :nx=V9600:tc=std.19200:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:672
msgid ""
"For a 28.8 Kbps modem, or to take advantage of compression on a 14.4 Kbps "
"modem, use a higher communications rate, as seen in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:689
#, no-wrap
msgid ""
"#\n"
"# Additions for a V.32bis or V.34 Modem\n"
"# Starting at 57.6 Kbps\n"
"#\n"
"vm|VH300|Very High Speed Modem at 300,8-bit:\\\n"
" :nx=VH57600:tc=std.300:\n"
"vn|VH1200|Very High Speed Modem at 1200,8-bit:\\\n"
" :nx=VH300:tc=std.1200:\n"
"vo|VH2400|Very High Speed Modem at 2400,8-bit:\\\n"
" :nx=VH1200:tc=std.2400:\n"
"vp|VH9600|Very High Speed Modem at 9600,8-bit:\\\n"
" :nx=VH2400:tc=std.9600:\n"
"vq|VH57600|Very High Speed Modem at 57600,8-bit:\\\n"
" :nx=VH9600:tc=std.57600:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:692
msgid ""
"For a slow CPU or a heavily loaded system without 16550A-based serial ports, "
"this configuration may produce `uart` \"silo\" errors at 57.6 Kbps."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:695
msgid ""
"The configuration of [.filename]#/etc/ttys# is similar to <<ex-etc-ttys>>, "
"but a different argument is passed to `getty` and `dialup` is used for the "
"terminal type. Replace _xxx_ with the process `init` will run on the device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:699
#, no-wrap
msgid "ttyu0 \"/usr/libexec/getty xxx\" dialup on\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:703
msgid ""
"The `dialup` terminal type can be changed. For example, setting `vt102` as "
"the default terminal type allows users to use VT102 emulation on their "
"remote systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:706
msgid ""
"For a locked-speed configuration, specify the speed with a valid type listed "
"in [.filename]#/etc/gettytab#. This example is for a modem whose port speed "
"is locked at 19.2 Kbps:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:710
#, no-wrap
msgid "ttyu0 \"/usr/libexec/getty std.19200\" dialup on\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:714
msgid ""
"In a matching-speed configuration, the entry needs to reference the "
"appropriate beginning \"auto-baud\" entry in [.filename]#/etc/gettytab#. To "
"continue the example for a matching-speed modem that starts at 19.2 Kbps, "
"use this entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:718
#, no-wrap
msgid "ttyu0 \"/usr/libexec/getty V19200\" dialup on\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:721
msgid ""
"After editing [.filename]#/etc/ttys#, wait until the modem is properly "
"configured and connected before signaling `init`:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:730
msgid ""
"High-speed modems, like V.32, V.32bis, and V.34 modems, use hardware (`RTS/"
"CTS`) flow control. Use `stty` to set the hardware flow control flag for "
"the modem port. This example sets the `crtscts` flag on [.filename]#COM2#'s "
"dial-in and dial-out initialization devices:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:735
#, no-wrap
msgid ""
"# stty -f /dev/ttyu1.init crtscts\n"
"# stty -f /dev/cuau1.init crtscts\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:737
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:740
msgid ""
"This section provides a few tips for troubleshooting a dial-up modem that "
"will not connect to a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:744
msgid ""
"Hook up the modem to the FreeBSD system and boot the system. If the modem "
"has status indication lights, watch to see whether the modem's DTR indicator "
"lights when the `login:` prompt appears on the system's console. If it "
"lights up, that should mean that FreeBSD has started a `getty` process on "
"the appropriate communications port and is waiting for the modem to accept a "
"call."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:746
msgid ""
"If the DTR indicator does not light, login to the FreeBSD system through the "
"console and type `ps ax` to see if FreeBSD is running a `getty` process on "
"the correct port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:750
#, no-wrap
msgid " 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyu0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:754
msgid ""
"If the second column contains a `d0` instead of a `??` and the modem has not "
"accepted a call yet, this means that `getty` has completed its open on the "
"communications port. This could indicate a problem with the cabling or a "
"misconfigured modem because `getty` should not be able to open the "
"communications port until the carrier detect signal has been asserted by the "
"modem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:757
msgid ""
"If no `getty` processes are waiting to open the port, double-check that the "
"entry for the port is correct in [.filename]#/etc/ttys#. Also, check [."
"filename]#/var/log/messages# to see if there are any log messages from "
"`init` or `getty`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:763
msgid ""
"Next, try dialing into the system. Be sure to use 8 bits, no parity, and 1 "
"stop bit on the remote system. If a prompt does not appear right away, or "
"the prompt shows garbage, try pressing kbd:[Enter] about once per second. "
"If there is still no `login:` prompt, try sending a `BREAK`. When using a "
"high-speed modem, try dialing again after locking the dialing modem's "
"interface speed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:765
msgid ""
"If there is still no `login:` prompt, check [.filename]#/etc/gettytab# again "
"and double-check that:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:767
msgid ""
"The initial capability name specified in the entry in [.filename]#/etc/ttys# "
"matches the name of a capability in [.filename]#/etc/gettytab#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:768
msgid "Each `nx=` entry matches another [.filename]#gettytab# capability name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:769
msgid "Each `tc=` entry matches another [.filename]#gettytab# capability name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:772
msgid ""
"If the modem on the FreeBSD system will not answer, make sure that the modem "
"is configured to answer the phone when DTR is asserted. If the modem seems "
"to be configured correctly, verify that the DTR line is asserted by checking "
"the modem's indicator lights."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:774
msgid ""
"If it still does not work, try sending an email to the {freebsd-questions} "
"describing the modem and the problem."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:776
#, no-wrap
msgid "Dial-out Service"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:780
msgid ""
"The following are tips for getting the host to connect over the modem to "
"another computer. This is appropriate for establishing a terminal session "
"with a remote host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:784
msgid ""
"This kind of connection can be helpful to get a file on the Internet if "
"there are problems using PPP. If PPP is not working, use the terminal "
"session to FTP the needed file. Then use zmodem to transfer it to the "
"machine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:786
#, no-wrap
msgid "Using a Stock Hayes Modem"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:790
msgid ""
"A generic Hayes dialer is built into `tip`. Use `at=hayes` in [.filename]#/"
"etc/remote#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:793
msgid ""
"The Hayes driver is not smart enough to recognize some of the advanced "
"features of newer modems messages like `BUSY`, `NO DIALTONE`, or `CONNECT "
"115200`. Turn those messages off when using `tip` with `ATX0&W`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:797
msgid ""
"The dial timeout for `tip` is 60 seconds. The modem should use something "
"less, or else `tip` will think there is a communication problem. Try "
"`ATS7=45&W`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:799
#, no-wrap
msgid "Using `AT` Commands"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:803
msgid ""
"Create a \"direct\" entry in [.filename]#/etc/remote#. For example, if the "
"modem is hooked up to the first serial port, [.filename]#/dev/cuau0#, use "
"the following line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:807
#, no-wrap
msgid "cuau0:dv=/dev/cuau0:br#19200:pa=none\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:811
msgid ""
"Use the highest bps rate the modem supports in the `br` capability. Then, "
"type `tip cuau0` to connect to the modem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:813
msgid "Or, use `cu` as `root` with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:817
#, no-wrap
msgid "# cu -lline -sspeed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:821
msgid ""
"_line_ is the serial port, such as [.filename]#/dev/cuau0#, and _speed_ is "
"the speed, such as `57600`. When finished entering the AT commands, type `~."
"` to exit."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:823
#, no-wrap
msgid "The `@` Sign Does Not Work"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:827
msgid ""
"The `@` sign in the phone number capability tells `tip` to look in [."
"filename]#/etc/phones# for a phone number. But, the `@` sign is also a "
"special character in capability files like [.filename]#/etc/remote#, so it "
"needs to be escaped with a backslash:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:831
#, no-wrap
msgid "pn=\\@\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:834
#, no-wrap
msgid "Dialing from the Command Line"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:837
msgid "Put a \"generic\" entry in [.filename]#/etc/remote#. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:844
#, no-wrap
msgid ""
"tip115200|Dial any phone number at 115200 bps:\\\n"
" :dv=/dev/cuau0:br#115200:at=hayes:pa=none:du:\n"
"tip57600|Dial any phone number at 57600 bps:\\\n"
" :dv=/dev/cuau0:br#57600:at=hayes:pa=none:du:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:847
msgid "This should now work:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:851
#, no-wrap
msgid "# tip -115200 5551234\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:854
msgid "Users who prefer `cu` over `tip`, can use a generic `cu` entry:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:859
#, no-wrap
msgid ""
"cu115200|Use cu to dial any number at 115200bps:\\\n"
" :dv=/dev/cuau1:br#57600:at=hayes:pa=none:du:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:862
msgid "and type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:866
#, no-wrap
msgid "# cu 5551234 -s 115200\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:869
#, no-wrap
msgid "Setting the bps Rate"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:874
msgid ""
"Put in an entry for `tip1200` or `cu1200`, but go ahead and use whatever bps "
"rate is appropriate with the `br` capability. `tip` thinks a good default "
"is 1200 bps which is why it looks for a `tip1200` entry. 1200 bps does not "
"have to be used, though."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:876
#, no-wrap
msgid "Accessing a Number of Hosts Through a Terminal Server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:880
msgid ""
"Rather than waiting until connected and typing `CONNECT _host_` each time, "
"use ``tip``'s `cm` capability. For example, these entries in [.filename]#/"
"etc/remote# will let you type `tip pain` or `tip muffin` to connect to the "
"hosts `pain` or `muffin`, and `tip deep13` to connect to the terminal server."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:889
#, no-wrap
msgid ""
"pain|pain.deep13.com|Forrester's machine:\\\n"
" :cm=CONNECT pain\\n:tc=deep13:\n"
"muffin|muffin.deep13.com|Frank's machine:\\\n"
" :cm=CONNECT muffin\\n:tc=deep13:\n"
"deep13:Gizmonics Institute terminal server:\\\n"
" :dv=/dev/cuau2:br#38400:at=hayes:du:pa=none:pn=5551234:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:892
#, no-wrap
msgid "Using More Than One Line with `tip`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:895
msgid ""
"This is often a problem where a university has several modem lines and "
"several thousand students trying to use them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:897
msgid ""
"Make an entry in [.filename]#/etc/remote# and use `@` for the `pn` "
"capability:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:904
#, no-wrap
msgid ""
"big-university:\\\n"
" :pn=\\@:tc=dialout\n"
"dialout:\\\n"
" :dv=/dev/cuau3:br#9600:at=courier:du:pa=none:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:907
msgid "Then, list the phone numbers in [.filename]#/etc/phones#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:914
#, no-wrap
msgid ""
"big-university 5551111\n"
"big-university 5551112\n"
"big-university 5551113\n"
"big-university 5551114\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:918
msgid ""
"`tip` will try each number in the listed order, then give up. To keep "
"retrying, run `tip` in a `while` loop."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:920
#, no-wrap
msgid "Using the Force Character"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:924
msgid ""
"kbd:[Ctrl+P] is the default \"force\" character, used to tell `tip` that the "
"next character is literal data. The force character can be set to any other "
"character with the `~s` escape, which means \"set a variable.\""
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:929
msgid ""
"Type `~sforce=_single-char_` followed by a newline. _single-char_ is any "
"single character. If _single-char_ is left out, then the force character is "
-"the null character, which is accessed by typing kbd:[Ctrl+2] or kbd:[Ctrl"
-"+Space]. A pretty good value for _single-char_ is kbd:[Shift+Ctrl+6], which "
-"is only used on some terminal servers."
+"the null character, which is accessed by typing kbd:[Ctrl+2] or kbd:"
+"[Ctrl+Space]. A pretty good value for _single-char_ is kbd:[Shift+Ctrl+6], "
+"which is only used on some terminal servers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:931
msgid ""
"To change the force character, specify the following in [.filename]#~/."
"tiprc#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:935
#, no-wrap
msgid "force=single-char\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:938
#, no-wrap
msgid "Upper Case Characters"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:943
msgid ""
"This happens when kbd:[Ctrl+A] is pressed, which is ``tip``'s \"raise "
"character\", specially designed for people with broken caps-lock keys. Use "
"`~s` to set `raisechar` to something reasonable. It can be set to be the "
"same as the force character, if neither feature is used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:945
msgid ""
"Here is a sample [.filename]#~/.tiprc# for Emacs users who need to type kbd:"
"[Ctrl+2] and kbd:[Ctrl+A]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:950
#, no-wrap
msgid ""
"force=^^\n"
"raisechar=^^\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:953
msgid "The `^^` is kbd:[Shift+Ctrl+6]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:955
#, no-wrap
msgid "File Transfers with `tip`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:961
msgid ""
"When talking to another UNIX(R)-like operating system, files can be sent and "
"received using `~p` (put) and `~t` (take). These commands run `cat` and "
"`echo` on the remote system to accept and send files. The syntax is: `~p` "
"local-file [ remote-file ] `~t` remote-file [ local-file ]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:963
msgid ""
"There is no error checking, so another protocol, like zmodem, should "
"probably be used."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:965
#, no-wrap
msgid "Using zmodem with `tip`?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:969
msgid ""
"To receive files, start the sending program on the remote end. Then, type "
"`~C rz` to begin receiving them locally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:972
msgid ""
"To send files, start the receiving program on the remote end. Then, type "
"`~C sz _files_` to send them to the remote system."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:974
#, no-wrap
msgid "Setting Up the Serial Console"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:978
msgid ""
"FreeBSD has the ability to boot a system with a dumb terminal on a serial "
"port as a console. This configuration is useful for system administrators "
"who wish to install FreeBSD on machines that have no keyboard or monitor "
"attached, and developers who want to debug the kernel or device drivers."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:982
msgid ""
"As described in crossref:boot[boot,The FreeBSD Booting Process], FreeBSD "
"employs a three stage bootstrap. The first two stages are in the boot block "
"code which is stored at the beginning of the FreeBSD slice on the boot "
"disk. The boot block then loads and runs the boot loader as the third stage "
"code."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:984
msgid ""
"In order to set up booting from a serial console, the boot block code, the "
"boot loader code, and the kernel need to be configured."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:986
#, no-wrap
msgid "Quick Serial Console Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:990
msgid ""
"This section provides a fast overview of setting up the serial console. "
"This procedure can be used when the dumb terminal is connected to [."
"filename]#COM1#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:992
#, no-wrap
msgid "Procedure: Configuring a Serial Console on [.filename]#COM1#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:994
msgid ""
"Connect the serial cable to [.filename]#COM1# and the controlling terminal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:995
msgid ""
"To configure boot messages to display on the serial console, issue the "
"following command as the superuser:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:999
#, no-wrap
msgid "# echo 'console=\"comconsole\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1002
msgid ""
"Edit [.filename]#/etc/ttys# and change `off` to `on` and `dialup` to `vt100` "
"for the [.filename]#ttyu0# entry. Otherwise, a password will not be required "
"to connect via the serial console, resulting in a potential security hole."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1003
msgid "Reboot the system to see if the changes took effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1005
msgid ""
"If a different configuration is required, see the next section for a more in-"
"depth configuration explanation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1007
#, no-wrap
msgid "In-Depth Serial Console Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1010
msgid ""
"This section provides a more detailed explanation of the steps needed to "
"setup a serial console in FreeBSD."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1012
#, no-wrap
msgid "Procedure: Configuring a Serial Console"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1014
msgid "Prepare a serial cable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1017
msgid ""
"Use either a null-modem cable or a standard serial cable and a null-modem "
"adapter. See <<term-cables-null>> for a discussion on serial cables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1018
msgid "Unplug the keyboard."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1021
msgid ""
"Many systems probe for the keyboard during the Power-On Self-Test (POST) and "
"will generate an error if the keyboard is not detected. Some machines will "
"refuse to boot until the keyboard is plugged in."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1023
msgid ""
"If the computer complains about the error, but boots anyway, no further "
"configuration is needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1026
msgid ""
"If the computer refuses to boot without a keyboard attached, configure the "
"BIOS so that it ignores this error. Consult the motherboard's manual for "
"details on how to do this."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1033
msgid ""
"Try setting the keyboard to \"Not installed\" in the BIOS. This setting "
"tells the BIOS not to probe for a keyboard at power-on so it should not "
"complain if the keyboard is absent. If that option is not present in the "
"BIOS, look for an \"Halt on Error\" option instead. Setting this to \"All "
"but Keyboard\" or to \"No Errors\" will have the same effect."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1037
msgid ""
"If the system has a PS/2(R) mouse, unplug it as well. PS/2(R) mice share "
"some hardware with the keyboard and leaving the mouse plugged in can fool "
"the keyboard probe into thinking the keyboard is still there."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1045
msgid ""
"While most systems will boot without a keyboard, quite a few will not boot "
"without a graphics adapter. Some systems can be configured to boot with no "
"graphics adapter by changing the \"graphics adapter\" setting in the BIOS "
"configuration to \"Not installed\". Other systems do not support this "
"option and will refuse to boot if there is no display hardware in the "
"system. With these machines, leave some kind of graphics card plugged in, "
"even if it is just a junky mono board. A monitor does not need to be "
"attached."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1048
msgid ""
"Plug a dumb terminal, an old computer with a modem program, or the serial "
"port on another UNIX(R) box into the serial port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1049
msgid ""
"Add the appropriate `hint.uart.*` entries to [.filename]#/boot/device.hints# "
"for the serial port. Some multi-port cards also require kernel configuration "
"options. Refer to man:uart[4] for the required options and device hints for "
"each supported serial port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1050
msgid ""
"Create [.filename]#boot.config# in the root directory of the `a` partition "
"on the boot drive."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1054
msgid ""
"This file instructs the boot block code how to boot the system. In order to "
"activate the serial console, one or more of the following options are "
"needed. When using multiple options, include them all on the same line:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1055
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1108
#, no-wrap
msgid "`-h`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1060
msgid ""
"Toggles between the internal and serial consoles. Use this to switch "
"console devices. For instance, to boot from the internal (video) console, "
"use `-h` to direct the boot loader and the kernel to use the serial port as "
"its console device. Alternatively, to boot from the serial port, use `-h` "
"to tell the boot loader and the kernel to use the video display as the "
"console instead."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1061
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1111
#, no-wrap
msgid "`-D`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1067
msgid ""
"Toggles between the single and dual console configurations. In the single "
"configuration, the console will be either the internal console (video "
"display) or the serial port, depending on the state of `-h`. In the dual "
"console configuration, both the video display and the serial port will "
"become the console at the same time, regardless of the state of `-h`. "
"However, the dual console configuration takes effect only while the boot "
"block is running. Once the boot loader gets control, the console specified "
"by `-h` becomes the only console."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1068
#, no-wrap
msgid "`-P`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1070
msgid ""
"Makes the boot block probe the keyboard. If no keyboard is found, the `-D` "
"and `-h` options are automatically set."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1077
msgid ""
"Due to space constraints in the current version of the boot blocks, `-P` is "
"capable of detecting extended keyboards only. Keyboards with less than 101 "
"keys and without F11 and F12 keys may not be detected. Keyboards on some "
"laptops may not be properly found because of this limitation. If this is "
"the case, do not use `-P`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1081
msgid ""
"Use either `-P` to select the console automatically or `-h` to activate the "
"serial console. Refer to man:boot[8] and man:boot.config[5] for more "
"details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1085
msgid ""
"The options, except for `-P`, are passed to the boot loader. The boot "
"loader will determine whether the internal video or the serial port should "
"become the console by examining the state of `-h`. This means that if `-D` "
"is specified but `-h` is not specified in [.filename]#/boot.config#, the "
"serial port can be used as the console only during the boot block as the "
"boot loader will use the internal video display as the console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1086
msgid "Boot the machine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1088
msgid ""
"When FreeBSD starts, the boot blocks echo the contents of [.filename]#/boot."
"config# to the console. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1093
#, no-wrap
msgid ""
"/boot.config: -P\n"
"Keyboard: no\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1097
msgid ""
"The second line appears only if `-P` is in [.filename]#/boot.config# and "
"indicates the presence or absence of the keyboard. These messages go to "
"either the serial or internal console, or both, depending on the option in [."
"filename]#/boot.config#:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1102
#, no-wrap
msgid "Options"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1104
#, no-wrap
msgid "Message goes to"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1105
#, no-wrap
msgid "none"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1107
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1119
#, no-wrap
msgid "internal console"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1110
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1121
#, no-wrap
msgid "serial console"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1113
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1116
#, no-wrap
msgid "serial and internal consoles"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1114
#, no-wrap
msgid "`-Dh`"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1117
#, no-wrap
msgid "`-P`, keyboard present"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1120
#, no-wrap
msgid "`-P`, keyboard absent"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1125
msgid ""
"After the message, there will be a small pause before the boot blocks "
"continue loading the boot loader and before any further messages are printed "
"to the console. Under normal circumstances, there is no need to interrupt "
"the boot blocks, but one can do so in order to make sure things are set up "
"correctly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1128
msgid ""
"Press any key, other than kbd:[Enter], at the console to interrupt the boot "
"process. The boot blocks will then prompt for further action:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1134
#, no-wrap
msgid ""
">> FreeBSD/i386 BOOT\n"
"Default: 0:ad(0,a)/boot/loader\n"
"boot:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1138
msgid ""
"Verify that the above message appears on either the serial or internal "
"console, or both, according to the options in [.filename]#/boot.config#. If "
"the message appears in the correct console, press kbd:[Enter] to continue "
"the boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1142
msgid ""
"If there is no prompt on the serial terminal, something is wrong with the "
"settings. Enter `-h` then kbd:[Enter] or kbd:[Return] to tell the boot "
"block (and then the boot loader and the kernel) to choose the serial port "
"for the console. Once the system is up, go back and check what went wrong."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1145
msgid ""
"During the third stage of the boot process, one can still switch between the "
"internal console and the serial console by setting appropriate environment "
"variables in the boot loader. See man:loader[8] for more information."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1149
msgid ""
"This line in [.filename]#/boot/loader.conf# or [.filename]#/boot/loader.conf."
"local# configures the boot loader and the kernel to send their boot messages "
"to the serial console, regardless of the options in [.filename]#/boot."
"config#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1153
#, no-wrap
msgid "console=\"comconsole\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1156
msgid ""
"That line should be the first line of [.filename]#/boot/loader.conf# so that "
"boot messages are displayed on the serial console as early as possible."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1159
msgid ""
"If that line does not exist, or if it is set to `console=\"vidconsole\"`, "
"the boot loader and the kernel will use whichever console is indicated by `-"
"h` in the boot block. See man:loader.conf[5] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1161
msgid ""
"At the moment, the boot loader has no option equivalent to `-P` in the boot "
"block, and there is no provision to automatically select the internal "
"console and the serial console based on the presence of the keyboard."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1168
msgid ""
"While it is not required, it is possible to provide a `login` prompt over "
"the serial line. To configure this, edit the entry for the serial port in [."
"filename]#/etc/ttys# using the instructions in <<term-config>>. If the "
"speed of the serial port has been changed, change `std.9600` to match the "
"new setting."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1170
#, no-wrap
msgid "Setting a Faster Serial Port Speed"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1174
msgid ""
"By default, the serial port settings are 9600 baud, 8 bits, no parity, and 1 "
"stop bit. To change the default console speed, use one of the following "
"options:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1177
msgid ""
"Edit [.filename]#/etc/make.conf# and set `BOOT_COMCONSOLE_SPEED` to the new "
"console speed. Then, recompile and install the boot blocks and the boot "
"loader:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1184
#, no-wrap
msgid ""
"# cd /sys/boot\n"
"# make clean\n"
"# make\n"
"# make install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1187
msgid ""
"If the serial console is configured in some other way than by booting with `-"
"h`, or if the serial console used by the kernel is different from the one "
"used by the boot blocks, add the following option, with the desired speed, "
"to a custom kernel configuration file and compile a new kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1191
#, no-wrap
msgid "options CONSPEED=19200\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1194
msgid ""
"Add the `-S__19200__` boot option to [.filename]#/boot.config#, replacing "
"`_19200_` with the speed to use."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1195
msgid ""
"Add the following options to [.filename]#/boot/loader.conf#. Replace "
"`_115200_` with the speed to use."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1202
#, no-wrap
msgid ""
"boot_multicons=\"YES\"\n"
"boot_serial=\"YES\"\n"
"comconsole_speed=\"115200\"\n"
"console=\"comconsole,vidconsole\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1205
#, no-wrap
msgid "Entering the DDB Debugger from the Serial Line"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1210
msgid ""
"To configure the ability to drop into the kernel debugger from the serial "
"console, add the following options to a custom kernel configuration file and "
"compile the kernel using the instructions in crossref:"
"kernelconfig[kernelconfig,Configuring the FreeBSD Kernel]. Note that while "
"this is useful for remote diagnostics, it is also dangerous if a spurious "
"BREAK is generated on the serial port. Refer to man:ddb[4] and man:ddb[8] "
"for more information about the kernel debugger."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/serialcomms/_index.adoc:1215
#, no-wrap
msgid ""
"options BREAK_TO_DEBUGGER\n"
"options DDB\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/usb-device-mode/_index.po b/documentation/content/en/books/handbook/usb-device-mode/_index.po
index 13beea90e4..22663c65ca 100644
--- a/documentation/content/en/books/handbook/usb-device-mode/_index.po
+++ b/documentation/content/en/books/handbook/usb-device-mode/_index.po
@@ -1,547 +1,547 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:1
#, no-wrap
msgid "This chapter covers the use of USB Device Mode and USB On The Go (USB OTG) in FreeBSD"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:1
#, no-wrap
-msgid "Chapter 26. USB Device Mode / USB OTG"
+msgid "Chapter 27. USB Device Mode / USB OTG"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:15
#, no-wrap
msgid "USB Device Mode / USB OTG"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:57
msgid ""
"This chapter covers the use of USB Device Mode and USB On The Go (USB OTG) "
"in FreeBSD. This includes virtual serial consoles, virtual network "
"interfaces, and virtual USB drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:62
msgid ""
"When running on hardware that supports USB device mode or USB OTG, like that "
"built into many embedded boards, the FreeBSD USB stack can run in _device "
"mode_. Device mode makes it possible for the computer to present itself as "
"different kinds of USB device classes, including serial ports, network "
"adapters, and mass storage, or a combination thereof. A USB host like a "
"laptop or desktop computer is able to access them just like physical USB "
"devices. Device mode is sometimes called the \"USB gadget mode\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:68
msgid ""
"There are two basic ways the hardware can provide the device mode "
"functionality: with a separate \"client port\", which only supports the "
"device mode, and with a USB OTG port, which can provide both device and host "
"mode. For USB OTG ports, the USB stack switches between host-side and "
"device-side automatically, depending on what is connected to the port. "
"Connecting a USB device like a memory stick to the port causes FreeBSD to "
"switch to host mode. Connecting a USB host like a computer causes FreeBSD "
"to switch to device mode. Single purpose \"client ports\" always work in "
"device mode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:73
msgid ""
"What FreeBSD presents to the USB host depends on the `hw.usb.template` "
"sysctl. Some templates provide a single device, such as a serial terminal; "
"others provide multiple ones, which can all be used at the same time. An "
"example is the template 10, which provides a mass storage device, a serial "
"console, and a network interface. See man:usb_template[4] for the list of "
"available values."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:77
msgid ""
"Note that in some cases, depending on the hardware and the hosts operating "
"system, for the host to notice the configuration change, it must be either "
"physically disconnected and reconnected, or forced to rescan the USB bus in "
"a system-specific way. When FreeBSD is running on the host, man:"
"usbconfig[8] `reset` can be used. This also must be done after loading [."
"filename]#usb_template.ko# if the USB host was already connected to the "
"USBOTG socket."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:79
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:81
msgid "How to set up USB Device Mode functionality on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:82
msgid "How to configure the virtual serial port on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:83
msgid ""
"How to connect to the virtual serial port from various operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:84
msgid "How to configure FreeBSD to provide a virtual USB network interface."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:85
msgid "How to configure FreeBSD to provide a virtual USB storage device."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:87
#, no-wrap
msgid "USB Virtual Serial Ports"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:89
#, no-wrap
msgid "Configuring USB Device Mode Serial Ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:95
msgid ""
"Virtual serial port support is provided by templates number 3, 8, and 10. "
"Note that template 3 works with Microsoft Windows 10 without the need for "
"special drivers and INF files. Other host operating systems work with all "
"three templates. Both man:usb_template[4] and man:umodem[4] kernel modules "
"must be loaded."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:97
msgid ""
"To enable USB device mode serial ports, add those lines to [.filename]#/etc/"
"ttys#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:102
#, no-wrap
msgid ""
"ttyU0\t\"/usr/libexec/getty 3wire\"\tvt100\tonifconsole secure\n"
"ttyU1\t\"/usr/libexec/getty 3wire\"\tvt100\tonifconsole secure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:105
msgid "Then add these lines to [.filename]#/etc/devd.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:115
#, no-wrap
msgid ""
"notify 100 {\n"
"\tmatch \"system\"\t\t\"DEVFS\";\n"
"\tmatch \"subsystem\"\t\"CDEV\";\n"
"\tmatch \"type\"\t\t\"CREATE\";\n"
"\tmatch \"cdev\"\t\t\"ttyU[0-9]+\";\n"
"\taction \"/sbin/init q\";\n"
"};\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:118
msgid "Reload the configuration if man:devd[8] is already running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:122
#, no-wrap
msgid "# service devd restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:125
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:192
msgid ""
"Make sure the necessary modules are loaded and the correct template is set "
"at boot by adding those lines to [.filename]#/boot/loader.conf#, creating it "
"if it does not already exist:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:130
#, no-wrap
msgid ""
"umodem_load=\"YES\"\n"
"hw.usb.template=3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:133
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:200
msgid "To load the module and set the template without rebooting use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:138
#, no-wrap
msgid ""
"# kldload umodem\n"
"# sysctl hw.usb.template=3\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:140
#, no-wrap
msgid "Connecting to USB Device Mode Serial Ports from FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:146
msgid ""
"To connect to a board configured to provide USB device mode serial ports, "
"connect the USB host, such as a laptop, to the boards USB OTG or USB client "
"port. Use `pstat -t` on the host to list the terminal lines. Near the end "
"of the list you should see a USB serial port, e.g. \"ttyU0\". To open the "
"connection, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:150
#, no-wrap
msgid "# cu -l /dev/ttyU0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:153
msgid ""
"After pressing the kbd:[Enter] key a few times you will see a login prompt."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:154
#, no-wrap
msgid "Connecting to USB Device Mode Serial Ports from macOS"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:158
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:168
msgid ""
"To connect to a board configured to provide USB device mode serial ports, "
"connect the USB host, such as a laptop, to the boards USB OTG or USB client "
"port. To open the connection, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:162
#, no-wrap
msgid "# cu -l /dev/cu.usbmodemFreeBSD1\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:164
#, no-wrap
msgid "Connecting to USB Device Mode Serial Ports from Linux"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:172
#, no-wrap
msgid "# minicom -D /dev/ttyACM0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:174
#, no-wrap
msgid "Connecting to USB Device Mode Serial Ports from Microsoft Windows 10"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:182
msgid ""
"To connect to a board configured to provide USB device mode serial ports, "
"connect the USB host, such as a laptop, to the boards USB OTG or USB client "
"port. To open a connection you will need a serial terminal program, such as "
"PuTTY. To check the COM port name used by Windows, run Device Manager, "
"expand \"Ports (COM & LPT)\". You will see a name similar to \"USB Serial "
"Device (COM4)\". Run serial terminal program of your choice, for example "
"PuTTY. In the PuTTY dialog set \"Connection type\" to \"Serial\", type the "
"COMx obtained from Device Manager in the \"Serial line\" dialog box and "
"click Open."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:184
#, no-wrap
msgid "USB Device Mode Network Interfaces"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:190
msgid ""
"Virtual network interfaces support is provided by templates number 1, 8, and "
"10. Note that none of them works with Microsoft Windows. Other host "
"operating systems work with all three templates. Both man:usb_template[4] "
"and man:if_cdce[4] kernel modules must be loaded."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:197
#, no-wrap
msgid ""
"if_cdce_load=\"YES\"\n"
"hw.usb.template=1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:205
#, no-wrap
msgid ""
"# kldload if_cdce\n"
"# sysctl hw.usb.template=1\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:208
#, no-wrap
msgid "USB Virtual Storage Device"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:213
msgid ""
"The man:cfumass[4] driver is a USB device mode driver first available in "
"FreeBSD 12.0."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:219
msgid ""
"Mass Storage target is provided by templates 0 and 10. Both man:"
"usb_template[4] and man:cfumass[4] kernel modules must be loaded. man:"
"cfumass[4] interfaces to the CTL subsystem, the same one that is used for "
"iSCSI or Fibre Channel targets. On the host side, USB Mass Storage "
"initiators can only access a single LUN, LUN 0."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:220
#, no-wrap
msgid "Configuring USB Mass Storage Target Using the cfumass Startup Script"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:224
msgid ""
"The simplest way to set up a read-only USB storage target is to use the [."
"filename]#cfumass# rc script. To configure it this way, copy the files to "
"be presented to the USB host machine into the `/var/cfumass` directory, and "
"add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:228
#, no-wrap
msgid "cfumass_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:231
msgid "To configure the target without restarting, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:235
#, no-wrap
msgid "# service cfumass start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:240
msgid ""
"Differently from serial and network functionality, the template should not "
"be set to 0 or 10 in [.filename]#/boot/loader.conf#. This is because the "
"LUN must be set up before setting the template. The cfumass startup script "
"sets the correct template number automatically when started."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:241
#, no-wrap
msgid "Configuring USB Mass Storage Using Other Means"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:245
msgid ""
"The rest of this chapter provides detailed description of setting the target "
"without using the cfumass rc file. This is necessary if e.g. one wants to "
"provide a writeable LUN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:251
msgid ""
"USB Mass Storage does not require the man:ctld[8] daemon to be running, "
"although it can be used if desired. This is different from iSCSI. Thus, "
"there are two ways to configure the target: man:ctladm[8], or man:ctld[8]. "
"Both require the [.filename]#cfumass.ko# kernel module to be loaded. The "
"module can be loaded manually:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:255
#, no-wrap
msgid "# kldload cfumass\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:258
msgid ""
"If [.filename]#cfumass.ko# has not been built into the kernel, [.filename]#/"
"boot/loader.conf# can be set to load the module at boot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:262
#, no-wrap
msgid "cfumass_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:265
msgid "A LUN can be created without the man:ctld[8] daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:269
#, no-wrap
msgid "# ctladm create -b block -o file=/data/target0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:274
msgid ""
"This presents the contents of the image file [.filename]#/data/target0# as a "
"LUN to the USB host. The file must exist before executing the command. To "
"configure the LUN at system startup, add the command to [.filename]#/etc/rc."
"local#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:277
msgid ""
"man:ctld[8] can also be used to manage LUNs. Create [.filename]#/etc/ctl."
"conf#, add a line to [.filename]#/etc/rc.conf# to make sure man:ctld[8] is "
"automatically started at boot, and then start the daemon."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:280
msgid ""
"This is an example of a simple [.filename]#/etc/ctl.conf# configuration "
"file. Refer to man:ctl.conf[5] for a more complete description of the "
"options."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:289
#, no-wrap
msgid ""
"target naa.50015178f369f092 {\n"
"\tlun 0 {\n"
"\t\tpath /data/target0\n"
"\t\tsize 4G\n"
"\t}\n"
"}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:296
msgid ""
"The example creates a single target with a single LUN. The "
"`naa.50015178f369f092` is a device identifier composed of 32 random "
"hexadecimal digits. The `path` line defines the full path to a file or zvol "
"backing the LUN. That file must exist before starting man:ctld[8]. The "
"second line is optional and specifies the size of the LUN."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:298
msgid ""
"To make sure the man:ctld[8] daemon is started at boot, add this line to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:302
#, no-wrap
msgid "ctld_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:305
msgid "To start man:ctld[8] now, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:309
#, no-wrap
msgid "# service ctld start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:313
msgid ""
"As the man:ctld[8] daemon is started, it reads [.filename]#/etc/ctl.conf#. "
"If this file is edited after the daemon starts, reload the changes so they "
"take effect immediately:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/usb-device-mode/_index.adoc:317
#, no-wrap
msgid "# service ctld reload\n"
msgstr ""
diff --git a/documentation/content/en/books/handbook/virtualization/_index.po b/documentation/content/en/books/handbook/virtualization/_index.po
index 27a85673e9..e389aeb075 100644
--- a/documentation/content/en/books/handbook/virtualization/_index.po
+++ b/documentation/content/en/books/handbook/virtualization/_index.po
@@ -1,2304 +1,2304 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1
#, no-wrap
msgid "Virtualization software allows multiple operating systems to run simultaneously on the same computer"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1
#, no-wrap
-msgid "Chapter 22. Virtualization"
+msgid "Chapter 23. Virtualization"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/virtualization/_index.adoc:15
#, no-wrap
msgid "Virtualization"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:57
msgid ""
"Virtualization software allows multiple operating systems to run "
"simultaneously on the same computer. Such software systems for PCs often "
"involve a host operating system which runs the virtualization software and "
"supports any number of guest operating systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:59
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:61
msgid ""
"The difference between a host operating system and a guest operating system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:62
msgid "How to install FreeBSD on the following virtualization platforms:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:63
msgid "Parallels Desktop(Intel(R)-based Apple(R) macOS(R))"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:64
msgid "VMware Fusion(Intel(R)-based Apple(R) macOS(R))"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:65
msgid ""
"VirtualBox(TM)(Microsoft(R) Windows(R), Intel(R)-based Apple(R) macOS(R), "
"Linux)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:66
msgid "bhyve(FreeBSD)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:67
msgid "How to tune a FreeBSD system for best performance under virtualization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:69
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:71
msgid "Understand the crossref:basics[basics,basics of UNIX(R) and FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:72
msgid "Know how to crossref:bsdinstall[bsdinstall,install FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:73
msgid ""
"Know how to crossref:advanced-networking[advanced-networking,set up a "
"network connection]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:74
msgid ""
"Know how to crossref:ports[ports,install additional third-party software]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:76
#, no-wrap
msgid "FreeBSD as a Guest on Parallels Desktop for macOS(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:81
msgid ""
"Parallels Desktop for Mac(R) is a commercial software product available for "
"Intel(R) based Apple(R) Mac(R) computers running macOS(R) 10.4.6 or higher. "
"FreeBSD is a fully supported guest operating system. Once Parallels has "
"been installed on macOS(R), the user must configure a virtual machine and "
"then install the desired guest operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:83
#, no-wrap
msgid "Installing FreeBSD on Parallels Desktop on Mac(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:87
msgid ""
"The first step in installing FreeBSD on Parallels is to create a new virtual "
"machine for installing FreeBSD. Select [.guimenuitem]#FreeBSD# as the menu:"
"Guest OS Type[] when prompted:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:88
#, no-wrap
msgid "parallels-freebsd1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:92
msgid ""
"Choose a reasonable amount of disk and memory depending on the plans for "
"this virtual FreeBSD instance. 4GB of disk space and 512MB of RAM work well "
"for most uses of FreeBSD under Parallels:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:93
#, no-wrap
msgid "parallels-freebsd2.png"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:95
#, no-wrap
msgid "parallels-freebsd3.png"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:97
#, no-wrap
msgid "parallels-freebsd4.png"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:99
#, no-wrap
msgid "parallels-freebsd5.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:102
msgid "Select the type of networking and a network interface:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:103
#, no-wrap
msgid "parallels-freebsd6.png"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:105
#, no-wrap
msgid "parallels-freebsd7.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:108
msgid "Save and finish the configuration:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:109
#, no-wrap
msgid "parallels-freebsd8.png"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:111
#, no-wrap
msgid "parallels-freebsd9.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:118
msgid ""
"After the FreeBSD virtual machine has been created, FreeBSD can be installed "
"on it. This is best done with an official FreeBSD CD/DVD or with an ISO "
"image downloaded from an official FTP site. Copy the appropriate ISO image "
"to the local Mac(R) filesystem or insert a CD/DVD in the Mac(R)'s CD-ROM "
"drive. Click on the disc icon in the bottom right corner of the FreeBSD "
"Parallels window. This will bring up a window that can be used to associate "
"the CD-ROM drive in the virtual machine with the ISO file on disk or with "
"the real CD-ROM drive."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:119
#, no-wrap
msgid "parallels-freebsd11.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:123
msgid ""
"Once this association with the CD-ROM source has been made, reboot the "
"FreeBSD virtual machine by clicking the reboot icon. Parallels will reboot "
"with a special BIOS that first checks if there is a CD-ROM."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:124
#, no-wrap
msgid "parallels-freebsd10.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:128
msgid ""
"In this case it will find the FreeBSD installation media and begin a normal "
"FreeBSD installation. Perform the installation, but do not attempt to "
"configure Xorg at this time."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:129
#, no-wrap
msgid "parallels-freebsd12.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:132
msgid ""
"When the installation is finished, reboot into the newly installed FreeBSD "
"virtual machine."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:133
#, no-wrap
msgid "parallels-freebsd13.png"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:136
#, no-wrap
msgid "Configuring FreeBSD on Parallels"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:139
msgid ""
"After FreeBSD has been successfully installed on macOS(R) X with Parallels, "
"there are a number of configuration steps that can be taken to optimize the "
"system for virtualized operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:142
#: documentation/content/en/books/handbook/virtualization/_index.adoc:248
msgid "Set Boot Loader Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:145
msgid ""
"The most important step is to reduce the `kern.hz` tunable to reduce the CPU "
"utilization of FreeBSD under the Parallels environment. This is "
"accomplished by adding the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:149
#: documentation/content/en/books/handbook/virtualization/_index.adoc:255
#, no-wrap
msgid "kern.hz=100\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:153
msgid ""
"Without this setting, an idle FreeBSD Parallels guest will use roughly 15% "
"of the CPU of a single processor iMac(R). After this change the usage will "
"be closer to 5%."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:154
#: documentation/content/en/books/handbook/virtualization/_index.adoc:260
msgid "Create a New Kernel Configuration File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:157
msgid ""
"All of the SCSI, FireWire, and USB device drivers can be removed from a "
"custom kernel configuration file. Parallels provides a virtual network "
"adapter used by the man:ed[4] driver, so all network devices except for man:"
"ed[4] and man:miibus[4] can be removed from the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:158
#: documentation/content/en/books/handbook/virtualization/_index.adoc:264
msgid "Configure Networking"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:162
msgid ""
"The most basic networking setup uses DHCP to connect the virtual machine to "
"the same local area network as the host Mac(R). This can be accomplished by "
"adding `ifconfig_ed0=\"DHCP\"` to [.filename]#/etc/rc.conf#. More advanced "
"networking setups are described in crossref:advanced-networking[advanced-"
"networking,Advanced Networking]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:164
#, no-wrap
msgid "FreeBSD as a Guest on VMware Fusion for macOS(R)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:169
msgid ""
"VMware Fusion for Mac(R) is a commercial software product available for "
"Intel(R) based Apple(R) Mac(R) computers running macOS(R) 10.11 or higher. "
"FreeBSD is a fully supported guest operating system. Once VMware Fusion has "
"been installed on macOS(R), the user can configure a virtual machine and "
"then install the desired guest operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:171
#, no-wrap
msgid "Installing FreeBSD on VMware Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:175
msgid ""
"The first step is to start VMware Fusion which will load the Virtual Machine "
"Library. Click [.guimenuitem]#+->New# to create the virtual machine:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:176
#, no-wrap
msgid "vmware-freebsd01.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:180
msgid ""
"This will load the New Virtual Machine Assistant. Choose [."
"guimenuitem]#Create a custom virtual machine# and click [."
"guimenuitem]#Continue# to proceed:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:181
#, no-wrap
msgid "vmware-freebsd02.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:184
msgid ""
"Select [.guimenuitem]#Other# as the [.guimenuitem]#Operating System# and "
"either [.guimenuitem]#FreeBSD X# or [.guimenuitem]#FreeBSD X 64-bit#, as the "
"menu:Version[] when prompted:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:185
#, no-wrap
msgid "vmware-freebsd03.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:188
msgid "Choose the firmware(UEFI is recommended):"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:189
#, no-wrap
msgid "vmware-freebsd04.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:192
msgid ""
"Choose [.guimenuitem]#Create a new virtual disk# and click [."
"guimenuitem]#Continue#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:193
#, no-wrap
msgid "vmware-freebsd05.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:196
msgid "Check the configuration and click [.guimenuitem]#Finish#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:197
#, no-wrap
msgid "vmware-freebsd06.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:200
msgid ""
"Choose the name of the virtual machine and the directory where it should be "
"saved:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:201
#, no-wrap
msgid "vmware-freebsd07.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:204
msgid ""
"Press command+E to open virtual machine settings and click [.guimenuitem]#CD/"
"DVD#:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:205
#, no-wrap
msgid "vmware-freebsd08.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:208
msgid "Choose FreeBSD ISO image or from a CD/DVD:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:209
#: documentation/content/en/books/handbook/virtualization/_index.adoc:231
#, no-wrap
msgid "vmware-freebsd09.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:212
msgid "Start the virtual machine:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:213
#, no-wrap
msgid "vmware-freebsd10.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:216
msgid "Install FreeBSD as usual:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:217
#, no-wrap
msgid "vmware-freebsd11.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:220
msgid ""
"Once the install is complete, the settings of the virtual machine can be "
"modified, such as memory usage and the number of CPUs the virtual machine "
"will have access to:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:224
msgid ""
"The System Hardware settings of the virtual machine cannot be modified while "
"the virtual machine is running."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:226
#, no-wrap
msgid "vmware-freebsd12.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:230
msgid ""
"The status of the CD-ROM device. Normally the CD/DVD/ISO is disconnected "
"from the virtual machine when it is no longer needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:236
msgid ""
"The last thing to change is how the virtual machine will connect to the "
"network. To allow connections to the virtual machine from other machines "
"besides the host, choose [.guimenuitem]#Connect directly to the physical "
"network (Bridged)#. Otherwise, [.guimenuitem]#Share the host's internet "
"connection (NAT)# is preferred so that the virtual machine can have access "
"to the Internet, but the network cannot access the virtual machine."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/virtualization/_index.adoc:237
#, no-wrap
msgid "vmware-freebsd13.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:240
msgid ""
"After modifying the settings, boot the newly installed FreeBSD virtual "
"machine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:242
#, no-wrap
msgid "Configuring FreeBSD on VMware Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:245
msgid ""
"After FreeBSD has been successfully installed on macOS(R) X with VMware "
"Fusion, there are a number of configuration steps that can be taken to "
"optimize the system for virtualized operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:251
msgid ""
"The most important step is to reduce the `kern.hz` tunable to reduce the CPU "
"utilization of FreeBSD under the VMware Fusion environment. This is "
"accomplished by adding the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:259
msgid ""
"Without this setting, an idle FreeBSD VMware Fusion guest will use roughly "
"15% of the CPU of a single processor iMac(R). After this change, the usage "
"will be closer to 5%."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:263
msgid ""
"All of the FireWire, and USB device drivers can be removed from a custom "
"kernel configuration file. VMware Fusion provides a virtual network adapter "
"used by the man:em[4] driver, so all network devices except for man:em[4] "
"can be removed from the kernel."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:268
msgid ""
"The most basic networking setup uses DHCP to connect the virtual machine to "
"the same local area network as the host Mac(R). This can be accomplished by "
"adding `ifconfig_em0=\"DHCP\"` to [.filename]#/etc/rc.conf#. More advanced "
"networking setups are described in crossref:advanced-networking[advanced-"
"networking,Advanced Networking]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:270
msgid "Install drivers and open-vm-tools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:272
msgid "To run FreeBSD smoothly on VMWare, drivers should be installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:276
#, no-wrap
msgid "# pkg install xf86-video-vmware xf86-input-vmmouse open-vm-tools\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:279
#, no-wrap
msgid "FreeBSD as a Guest on VirtualBox(TM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:283
msgid ""
"FreeBSD works well as a guest in VirtualBox(TM). The virtualization "
"software is available for most common operating systems, including FreeBSD "
"itself."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:285
msgid "The VirtualBox(TM) guest additions provide support for:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:287
msgid "Clipboard sharing."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:288
msgid "Mouse pointer integration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:289
msgid "Host time synchronization."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:290
msgid "Window scaling."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:291
msgid "Seamless mode."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:295
msgid "These commands are run in the FreeBSD guest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:299
msgid ""
"First, install the package:emulators/virtualbox-ose-additions[] package or "
"port in the FreeBSD guest. This will install the port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:303
#, no-wrap
msgid "# cd /usr/ports/emulators/virtualbox-ose-additions && make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:306
msgid "Add these lines to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:311
#, no-wrap
msgid ""
"vboxguest_enable=\"YES\"\n"
"vboxservice_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:314
msgid ""
"If man:ntpd[8] or man:ntpdate[8] is used, disable host time synchronization:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:318
#, no-wrap
msgid "vboxservice_flags=\"--disable-timesync\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:322
msgid ""
"Xorg will automatically recognize the `vboxvideo` driver. It can also be "
"manually entered in [.filename]#/etc/X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:331
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"vboxvideo\"\n"
"\tVendorName \"InnoTek Systemberatung GmbH\"\n"
"\tBoardName \"VirtualBox Graphics Adapter\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:334
msgid ""
"To use the `vboxmouse` driver, adjust the mouse section in [.filename]#/etc/"
"X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:341
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
"\tIdentifier \"Mouse0\"\n"
"\tDriver \"vboxmouse\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:344
msgid ""
"HAL users should create the following [.filename]#/usr/local/etc/hal/fdi/"
"policy/90-vboxguest.fdi# or copy it from [.filename]#/usr/local/share/hal/"
"fdi/policy/10osvendor/90-vboxguest.fdi#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:352
#, no-wrap
msgid ""
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<!--\n"
"# Sun VirtualBox\n"
"# Hal driver description for the vboxmouse driver\n"
"# $Id: chapter.xml,v 1.33 2012-03-17 04:53:52 eadler Exp $\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:354
#, no-wrap
msgid "\tCopyright (C) 2008-2009 Sun Microsystems, Inc.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:362
#, no-wrap
msgid ""
"\tThis file is part of VirtualBox Open Source Edition (OSE, as\n"
"\tavailable from http://www.virtualbox.org. This file is free software;\n"
"\tyou can redistribute it and/or modify it under the terms of the GNU\n"
"\tGeneral Public License (GPL) as published by the Free Software\n"
"\tFoundation, in version 2 as it comes in the \"COPYING\" file of the\n"
"\tVirtualBox OSE distribution. VirtualBox OSE is distributed in the\n"
"\thope that it will be useful, but WITHOUT ANY WARRANTY of any kind.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:379
#, no-wrap
msgid ""
"\tPlease contact Sun Microsystems, Inc., 4150 Network Circle, Santa\n"
"\tClara, CA 95054 USA or visit http://www.sun.com if you need\n"
"\tadditional information or have any questions.\n"
"-->\n"
"<deviceinfo version=\"0.2\">\n"
" <device>\n"
" <match key=\"info.subsystem\" string=\"pci\">\n"
" <match key=\"info.product\" string=\"VirtualBox guest Service\">\n"
" <append key=\"info.capabilities\" type=\"strlist\">input</append>\n"
"\t<append key=\"info.capabilities\" type=\"strlist\">input.mouse</append>\n"
" <merge key=\"input.x11_driver\" type=\"string\">vboxmouse</merge>\n"
"\t<merge key=\"input.device\" type=\"string\">/dev/vboxguest</merge>\n"
" </match>\n"
" </match>\n"
" </device>\n"
"</deviceinfo>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:384
msgid ""
"Shared folders for file transfers between host and VM are accessible by "
"mounting them using `mount_vboxvfs`. A shared folder can be created on the "
"host using the VirtualBox GUI or via `vboxmanage`. For example, to create a "
"shared folder called _myshare_ under [.filename]#/mnt/bsdboxshare# for the "
"VM named _BSDBox_, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:388
#, no-wrap
msgid "# vboxmanage sharedfolder add 'BSDBox' --name myshare --hostpath /mnt/bsdboxshare\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:392
msgid ""
"Note that the shared folder name must not contain spaces. Mount the shared "
"folder from within the guest system like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:396
#, no-wrap
msgid "# mount_vboxvfs -w myshare /mnt\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:399
#, no-wrap
msgid "FreeBSD as a Host with VirtualBox(TM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:407
msgid ""
"VirtualBox(TM) is an actively developed, complete virtualization package, "
"that is available for most operating systems including Windows(R), macOS(R), "
"Linux(R) and FreeBSD. It is equally capable of running Windows(R) or "
"UNIX(R)-like guests. It is released as open source software, but with "
"closed-source components available in a separate extension pack. These "
"components include support for USB 2.0 devices. More information may be "
"found on the http://www.virtualbox.org/wiki/Downloads[Downloads page of the "
"VirtualBox(TM) wiki]. Currently, these extensions are not available for "
"FreeBSD."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:409
#, no-wrap
msgid "Installing VirtualBox(TM)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:413
msgid ""
"VirtualBox(TM) is available as a FreeBSD package or port in package:"
"emulators/virtualbox-ose[]. The port can be installed using these commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:418
#, no-wrap
msgid ""
"# cd /usr/ports/emulators/virtualbox-ose\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:423
msgid ""
"One useful option in the port's configuration menu is the `GuestAdditions` "
"suite of programs. These provide a number of useful features in guest "
"operating systems, like mouse pointer integration (allowing the mouse to be "
"shared between host and guest without the need to press a special keyboard "
"shortcut to switch) and faster video rendering, especially in Windows(R) "
"guests. The guest additions are available in the menu:Devices[] menu, after "
"the installation of the guest is finished."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:426
msgid ""
"A few configuration changes are needed before VirtualBox(TM) is started for "
"the first time. The port installs a kernel module in [.filename]#/boot/"
"modules# which must be loaded into the running kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:430
#, no-wrap
msgid "# kldload vboxdrv\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:433
msgid ""
"To ensure the module is always loaded after a reboot, add this line to [."
"filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:437
#, no-wrap
msgid "vboxdrv_load=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:440
msgid ""
"To use the kernel modules that allow bridged or host-only networking, add "
"this line to [.filename]#/etc/rc.conf# and reboot the computer:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:444
#, no-wrap
msgid "vboxnet_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:449
msgid ""
"The `vboxusers` group is created during installation of VirtualBox(TM). All "
"users that need access to VirtualBox(TM) will have to be added as members of "
"this group. `pw` can be used to add new members:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:453
#, no-wrap
msgid "# pw groupmod vboxusers -m yourusername\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:456
msgid ""
"The default permissions for [.filename]#/dev/vboxnetctl# are restrictive and "
"need to be changed for bridged networking:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:461
#, no-wrap
msgid ""
"# chown root:vboxusers /dev/vboxnetctl\n"
"# chmod 0660 /dev/vboxnetctl\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:464
msgid ""
"To make this permissions change permanent, add these lines to [.filename]#/"
"etc/devfs.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:469
#, no-wrap
msgid ""
"own vboxnetctl root:vboxusers\n"
"perm vboxnetctl 0660\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:472
msgid "To launch VirtualBox(TM), type from an Xorg session:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:476
#, no-wrap
msgid "% VirtualBox\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:480
msgid ""
"For more information on configuring and using VirtualBox(TM), refer to the "
"http://www.virtualbox.org[official website]. For FreeBSD-specific "
"information and troubleshooting instructions, refer to the http://wiki."
"FreeBSD.org/VirtualBox[relevant page in the FreeBSD wiki]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:482
#, no-wrap
msgid "VirtualBox(TM) USB Support"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:486
msgid ""
"VirtualBox(TM) can be configured to pass USB devices through to the guest "
"operating system. The host controller of the OSE version is limited to "
"emulating USB 1.1 devices until the extension pack supporting USB 2.0 and "
"3.0 devices becomes available on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:488
msgid ""
"For VirtualBox(TM) to be aware of USB devices attached to the machine, the "
"user needs to be a member of the `operator` group."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:492
#, no-wrap
msgid "# pw groupmod operator -m yourusername\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:495
msgid ""
"Then, add the following to [.filename]#/etc/devfs.rules#, or create this "
"file if it does not exist yet:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:500
#, no-wrap
msgid ""
"[system=10]\n"
"add path 'usb/*' mode 0660 group operator\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:503
msgid ""
"To load these new rules, add the following to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:507
#, no-wrap
msgid "devfs_system_ruleset=\"system\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:510
msgid "Then, restart devfs:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:514
#: documentation/content/en/books/handbook/virtualization/_index.adoc:554
#, no-wrap
msgid "# service devfs restart\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:517
msgid ""
"Restart the login session and VirtualBox(TM) for these changes to take "
"effect, and create USB filters as necessary."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:519
#, no-wrap
msgid "VirtualBox(TM) Host DVD/CD Access"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:527
msgid ""
"Access to the host DVD/CD drives from guests is achieved through the sharing "
"of the physical drives. Within VirtualBox(TM), this is set up from the "
"Storage window in the Settings of the virtual machine. If needed, create an "
"empty IDECD/DVD device first. Then choose the Host Drive from the popup "
"menu for the virtual CD/DVD drive selection. A checkbox labeled "
"`Passthrough` will appear. This allows the virtual machine to use the "
"hardware directly. For example, audio CDs or the burner will only function "
"if this option is selected."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:529
msgid ""
"HAL needs to run for VirtualBox(TM)DVD/CD functions to work, so enable it in "
"[.filename]#/etc/rc.conf# and start it if it is not already running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:533
#, no-wrap
msgid "hald_enable=\"YES\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:538
#, no-wrap
msgid "# service hald start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:543
msgid ""
"In order for users to be able to use VirtualBox(TM)DVD/CD functions, they "
"need access to [.filename]#/dev/xpt0#, [.filename]#/dev/cdN#, and [."
"filename]#/dev/passN#. This is usually achieved by making the user a member "
"of `operator`. Permissions to these devices have to be corrected by adding "
"these lines to [.filename]#/etc/devfs.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:549
#, no-wrap
msgid ""
"perm cd* 0660\n"
"perm xpt0 0660\n"
"perm pass* 0660\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:557
#, no-wrap
msgid "FreeBSD as a Host with bhyve"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:563
msgid ""
"The bhyve BSD-licensed hypervisor became part of the base system with "
"FreeBSD 10.0-RELEASE. This hypervisor supports a number of guests, "
"including FreeBSD, OpenBSD, and many Linux(R) distributions. By default, "
"bhyve provides access to serial console and does not emulate a graphical "
"console. Virtualization offload features of newer CPUs are used to avoid "
"the legacy methods of translating instructions and manually managing memory "
"mappings."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:571
msgid ""
"The bhyve design requires a processor that supports Intel(R) Extended Page "
"Tables (EPT) or AMD(R) Rapid Virtualization Indexing (RVI) or Nested Page "
"Tables (NPT). Hosting Linux(R) guests or FreeBSD guests with more than one "
"vCPU requires VMX unrestricted mode support (UG). Most newer processors, "
"specifically the Intel(R) Core(TM) i3/i5/i7 and Intel(R) Xeon(TM) E3/E5/E7, "
"support these features. UG support was introduced with Intel's Westmere "
"micro-architecture. For a complete list of Intel(R) processors that support "
"EPT, refer to https://ark.intel.com/content/www/us/en/ark/search/"
"featurefilter.html?productType=873&0_ExtendedPageTables=True[]. RVI is "
"found on the third generation and later of the AMD Opteron(TM) (Barcelona) "
"processors. The easiest way to tell if a processor supports bhyve is to run "
"`dmesg` or look in [.filename]#/var/run/dmesg.boot# for the `POPCNT` "
"processor feature flag on the `Features2` line for AMD(R) processors or "
"`EPT` and `UG` on the `VT-x` line for Intel(R) processors."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:573
#, no-wrap
msgid "Preparing the Host"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:577
msgid ""
"The first step to creating a virtual machine in bhyve is configuring the "
"host system. First, load the bhyve kernel module:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:581
#, no-wrap
msgid "# kldload vmm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:586
msgid ""
"Then, create a [.filename]#tap# interface for the network device in the "
"virtual machine to attach to. In order for the network device to "
"participate in the network, also create a bridge interface containing the [."
"filename]#tap# interface and the physical interface as members. In this "
"example, the physical interface is _igb0_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:595
#, no-wrap
msgid ""
"# ifconfig tap0 create\n"
"# sysctl net.link.tap.up_on_open=1\n"
"net.link.tap.up_on_open: 0 -> 1\n"
"# ifconfig bridge0 create\n"
"# ifconfig bridge0 addm igb0 addm tap0\n"
"# ifconfig bridge0 up\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:598
#, no-wrap
msgid "Creating a FreeBSD Guest"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:602
msgid ""
"Create a file to use as the virtual disk for the guest machine. Specify the "
"size and name of the virtual disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:606
#, no-wrap
msgid "# truncate -s 16G guest.img\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:609
msgid "Download an installation image of FreeBSD to install:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:614
#, no-wrap
msgid ""
"# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/12.2/FreeBSD-12.2-RELEASE-amd64-bootonly.iso\n"
"FreeBSD-12.2-RELEASE-amd64-bootonly.iso 100% of 230 MB 570 kBps 06m17s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:621
msgid ""
"FreeBSD comes with an example script for running a virtual machine in "
"bhyve. The script will start the virtual machine and run it in a loop, so "
"it will automatically restart if it crashes. The script takes a number of "
"options to control the configuration of the machine: `-c` controls the "
"number of virtual CPUs, `-m` limits the amount of memory available to the "
"guest, `-t` defines which [.filename]#tap# device to use, `-d` indicates "
"which disk image to use, `-i` tells bhyve to boot from the CD image instead "
"of the disk, and `-I` defines which CD image to use. The last parameter is "
"the name of the virtual machine, used to track the running machines. This "
"example starts the virtual machine in installation mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:625
#, no-wrap
msgid "# sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 1024M -t tap0 -d guest.img -i -I FreeBSD-12.2-RELEASE-amd64-bootonly.iso guestname\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:629
msgid ""
"The virtual machine will boot and start the installer. After installing a "
"system in the virtual machine, when the system asks about dropping in to a "
"shell at the end of the installation, choose btn:[Yes]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:634
msgid ""
"Reboot the virtual machine. While rebooting the virtual machine causes "
"bhyve to exit, the [.filename]#vmrun.sh# script runs `bhyve` in a loop and "
"will automatically restart it. When this happens, choose the reboot option "
"from the boot loader menu in order to escape the loop. Now the guest can be "
"started from the virtual disk:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:638
#, no-wrap
msgid "# sh /usr/share/examples/bhyve/vmrun.sh -c 4 -m 1024M -t tap0 -d guest.img guestname\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:641
#, no-wrap
msgid "Creating a Linux(R) Guest"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:644
msgid ""
"In order to boot operating systems other than FreeBSD, the package:sysutils/"
"grub2-bhyve[] port must be first installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:646
msgid "Next, create a file to use as the virtual disk for the guest machine:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:650
#, no-wrap
msgid "# truncate -s 16G linux.img\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:656
msgid ""
"Starting a virtual machine with bhyve is a two step process. First a kernel "
"must be loaded, then the guest can be started. The Linux(R) kernel is "
"loaded with package:sysutils/grub2-bhyve[]. Create a [.filename]#device."
"map# that grub will use to map the virtual devices to the files on the host "
"system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:661
#, no-wrap
msgid ""
"(hd0) ./linux.img\n"
"(cd0) ./somelinux.iso\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:664
msgid ""
"Use package:sysutils/grub2-bhyve[] to load the Linux(R) kernel from the ISO "
"image:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:668
#, no-wrap
msgid "# grub-bhyve -m device.map -r cd0 -M 1024M linuxguest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:673
msgid ""
"This will start grub. If the installation CD contains a [.filename]#grub."
"cfg#, a menu will be displayed. If not, the `vmlinuz` and `initrd` files "
"must be located and loaded manually:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:684
#, no-wrap
msgid ""
"grub> ls\n"
"(hd0) (cd0) (cd0,msdos1) (host)\n"
"grub> ls (cd0)/isolinux\n"
"boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest\n"
"splash.jpg TRANS.TBL vesamenu.c32 vmlinuz\n"
"grub> linux (cd0)/isolinux/vmlinuz\n"
"grub> initrd (cd0)/isolinux/initrd.img\n"
"grub> boot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:687
msgid "Now that the Linux(R) kernel is loaded, the guest can be started:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:692
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img \\\n"
" -s 4:0,ahci-cd,./somelinux.iso -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:698
msgid ""
"The system will boot and start the installer. After installing a system in "
"the virtual machine, reboot the virtual machine. This will cause bhyve to "
"exit. The instance of the virtual machine needs to be destroyed before it "
"can be started again:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:702
#: documentation/content/en/books/handbook/virtualization/_index.adoc:738
#, no-wrap
msgid "# bhyvectl --destroy --vm=linuxguest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:706
msgid ""
"Now the guest can be started directly from the virtual disk. Load the "
"kernel:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:720
#, no-wrap
msgid ""
"# grub-bhyve -m device.map -r hd0,msdos1 -M 1024M linuxguest\n"
"grub> ls\n"
"(hd0) (hd0,msdos2) (hd0,msdos1) (cd0) (cd0,msdos1) (host)\n"
"(lvm/VolGroup-lv_swap) (lvm/VolGroup-lv_root)\n"
"grub> ls (hd0,msdos1)/\n"
"lost+found/ grub/ efi/ System.map-2.6.32-431.el6.x86_64 config-2.6.32-431.el6.x\n"
"86_64 symvers-2.6.32-431.el6.x86_64.gz vmlinuz-2.6.32-431.el6.x86_64\n"
"initramfs-2.6.32-431.el6.x86_64.img\n"
"grub> linux (hd0,msdos1)/vmlinuz-2.6.32-431.el6.x86_64 root=/dev/mapper/VolGroup-lv_root\n"
"grub> initrd (hd0,msdos1)/initramfs-2.6.32-431.el6.x86_64.img\n"
"grub> boot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:723
msgid "Boot the virtual machine:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:728
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 \\\n"
" -s 3:0,virtio-blk,./linux.img -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:734
msgid ""
"Linux(R) will now boot in the virtual machine and eventually present you "
"with the login prompt. Login and use the virtual machine. When you are "
"finished, reboot the virtual machine to exit bhyve. Destroy the virtual "
"machine instance:"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:741
#, no-wrap
msgid "Booting bhyve Virtual Machines with UEFI Firmware"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:745
msgid ""
"In addition to bhyveload and grub-bhyve, the bhyve hypervisor can also boot "
"virtual machines using the UEFI userspace firmware. This option may support "
"guest operating systems that are not supported by the other loaders."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:748
msgid ""
"In order to make use of the UEFI support in bhyve, first obtain the UEFI "
"firmware images. This can be done by installing package:sysutils/bhyve-"
"firmware[] port or package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:751
msgid ""
"With the firmware in place, add the flags `-l bootrom,_/path/to/firmware_` "
"to your bhyve command line. The actual bhyve command may look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:759
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 1:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\\n"
"guest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:762
msgid ""
"package:sysutils/bhyve-firmware[] also contains a CSM-enabled firmware, to "
"boot guests with no UEFI support in legacy BIOS mode:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:770
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 1:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CSM.fd \\\n"
"guest\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:773
#, no-wrap
msgid "Graphical UEFI Framebuffer for bhyve Guests"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:776
msgid ""
"The UEFI firmware support is particularly useful with predominantly "
"graphical guest operating systems such as Microsoft Windows(R)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:781
msgid ""
"Support for the UEFI-GOP framebuffer may also be enabled with the `-s 29,"
"fbuf,tcp=_0.0.0.0:5900_` flags. The framebuffer resolution may be "
"configured with `w=_800_` and `h=_600_`, and bhyve can be instructed to wait "
"for a VNC connection before booting the guest by adding `wait`. The "
"framebuffer may be accessed from the host or over the network via the VNC "
"protocol. Additionally, `-s 30,xhci,tablet` can be added to achieve precise "
"mouse cursor synchronization with the host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:783
msgid "The resulting bhyve command would look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:793
#, no-wrap
msgid ""
"# bhyve -AHP -s 0:0,hostbridge -s 31:0,lpc \\\n"
"-s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./disk.img \\\n"
"-s 4:0,ahci-cd,./install.iso -c 4 -m 1024M \\\n"
"-s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \\\n"
"-s 30,xhci,tablet \\\n"
"-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\\n"
"guest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:796
msgid ""
"Note, in BIOS emulation mode, the framebuffer will cease receiving updates "
"once control is passed from firmware to guest operating system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:798
#, no-wrap
msgid "Using ZFS with bhyve Guests"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:802
msgid ""
"If ZFS is available on the host machine, using ZFS volumes instead of disk "
"image files can provide significant performance benefits for the guest VMs. "
"A ZFS volume can be created by:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:806
#, no-wrap
msgid "# zfs create -V16G -o volmode=dev zroot/linuxdisk0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:809
msgid "When starting the VM, specify the ZFS volume as the disk drive:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:814
#, no-wrap
msgid ""
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s3:0,virtio-blk,/dev/zvol/zroot/linuxdisk0 \\\n"
" -l com1,stdio -c 4 -m 1024M linuxguest\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:817
#, no-wrap
msgid "Virtual Machine Consoles"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:824
msgid ""
"It is advantageous to wrap the bhyve console in a session management tool "
"such as package:sysutils/tmux[] or package:sysutils/screen[] in order to "
"detach and reattach to the console. It is also possible to have the console "
"of bhyve be a null modem device that can be accessed with `cu`. To do this, "
"load the [.filename]#nmdm# kernel module and replace `-l com1,stdio` with `-"
"l com1,/dev/nmdm0A`. The [.filename]#/dev/nmdm# devices are created "
"automatically as needed, where each is a pair, corresponding to the two ends "
"of the null modem cable ([.filename]#/dev/nmdm0A# and [.filename]#/dev/"
"nmdm0B#). See man:nmdm[4] for more information."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:832
#, no-wrap
msgid ""
"# kldload nmdm\n"
"# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,./linux.img \\\n"
" -l com1,/dev/nmdm0A -c 4 -m 1024M linuxguest\n"
"# cu -l /dev/nmdm0B\n"
"Connected\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:834
#, no-wrap
msgid "Ubuntu 13.10 handbook ttyS0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:836
#, no-wrap
msgid "handbook login:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:839
#, no-wrap
msgid "Managing Virtual Machines"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:843
msgid ""
"A device node is created in [.filename]#/dev/vmm# for each virtual machine. "
"This allows the administrator to easily see a list of the running virtual "
"machines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:853
#, no-wrap
msgid ""
"# ls -al /dev/vmm\n"
"total 1\n"
"dr-xr-xr-x 2 root wheel 512 Mar 17 12:19 ./\n"
"dr-xr-xr-x 14 root wheel 512 Mar 17 06:38 ../\n"
"crw------- 1 root wheel 0x1a2 Mar 17 12:20 guestname\n"
"crw------- 1 root wheel 0x19f Mar 17 12:19 linuxguest\n"
"crw------- 1 root wheel 0x1a1 Mar 17 12:19 otherguest\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:856
msgid "A specified virtual machine can be destroyed using `bhyvectl`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:860
#, no-wrap
msgid "# bhyvectl --destroy --vm=guestname\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:863
#, no-wrap
msgid "Persistent Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:866
msgid ""
"In order to configure the system to start bhyve guests at boot time, the "
"following configurations must be made in the specified files:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:869
msgid "[.filename]#/etc/sysctl.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:873
#, no-wrap
msgid "net.link.tap.up_on_open=1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:876
msgid "[.filename]#/etc/rc.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:882
#, no-wrap
msgid ""
"cloned_interfaces=\"bridge0 tap0\"\n"
"ifconfig_bridge0=\"addm igb0 addm tap0\"\n"
"kld_list=\"nmdm vmm\"\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/virtualization/_index.adoc:885
#, no-wrap
msgid "FreeBSD as a Xen(TM)-Host"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:890
msgid ""
"Xen is a GPLv2-licensed https://en.wikipedia.org/wiki/"
"Hypervisor#Classification[type 1 hypervisor] for Intel(R) and ARM(R) "
"architectures. FreeBSD has included i386(TM) and AMD(R) 64-Bit https://wiki."
"xenproject.org/wiki/DomU[DomU] and https://en.wikipedia.org/wiki/"
"Amazon_Elastic_Compute_Cloud[Amazon EC2] unprivileged domain (virtual "
"machine) support since FreeBSD 8.0 and includes Dom0 control domain (host) "
"support in FreeBSD 11.0. Support for para-virtualized (PV) domains has been "
"removed from FreeBSD 11 in favor of hardware virtualized (HVM) domains, "
"which provides better performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:898
msgid ""
"Xen(TM) is a bare-metal hypervisor, which means that it is the first program "
"loaded after the BIOS. A special privileged guest called the Domain-0 "
"(`Dom0` for short) is then started. The Dom0 uses its special privileges to "
"directly access the underlying physical hardware, making it a high-"
"performance solution. It is able to access the disk controllers and network "
"adapters directly. The Xen(TM) management tools to manage and control the "
"Xen(TM) hypervisor are also used by the Dom0 to create, list, and destroy "
"VMs. Dom0 provides virtual disks and networking for unprivileged domains, "
"often called `DomU`. Xen(TM) Dom0 can be compared to the service console of "
"other hypervisor solutions, while the DomU is where individual guest VMs are "
"run."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:905
msgid ""
"Xen(TM) can migrate VMs between different Xen(TM) servers. When the two xen "
"hosts share the same underlying storage, the migration can be done without "
"having to shut the VM down first. Instead, the migration is performed live "
"while the DomU is running and there is no need to restart it or plan a "
"downtime. This is useful in maintenance scenarios or upgrade windows to "
"ensure that the services provided by the DomU are still provided. Many more "
"features of Xen(TM) are listed on the https://wiki.xenproject.org/wiki/"
"Category:Overview[Xen Wiki Overview page]. Note that not all features are "
"supported on FreeBSD yet."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:907
#, no-wrap
msgid "Hardware Requirements for Xen(TM) Dom0"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:911
msgid ""
"To run the Xen(TM) hypervisor on a host, certain hardware functionality is "
"required. Hardware virtualized domains require Extended Page Table (http://"
"en.wikipedia.org/wiki/Extended_Page_Table[EPT]) and Input/Output Memory "
"Management Unit (http://en.wikipedia.org/wiki/List_of_IOMMU-"
"supporting_hardware[IOMMU]) support in the host processor."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:915
msgid ""
"In order to run a FreeBSD Xen(TM) Dom0 the box must be booted using legacy "
"boot (BIOS)."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:918
#, no-wrap
msgid "Xen(TM) Dom0 Control Domain Setup"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:921
msgid ""
"Users of FreeBSD 11 should install the package:emulators/xen-kernel47[] and "
"package:sysutils/xen-tools47[] packages that are based on Xen version 4.7. "
"Systems running on FreeBSD-12.0 or newer can use Xen 4.11 provided by "
"package:emulators/xen-kernel411[] and package:sysutils/xen-tools411[], "
"respectively."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:925
msgid ""
"Configuration files must be edited to prepare the host for the Dom0 "
"integration after the Xen packages are installed. An entry to [.filename]#/"
"etc/sysctl.conf# disables the limit on how many pages of memory are allowed "
"to be wired. Otherwise, DomU VMs with higher memory requirements will not "
"run."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:929
#, no-wrap
msgid "# echo 'vm.max_wired=-1' >> /etc/sysctl.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:935
msgid ""
"Another memory-related setting involves changing [.filename]#/etc/login."
"conf#, setting the `memorylocked` option to `unlimited`. Otherwise, "
"creating DomU domains may fail with `Cannot allocate memory` errors. After "
"making the change to [.filename]#/etc/login.conf#, run `cap_mkdb` to update "
"the capability database. See crossref:security[security-resourcelimits,"
"\"Resource Limits\"] for details."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:940
#, no-wrap
msgid ""
"# sed -i '' -e 's/memorylocked=64K/memorylocked=unlimited/' /etc/login.conf\n"
"# cap_mkdb /etc/login.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:943
msgid "Add an entry for the Xen(TM) console to [.filename]#/etc/ttys#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:947
#, no-wrap
msgid "# echo 'xc0 \"/usr/libexec/getty Pc\" xterm onifconsole secure' >> /etc/ttys\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:954
msgid ""
"Selecting a Xen(TM) kernel in [.filename]#/boot/loader.conf# activates the "
"Dom0. Xen(TM) also requires resources like CPU and memory from the host "
"machine for itself and other DomU domains. How much CPU and memory depends "
"on the individual requirements and hardware capabilities. In this example, "
"8 GB of memory and 4 virtual CPUs are made available for the Dom0. The "
"serial console is also activated and logging options are defined."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:956
msgid "The following command is used for Xen 4.7 packages:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:963
#, no-wrap
msgid ""
"# echo 'hw.pci.mcfg=0' >> /boot/loader.conf\n"
"# echo 'if_tap_load=\"YES\"' >> /boot/loader.conf\n"
"# echo 'xen_kernel=\"/boot/xen\"' >> /boot/loader.conf\n"
"# echo 'xen_cmdline=\"dom0_mem=8192M dom0_max_vcpus=4 dom0pvh=1 console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:966
msgid ""
"For Xen versions 4.11 and higher, the following command should be used "
"instead:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:972
#, no-wrap
msgid ""
"# echo 'if_tap_load=\"YES\"' >> /boot/loader.conf\n"
"# echo 'xen_kernel=\"/boot/xen\"' >> /boot/loader.conf\n"
"# echo 'xen_cmdline=\"dom0_mem=8192M dom0_max_vcpus=4 dom0=pvh console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all\"' >> /boot/loader.conf\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:979
msgid ""
"Log files that Xen(TM) creates for the DomU VMs are stored in [.filename]#/"
"var/log/xen#. Please be sure to check the contents of that directory if "
"experiencing issues."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:982
msgid "Activate the xencommons service during system startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:986
#, no-wrap
msgid "# sysrc xencommons_enable=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:992
msgid ""
"These settings are enough to start a Dom0-enabled system. However, it lacks "
"network functionality for the DomU machines. To fix that, define a bridged "
"interface with the main NIC of the system which the DomU VMs can use to "
"connect to the network. Replace _em0_ with the host network interface name."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:998
#, no-wrap
msgid ""
"# sysrc cloned_interfaces=\"bridge0\"\n"
"# sysrc ifconfig_bridge0=\"addm em0 SYNCDHCP\"\n"
"# sysrc ifconfig_em0=\"up\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1001
msgid "Restart the host to load the Xen(TM) kernel and start the Dom0."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1005
#, no-wrap
msgid "# reboot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1008
msgid ""
"After successfully booting the Xen(TM) kernel and logging into the system "
"again, the Xen(TM) management tool `xl` is used to show information about "
"the domains."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1014
#, no-wrap
msgid ""
"# xl list\n"
"Name ID Mem VCPUs State Time(s)\n"
"Domain-0 0 8192 4 r----- 962.0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1020
msgid ""
"The output confirms that the Dom0 (called `Domain-0`) has the ID `0` and is "
"running. It also has the memory and virtual CPUs that were defined in [."
"filename]#/boot/loader.conf# earlier. More information can be found in the "
"https://www.xenproject.org/help/documentation.html[Xen(TM) Documentation]. "
"DomU guest VMs can now be created."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1022
#, no-wrap
msgid "Xen(TM) DomU Guest VM Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1029
msgid ""
"Unprivileged domains consist of a configuration file and virtual or physical "
"hard disks. Virtual disk storage for the DomU can be files created by man:"
"truncate[1] or ZFS volumes as described in crossref:zfs[zfs-zfs-"
"volume,“Creating and Destroying Volumes”]. In this example, a 20 GB volume "
"is used. A VM is created with the ZFS volume, a FreeBSD ISO image, 1 GB of "
"RAM and two virtual CPUs. The ISO installation file is retrieved with man:"
"fetch[1] and saved locally in a file called [.filename]#freebsd.iso#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1033
#, no-wrap
msgid "# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso -o freebsd.iso\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1036
msgid ""
"A ZFS volume of 20 GB called [.filename]#xendisk0# is created to serve as "
"the disk space for the VM."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1040
#, no-wrap
msgid "# zfs create -V20G -o volmode=dev zroot/xendisk0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1045
msgid ""
"The new DomU guest VM is defined in a file. Some specific definitions like "
"name, keymap, and VNC connection details are also defined. The following [."
"filename]#freebsd.cfg# contains a minimum DomU configuration for this "
"example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1062
#, no-wrap
msgid ""
"# cat freebsd.cfg\n"
"builder = \"hvm\" <.>\n"
"name = \"freebsd\" <.>\n"
"memory = 1024 <.>\n"
"vcpus = 2 <.>\n"
"vif = [ 'mac=00:16:3E:74:34:32,bridge=bridge0' ] <.>\n"
"disk = [\n"
"'/dev/zvol/tank/xendisk0,raw,hda,rw', <.>\n"
"'/root/freebsd.iso,raw,hdc:cdrom,r' <.>\n"
" ]\n"
"vnc = 1 <.>\n"
"vnclisten = \"0.0.0.0\"\n"
"serial = \"pty\"\n"
"usbdevice = \"tablet\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1065
msgid "These lines are explained in more detail:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1067
msgid ""
"This defines what kind of virtualization to use. `hvm` refers to hardware-"
"assisted virtualization or hardware virtual machine. Guest operating systems "
"can run unmodified on CPUs with virtualization extensions, providing nearly "
"the same performance as running on physical hardware. `generic` is the "
"default value and creates a PV domain."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1068
msgid ""
"Name of this virtual machine to distinguish it from others running on the "
"same Dom0. Required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1069
msgid ""
"Quantity of RAM in megabytes to make available to the VM. This amount is "
"subtracted from the hypervisor's total available memory, not the memory of "
"the Dom0."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1070
msgid ""
"Number of virtual CPUs available to the guest VM. For best performance, do "
"not create guests with more virtual CPUs than the number of physical CPUs on "
"the host."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1071
msgid ""
"Virtual network adapter. This is the bridge connected to the network "
"interface of the host. The `mac` parameter is the MAC address set on the "
"virtual network interface. This parameter is optional, if no MAC is provided "
"Xen(TM) will generate a random one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1072
msgid ""
"Full path to the disk, file, or ZFS volume of the disk storage for this VM. "
"Options and multiple disk definitions are separated by commas."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1073
msgid ""
"Defines the Boot medium from which the initial operating system is "
"installed. In this example, it is the ISO image downloaded earlier. Consult "
"the Xen(TM) documentation for other kinds of devices and options to set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1074
msgid ""
"Options controlling VNC connectivity to the serial console of the DomU. In "
"order, these are: active VNC support, define IP address on which to listen, "
"device node for the serial console, and the input method for precise "
"positioning of the mouse and other input methods. `keymap` defines which "
"keymap to use, and is `english` by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1076
msgid ""
"After the file has been created with all the necessary options, the DomU is "
"created by passing it to `xl create` as a parameter."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1080
#, no-wrap
msgid "# xl create freebsd.cfg\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1089
msgid ""
"Each time the Dom0 is restarted, the configuration file must be passed to "
"`xl create` again to re-create the DomU. By default, only the Dom0 is "
"created after a reboot, not the individual VMs. The VMs can continue where "
"they left off as they stored the operating system on the virtual disk. The "
"virtual machine configuration can change over time (for example, when adding "
"more memory). The virtual machine configuration files must be properly "
"backed up and kept available to be able to re-create the guest VM when "
"needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1092
msgid "The output of `xl list` confirms that the DomU has been created."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1099
#, no-wrap
msgid ""
"# xl list\n"
"Name ID Mem VCPUs State Time(s)\n"
"Domain-0 0 8192 4 r----- 1653.4\n"
"freebsd 1 1024 1 -b---- 663.9\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1106
msgid ""
"To begin the installation of the base operating system, start the VNC "
"client, directing it to the main network address of the host or to the IP "
"address defined on the `vnclisten` line of [.filename]#freebsd.cfg#. After "
"the operating system has been installed, shut down the DomU and disconnect "
"the VNC viewer. Edit [.filename]#freebsd.cfg#, removing the line with the "
-"`cdrom` definition or commenting it out by inserting a `#` character at the "
-"beginning of the line. To load this new configuration, it is necessary to "
-"remove the old DomU with `xl destroy`, passing either the name or the id as "
-"the parameter. Afterwards, recreate it using the modified [."
+"`cdrom` definition or commenting it out by inserting a `+#+` character at "
+"the beginning of the line. To load this new configuration, it is necessary "
+"to remove the old DomU with `xl destroy`, passing either the name or the id "
+"as the parameter. Afterwards, recreate it using the modified [."
"filename]*freebsd.cfg*."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1111
#, no-wrap
msgid ""
"# xl destroy freebsd\n"
"# xl create freebsd.cfg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1115
msgid ""
"The machine can then be accessed again using the VNC viewer. This time, it "
"will boot from the virtual disk where the operating system has been "
"installed and can be used as a virtual machine."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1117
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1120
msgid ""
"This section contains basic information in order to help troubleshoot issues "
"found when using FreeBSD as a Xen(TM) host or guest."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1122
#, no-wrap
msgid "Host Boot Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1126
msgid ""
"Please note that the following troubleshooting tips are intended for Xen(TM) "
"4.11 or newer. If you are still using Xen(TM) 4.7 and having issues "
"consider migrating to a newer version of Xen(TM)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1130
msgid ""
"In order to troubleshoot host boot issues you will likely need a serial "
"cable, or a debug USB cable. Verbose Xen(TM) boot output can be obtained by "
"adding options to the `xen_cmdline` option found in [.filename]#loader."
"conf#. A couple of relevant debug options are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1132
msgid ""
"`iommu=debug`: can be used to print additional diagnostic information about "
"the iommu."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1133
msgid ""
"`dom0=verbose`: can be used to print additional diagnostic information about "
"the dom0 build process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1134
msgid ""
"`sync_console`: flag to force synchronous console output. Useful for "
"debugging to avoid losing messages due to rate limiting. Never use this "
"option in production environments since it can allow malicious guests to "
"perform DoS attacks against Xen(TM) using the console."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1137
msgid ""
"FreeBSD should also be booted in verbose mode in order to identify any "
"issues. To activate verbose booting, run this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1141
#, no-wrap
msgid "# echo 'boot_verbose=\"YES\"' >> /boot/loader.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1144
msgid ""
"If none of these options help solving the problem, please send the serial "
"boot log to mailto:freebsd-xen@FreeBSD.org[freebsd-xen@FreeBSD.org] and "
"mailto:xen-devel@lists.xenproject.org[xen-devel@lists.xenproject.org] for "
"further analysis."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1146
#, no-wrap
msgid "Guest Creation Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1149
msgid ""
"Issues can also arise when creating guests, the following attempts to "
"provide some help for those trying to diagnose guest creation issues."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1152
msgid ""
"The most common cause of guest creation failures is the `xl` command "
"spitting some error and exiting with a return code different than 0. If the "
"error provided is not enough to help identify the issue, more verbose output "
"can also be obtained from `xl` by using the `v` option repeatedly."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1168
#, no-wrap
msgid ""
"# xl -vvv create freebsd.cfg\n"
"Parsing config from freebsd.cfg\n"
"libxl: debug: libxl_create.c:1693:do_domain_create: Domain 0:ao 0x800d750a0: create: how=0x0 callback=0x0 poller=0x800d6f0f0\n"
"libxl: debug: libxl_device.c:397:libxl__device_disk_set_backend: Disk vdev=xvda spec.backend=unknown\n"
"libxl: debug: libxl_device.c:432:libxl__device_disk_set_backend: Disk vdev=xvda, using backend phy\n"
"libxl: debug: libxl_create.c:1018:initiate_domain_create: Domain 1:running bootloader\n"
"libxl: debug: libxl_bootloader.c:328:libxl__bootloader_run: Domain 1:not a PV/PVH domain, skipping bootloader\n"
"libxl: debug: libxl_event.c:689:libxl__ev_xswatch_deregister: watch w=0x800d96b98: deregister unregistered\n"
"domainbuilder: detail: xc_dom_allocate: cmdline=\"\", features=\"\"\n"
"domainbuilder: detail: xc_dom_kernel_file: filename=\"/usr/local/lib/xen/boot/hvmloader\"\n"
"domainbuilder: detail: xc_dom_malloc_filemap : 326 kB\n"
"libxl: debug: libxl_dom.c:988:libxl__load_hvm_firmware_module: Loading BIOS: /usr/local/share/seabios/bios.bin\n"
"...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/virtualization/_index.adoc:1173
msgid ""
"If the verbose output does not help diagnose the issue there are also QEMU "
"and Xen(TM) toolstack logs in [.filename]#/var/log/xen#. Note that the name "
"of the domain is appended to the log name, so if the domain is named "
"`freebsd` you should find a [.filename]#/var/log/xen/xl-freebsd.log# and "
"likely a [.filename]#/var/log/xen/qemu-dm-freebsd.log#. Both log files can "
"contain useful information for debugging. If none of this helps solve the "
"issue, please send the description of the issue you are facing and as much "
"information as possible to mailto:freebsd-xen@FreeBSD.org[freebsd-"
"xen@FreeBSD.org] and mailto:xen-devel@lists.xenproject.org[xen-devel@lists."
"xenproject.org] in order to get help."
msgstr ""
diff --git a/documentation/content/en/books/handbook/wine/_index.po b/documentation/content/en/books/handbook/wine/_index.po
index 050ffe1a96..ff14f54ad0 100644
--- a/documentation/content/en/books/handbook/wine/_index.po
+++ b/documentation/content/en/books/handbook/wine/_index.po
@@ -1,2324 +1,2325 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/wine/_index.adoc:1
#, no-wrap
msgid "This chapter will describe how to install WINE on a FreeBSD system and how to configure WINE"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/wine/_index.adoc:1
#, no-wrap
msgid "Part II. Common Tasks"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/wine/_index.adoc:1
#, no-wrap
-msgid "Chapter 11. WINE"
+msgid "Chapter 12. WINE"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/wine/_index.adoc:15
#, no-wrap
msgid "WINE"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:57
msgid ""
"https://www.winehq.org/[WINE], which stands for Wine Is Not an Emulator, is "
"technically a software translation layer. It enables to install and run "
"some software written for Windows(R) on FreeBSD (and other) systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:61
msgid ""
"It operates by intercepting system calls, or requests from the software to "
"the operating system, and translating them from Windows(R) calls to calls "
"that FreeBSD understands. It will also translate any responses as needed "
"into what the Windows(R) software is expecting. So in some ways, it "
"_emulates_ a Windows(R) environment, in that it provides many of the "
"resources Windows(R) applications are expecting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:68
msgid ""
"However, it is not an emulator in the traditional sense. Many of these "
"solutions operate by constructing an entire other computer using software "
"processes in place of hardware Virtualization (such as that provided by the "
"package:emulators/qemu[] port) operates in this way. One of the benefits of "
"this approach is the ability to install a full version of the OS in question "
"to the emulator. It means that the environment will not look any different "
"to applications than a real machine, and chances are good that everything "
"will work on it. The downside to this approach is the fact that software "
"acting as hardware is inherently slower than actual hardware. The computer "
"built in software (called the _guest_) requires resources from the real "
"machine (the _host_), and holds on to those resources for as long as it is "
"running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:73
msgid ""
"The WINE Project, on the other hand, is much lighter on system's resources. "
"It will translate system calls on the fly, so while it is difficult to be as "
"fast as a real Windows(R) computer, it can come very close. On the other "
"hand, WINE is trying to keep up with a moving target in terms of all the "
"different system calls and other functionality it needs to support. As a "
"result there may be applications that do not work as expected on WINE, will "
"not work at all, or will not even install to begin with."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:76
msgid ""
"At the end of the day, WINE provides another option to try to get a "
"particular Windows(R) software program running on FreeBSD. It can always "
"serve as the first option which, if successful, offers a good experience "
"without unnecessarily depleting the host FreeBSD system's resources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:78
msgid "This chapter will describe:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:80
msgid "How to install WINE on a FreeBSD system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:81
msgid ""
"How WINE operates, and how it is different from other alternatives like "
"virtualizaton."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:82
msgid "How to fine-tune WINE to the specific needs of some applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:83
msgid "How to install GUI helpers for WINE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:84
msgid "Common tips and solutions for on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:85
msgid ""
"Considerations for WINE on FreeBSD in terms of the multi-user environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:87
msgid "Before reading this chapter, it will be useful to:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:89
msgid "Understand the crossref:basics[basics,basics of UNIX(R) and FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:90
msgid "Know how to crossref:bsdinstall[bsdinstall,install FreeBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:91
msgid ""
"Know how to crossref:advanced-networking[advanced-networking,set up a "
"network connection]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:92
msgid ""
"Know how to crossref:ports[ports,install additional third-party software]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:94
#, no-wrap
msgid "WINE Overview & Concepts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:97
msgid ""
"WINE is a complex system, so before running it on a FreeBSD system it is "
"worth gaining an understanding of what it is and how it works."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:99
#, no-wrap
msgid "What is WINE?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:103
msgid ""
"As mentioned in the <<wine-synopsis,Synopsis>> for this chapter, WINE is a "
"compatibility layer that allows Windows(R) applications to run on other "
"operating systems. In theory, it means these programs should run on systems "
"like FreeBSD, macOS, and Android."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:105
msgid "When WINE runs a Windows(R) executable, two things occur:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:107
msgid ""
"Firstly, WINE implements an environment that mimics that of various versions "
"of Windows(R). For example, if an application requests access to a resource "
"such as RAM, WINE has a memory interface that looks and acts (as far as the "
"application is concerned) like Windows(R)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:108
msgid ""
"Then, once that application makes use of that interface, WINE takes the "
"incoming request for space in memory and translates it to something "
"compatible with the host system. In the same way when the application "
"retrieves that data, WINE facilitates fetching it from the host system and "
"passing it back to the Windows(R) application."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:110
#, no-wrap
msgid "WINE and the FreeBSD System"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:113
msgid ""
"Installing WINE on a FreeBSD system will entail a few different components:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:115
msgid ""
"FreeBSD applications for tasks such as running the Windows(R) executables, "
"configuring the WINE sub-system, or compiling programs with WINE support."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:116
msgid ""
"A large number of libraries that implement the core functions of Windows(R) "
"(for example [.filename]#/lib/wine/api-ms-core-memory-l1-1-1.dll.so#, which "
"is part of the aforementioned memory interface)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:117
msgid ""
"A number of Windows(R) executables, which are (or mimic) common utilities "
"(such as [.filename]#/lib/wine/notepad.exe.so#, which provides the standard "
"Windows(R) text editor)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:118
msgid ""
"Additional Windows(R) assets, in particular fonts (like the Tahoma font, "
"which is stored in [.filename]#share/wine/fonts/tahoma.ttf# in the install "
"root)."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:120
#, no-wrap
msgid "Graphical Versus Text Mode/Terminal Programs in WINE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:125
msgid ""
"As an operating system where terminal utilities are \"first-class citizens,"
"\" it is natural to assume that WINE will contain extensive support for text-"
"mode program. However, the majority of applications for Windows(R), "
"especially the most popular ones, are designed with a graphical user "
"interface (GUI) in mind. Therefore, WINE's utilities are designed by "
"default to launch graphical programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:127
msgid ""
"However, there are three methods available to run these so-called Console "
"User Interface (CUI) programs:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:129
msgid ""
"The _Bare Streams_ approach will display the output directly to standard "
"output."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:130
msgid ""
"The _wineconsole_ utility can be used with either the _user_ or _curses_ "
"backed to utilize some of the enhancements the WINE system provides for CUI "
"applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:132
msgid ""
"These approaches are described in greater detail on the https://wiki.winehq."
"org/Wine_User%27s_Guide#Text_mode_programs_.28CUI:"
"_Console_User_Interface.29[WINE Wiki]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:134
#, no-wrap
msgid "WINE Derivative Projects"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:137
msgid ""
"WINE itself is a mature open source project, so it is little surprise it is "
"used as the foundation of more complex solutions."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:139
#, no-wrap
msgid "Commercial WINE Implementations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:143
msgid ""
"A number of companies have taken WINE and made it a core of their own, "
"proprietary products (WINE's LGPL license permits this). Two of the most "
"famous of these are as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:145
msgid "Codeweavers CrossOver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:148
msgid ""
"This solution provides a simplified \"one-click\" installation of WINE, "
"which contains additional enhancements and optimizations (although the "
"company contributes many of these back upstream to the WINE project). One "
"area of focus for Codeweavers is to make the most popular applications "
"install and run smoothly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:151
msgid ""
"While the company once produced a native FreeBSD version of their CrossOver "
"solution, it appears to have long been abandoned. While some resources "
"(such as a https://www.codeweavers.com/compatibility/crossover/forum/"
"freebsd[dedicated forum]) are still present, they also have seen no activity "
"for some time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:153
msgid "Steam Proton"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:156
msgid ""
"Gaming company Steam also uses WINE to enable Windows(R) games to install "
"and run on other systems. it is primary target is Linux-based systems, "
"though some support exists for macOS as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:158
msgid ""
"While Steam does not offer a native FreeBSD client,there are several options "
"for using the Linux(R) client using FreeBSD's Linux Compatibility Layer."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:160
#, no-wrap
msgid "WINE Companion Programs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:164
msgid ""
"In addition to proprietary offerings, other projects have released "
"applications designed to work in tandem with the standard, open source "
"version of WINE. The goals for these can range from making installation "
"easier to offering easy ways to get popular software installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:166
msgid ""
"These solutions are covered in greater detail in the later section on <<wine-"
"management-guis,GUI frontends>>, and include the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:168
msgid "winetricks"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:169
#: documentation/content/en/books/handbook/wine/_index.adoc:557
#, no-wrap
msgid "Homura"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:171
#, no-wrap
msgid "Alternatives to WINE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:174
msgid "For FreeBSD users, some alternatives to using WINE are as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:176
msgid ""
"Dual-Booting: A straightforward option is to run desired Windows(R) "
"applications natively on that OS. This of course means exiting FreeBSD in "
"order to boot Windows(R), so this method is not feasible if access to "
"programs in both systems is required simultaneously."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:177
msgid ""
"Virtual Machines: Virtual Machines (VMs), as mentioned earlier in this "
"chapter, are software processes that emulate full sets of hardware, on which "
"additional operating systems (including Windows(R)) can be installed and "
"run. Modern tools make VMs easy to create and manage, but this method comes "
"at a cost. A good portion of the host systems resources must be allocated to "
"each VM, and those resources cannot be reclaimed by the host as long as the "
"VM is running. A few examples of VM managers include the open source "
"solutions qemu, bhyve, and VirtualBox. See the chapter on <<virtualization,"
"Virtualization>> for more detail."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:178
msgid ""
"Remote Access: Like many other UNIX(R)-like systems, FreeBSD can run a "
"variety of applications enabling users to remotely access Windows(R) "
"computers and use their programs or data. In addtion to clients such as xrdp "
"that connect to the standard Windows(R) Remote Desktop Protocol, other open "
"source standards such as vnc can also be used (provided a compatible server "
"is present on the other side)."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:180
#, no-wrap
msgid "Installing WINE on FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:183
msgid "WINE can be installed via the pkg tool, or by compiling the port(s)."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:185
#, no-wrap
msgid "WINE Prerequistes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:188
msgid ""
"Before installing WINE itself, it is useful to have the following pre-"
"requisites installed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:190
msgid "A GUI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:194
msgid ""
"Most Windows(R) programs are expecting to have a graphical user interface "
"available. If WINE is installed without one present, its dependencies will "
"include the Wayland compositor, and so a GUI will be installed along with "
"WINE. But it is useful to have the GUI of choice installed, configured, and "
"working correctly before installing WINE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:196
msgid "wine-gecko"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:202
msgid ""
"The Windows(R) operating system has for some time had a default web browser "
"pre-installed: Internet Explorer. As a result, some applications work under "
"the assumption that there will always be something capable of displaying web "
"pages. In order to provide this functionality, the WINE layer includes a "
"web browser component using the Mozilla project's Gecko engine. When WINE "
"is first launched it will offer to download and install this, and there are "
"reasons users might want it do so (these will be covered in a later "
"chapter). But they can also install it prior to installing WINE, or "
"alongside the install of WINE proper."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:204
msgid "Install this package with the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:208
#, no-wrap
msgid "# pkg install wine-gecko\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:211
msgid "Alternately, compile the port with the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:216
#, no-wrap
msgid ""
"# cd /usr/ports/emulator/wine-gecko\n"
"# make install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:219
msgid "wine-mono"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:222
msgid ""
"This port installs the MONO framework, an open source implementation of "
"Microsoft's .NET. Including this with the WINE installation will make it "
"that much more likely that any applications written in .NET will install and "
"run on the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:224
msgid "To install the package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:228
#, no-wrap
msgid "# pkg install wine-mono\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:231
msgid "To compile from the ports collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:236
#, no-wrap
msgid ""
"# cd /usr/ports/emulator/wine-mono\n"
"# make install\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:239
#, no-wrap
msgid "Installing WINE via FreeBSD Package Repositories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:242
msgid ""
"With the pre-requisites in place, install WINE via package with the "
"following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:246
#, no-wrap
msgid "# pkg install wine\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:249
msgid "Alternately compile the WINE sub-system from source with the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:254
#, no-wrap
msgid ""
"# cd /usr/ports/emulator/wine\n"
"# make install\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:257
#, no-wrap
msgid "Concerns of 32- Versus 64-Bit in WINE Installations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:262
msgid ""
"Like most software, Windows(R) applications made the upgrade from the older "
"32-bit architecture to 64 bits. And most recent software is written for 64-"
"bit operating systems, although modern OSes can sometimes continue to run "
"older 32-bit programs as well. FreeBSD is no different, having had support "
"for 64-bit since the 5.x series."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:265
msgid ""
"However, using old software no longer supported by default is a common use "
"for emulators, and users commonly turn to WINE to play games and use other "
"programs that do not run properly on modern hardware. Fortunately, FreeBSD "
"can support all three scenarios:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:267
msgid ""
"On modern, 64-bit machine and want to run 64-bit Windows(R) software, simply "
"install the ports mentioned in the above sections. The ports system will "
"automatically install the 64-bit version."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:268
msgid ""
"Alternately, users might have an older 32-bit machine that they do not want "
"to run with its original, now non-supported software. They can install the "
"32-bit (i386) version of FreeBSD, then install the ports in the above "
"sections."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:270
#, no-wrap
msgid "Running a First WINE Program on FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:274
msgid ""
"Now that WINE is installed, the next step is to try it out by running a "
"simple program. An easy way to do this is to download a self-contained "
"application, i.e., one can simply unpack and run without any complex "
"installation process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:276
msgid ""
"So-called \"portable\" versions of applications are good choices for this "
"test, as are programs that run with only a single executable file."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:278
#, no-wrap
msgid "Running a Program from the Command Line"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:282
msgid ""
"There are two different methods to launch a Windows program from the "
"terminal. The first, and most straightforward is to navigate to the "
"directory containing the program's executable ([.filename]#.EXE#) and issue "
"the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:286
#, no-wrap
msgid "% wine program.exe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:289
msgid ""
"For applications that take command-line arguments, add them after the "
"executable as usual:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:293
#, no-wrap
msgid "% wine program2.exe -file file.txt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:296
msgid ""
"Alternately, supply the full path to the executable to use it in a script, "
"for example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:300
#, no-wrap
msgid "% wine /home/user/bin/program.exe\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:303
#, no-wrap
msgid "Running a Program from a GUI"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:307
msgid ""
"After installation graphical shells should be updated with new associations "
"for Windows executable ([.filename]#.EXE#) files. It will now be possible "
"to browse the system using a file manager, and launch the Windows "
"application in the same way as other files and programs (either a single- or "
"double-click, depending on the desktop's settings)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:310
msgid ""
"On most desktops, check to make sure this association is correct by right-"
"clicking on the file, and looking for an entry in the context menu to open "
"the file. One of the options (hopefully the default one) will be with the "
"*Wine Windows Program Loader*, as shown in the below screenshot:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:311
#, no-wrap
msgid "wine-run-np++-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:314
msgid ""
"In the event the program does not run as expected, try launching it from the "
"command line and review any messages displayed in the terminal to "
"troubleshoot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:316
msgid ""
"In the event WINE is not the default application for [.filename]#.EXE# files "
"after install, check the MIME associate for this extension in the current "
"desktop environment, graphical shell, or file manager."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:318
#, no-wrap
msgid "Configuring WINE Installation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:322
msgid ""
"With an understanding of what WINE is and how it works at a high level, the "
"next step to effectively using it on FreeBSD is becoming familiar with its "
"configuration. The following sections will describe the key concept of the "
"_WINE prefix_, and illustrate how it is used to control the behavior of "
"applications run through WINE."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:324
#, no-wrap
msgid "WINE Prefixes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:329
msgid ""
"A WINE _prefix_ is a directory, usually located beneath the default location "
"of [.filename]#$HOME/.wine# though it can be located elsewhere. The prefix "
"is a set of configurations and support files used by the wine to configure "
"and run the Windows(R) environment a given application needs. By default, a "
"brand new WINE installation will create the following structure when first "
"launched by a user:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:331
msgid ""
"[.filename]#.update-timestamp#: contains the last modified date of [."
"filename]#file /usr/share/wine/wine.inf#. It is used by WINE to determine if "
"a prefix is out of date, and automatically update it if needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:332
msgid ""
"[.filename]#dosdevices/#: contains information on mappings of Windows(R) "
"resources to resources on the host FreeBSD system. For example, after a new "
"WINE installation, this should contain at least two entries which enable "
"access to the FreeBSD filesystem using Windows(R)-style drive letters:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:334
msgid "[.filename]#c:@#: A link to [.filename]#drive_c# described below."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:335
msgid "[.filename]#z:@#: A link to the root directory of the system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:337
msgid ""
"[.filename]#drive_c/#: emulates the main (i.e., [.filename]#C:#) drive of a "
"Windows(R) system. It contains a directory structure and associated files "
"mirroring that of standard Windows(R) systems. A fresh WINE prefix will "
"contain Windows(R) 10 directories such as _Users_ and _Windows_ that holds "
"the OS itself. Furthermore, applications installed within a prefix will be "
"located in either _Program Files_ or _Program Files (x86)_, depending on "
"their architecture."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:338
msgid ""
"[.filename]#system.reg#: This Registry file contains information on the "
"Windows(R) installation, which in the case of WINE is the environment in [."
"filename]#drive_c#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:339
msgid ""
"[.filename]#user.reg#: This Registry file contains the current user's "
"personal configurations, made either by varous software or through the use "
"of the Registry Editor."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:340
msgid ""
"[.filename]#userdef.reg#: This Registry file is a default set of "
"configurations for newly-created users."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:342
#, no-wrap
msgid "Creating and Using WINE Prefixes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:346
msgid ""
"While WINE will create a default prefix in the user's [.filename]#$HOME/."
"wine/#, it is possible to set up multiple prefixes. There are a few reasons "
"to do this:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:348
msgid ""
"The most common reason is to emulate different versions of Windows(R), "
"according to the compatibility needs of the software in question."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:349
msgid ""
"In addition, it is common to encounter software that does not work correctly "
"in the default environment, and requires special configuration. it is useful "
"to isolate these in their own, custom prefixes, so the changes do not impact "
"other applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:350
msgid ""
-"Similarly, copying the default or \"main\" prefix into a separate \"testing"
-"\" one in order to evaluate an application's compatibility can reduce the "
-"chance of corruption."
+"Similarly, copying the default or \"main\" prefix into a separate "
+"\"testing\" one in order to evaluate an application's compatibility can "
+"reduce the chance of corruption."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:352
msgid "Creating a prefix from the terminal requires the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:356
#, no-wrap
msgid "% WINEPREFIX=\"/home/username/.wine-new\" winecfg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:360
msgid ""
"This will run the `winecfg` program, which can be used to configure wine "
"prefixes (more on this in a later section). But by providing a directory "
"path value for the `WINEPREFIX` environment variable, a new prefix is "
"created at that location if one does not already exist."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:362
msgid ""
"Supplying the same variable to the wine program will similarly cause the "
"selected program to be run with the specified prefix:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:366
#, no-wrap
msgid "% WINEPREFIX=\"/home/username/.wine-new\" wine program.exe\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:369
#, no-wrap
msgid "Configuring WINE Prefixes with winecfg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:374
msgid ""
"As described above WINE includes a tool called `winecfg` to configure "
"prefixes from within a GUI. It contains a variety of functions, which are "
"detailed in the sections below. When `winecfg` is run from within a prefix, "
"or provided the location of a prefix within the `WINEPREFIX` variable, it "
"enables the configuration of the selected prefix as described in the below "
"sections."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:377
msgid ""
"Selections made on the _Applications_ tab will affect the scope of changes "
"made in the _Libraries_ and _Graphics_ tabs, which will be limited to the "
-"application selected. See the section on https://wiki.winehq.org/Wine_User"
-"%27s_Guide#Using_Winecfg[Using Winecfg] in the WINE Wiki for more details."
+"application selected. See the section on https://wiki.winehq.org/"
+"Wine_User%27s_Guide#Using_Winecfg[Using Winecfg] in the WINE Wiki for more "
+"details."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:379
#, no-wrap
msgid "Applications"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:381
#, no-wrap
msgid "wine-config-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:386
msgid ""
"The _Applications_ contains controls enabling the association of programs "
"with a particular version of Windows(R). On first start-up the _Application "
"settings_ section will contain a single entry: _Default Settings_. This "
"corresponds to all the default configurations of the prefix, which (as the "
"disabled _Remove application_ button implies) cannot be deleted."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:388
msgid "But additional applications can be added with the following process:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:390
msgid "Click the _Add application_ button."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:391
msgid "Use the provided dialog to select the desired program's executable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:392
msgid "Select the version of Windows(R) to be used with the selected program."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:394
#, no-wrap
msgid "Libraries"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:396
#, no-wrap
msgid "wine-config-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:401
msgid ""
"WINE provides a set of open source library files as part of its distribution "
"that provide the same functions as their Windows(R) counterparts. However, "
"as noted earlier in this chapter, the WINE project is always trying to keep "
"pace with new updates to these libraries. As a result, the versions that "
"ship with WINE may be missing functionality that the latest Windows(R) "
"programs are expecting."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:403
msgid ""
"However, `winecfg` makes it possible specify overrides for the built-in "
"libraries, particularly there is a version of Windows(R) available on the "
"same machine as the host FreeBSD installation. For each library to be "
"overridden, do the following:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:405
msgid ""
"Open the _New override for library_ drop-down and select the library to be "
"replaced."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:406
msgid "Click the _Add_ button."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:407
msgid ""
"The new override will appear in the _Existing overrides_ list, notice the "
"_native, builtin_ designation in parentheses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:408
msgid "Click to select the library."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:409
msgid "Click the _Edit_ button."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:410
msgid ""
"Use the provided dialog to select a corresponding library to be used in "
"place of the built-in one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:412
msgid ""
"Be sure to select a file that is truly the corresponding version of the "
"built-in one, otherwise there may be unexpected behavior."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:414
#, no-wrap
msgid "Graphics"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:416
#, no-wrap
msgid "wine-config-3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:419
msgid ""
"The _Graphics_ tab provides some options to make the windows of programs run "
"via WINE operate smoothly with FreeBSD:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:421
msgid "Automatic mouse capture when windows are full-screen."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:422
msgid ""
"Allowing the FreeBSD window manager to decorate the windows, such as their "
"title bars, for programs running via WINE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:423
msgid ""
"Allowing the window manager to control windows for programs running via "
"WINE, such as running resizing functions on them."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:424
msgid ""
"Create an emulated virtual desktop, within which all WINE programs will run. "
"If this item is selected, the size of the virtual desktop can be specified "
"using the _Desktop size_ input boxes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:425
msgid "Setting the screen resolution for programs running via WINE."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:427
#, no-wrap
msgid "Desktop Integration"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:429
#, no-wrap
msgid "wine-config-4.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:432
msgid "This tab allows configuration of the following items:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:434
msgid ""
"The theme and related visual settings to be used for programs running via "
"WINE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:435
msgid ""
"Whether the WINE sub-system should manage MIME types (used to determine "
"which application opens a particular file type) internally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:436
msgid ""
"Mappings of directories in the host FreeBSD system to useful folders within "
"the Windows(R) environment. To change an existing association, select the "
"desired item and click _Browse_, then use the provided dialog to select a "
"directory."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:438
#, no-wrap
msgid "Drives"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:440
#, no-wrap
msgid "wine-config-5.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:445
msgid ""
"The _Drives_ tab allows linking of directories in the host FreeBSD system to "
"drive letters in the Windows(R) environment. The default values in this tab "
"should look familiar, as they are displaying the contents of [."
"filename]#dosdevices/# in the current WINE prefix. Changes made via this "
"dialog will reflect in [.filename]#dosdevices#, and properly-formatted links "
"created in that directory will display in this tab."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:447
msgid ""
"To create a new entry, such as for a CD-ROM (mounted at [.filename]#/mnt/"
"cdrom#), take the following steps:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:449
msgid "Click the _Add _ button."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:450
msgid "In the provided dialog, choose a free drive letter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:451
msgid "Click _OK_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:452
msgid ""
"Fill in the _Path_ input box by either typing the path to the resource, or "
"click _Browse _ and use the provided dialog to select it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:455
msgid ""
"By default WINE will autodetect the type of resource linked, but this can be "
-"manually overridden. See https://wiki.winehq.org/Wine_User"
-"%27s_Guide#Drive_Settings[the section in the WINE Wiki] for more detail on "
-"advanced options."
+"manually overridden. See https://wiki.winehq.org/"
+"Wine_User%27s_Guide#Drive_Settings[the section in the WINE Wiki] for more "
+"detail on advanced options."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:457
#, no-wrap
msgid "Audio"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:459
#, no-wrap
msgid "wine-config-6.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:462
msgid ""
"This tab contains some configurable options for routing sound from "
"Windows(R) programs to the native FreeBSD sound system, including:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:464
msgid "Driver selection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:465
msgid "Default device selection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:466
msgid "Sound test"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:468
#, no-wrap
msgid "About"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:470
#, no-wrap
msgid "wine-config-7.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:474
msgid ""
"The final tab contains information on the WINE project, including a link to "
"the website. It also allows entry of (entirely optional) user information, "
"although this is not sent anywhere as it is in other operating systems."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:476
#, no-wrap
msgid "WINE Management GUIs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:481
msgid ""
"While the base install of WINE comes with a GUI configuration tool in "
"`winecfg`, it is main purpose is just that: strictly configuring an existing "
"WINE prefix. There are, however, more advanced applications that will "
"assist in the initial installation of applications as well as optimizing "
"their WINE environments. The below sections include a selection of the most "
"popular."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:483
#, no-wrap
msgid "Winetricks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:488
msgid ""
"The `winetricks` tool is a cross-platform, general purpose helper program "
"for WINE. It is not developed by the WINE project proper, but rather "
"maintained on https://github.com/Winetricks/winetricks[Github] by a group of "
"contributors. It contains some automated \"recipes\" for getting common "
"applications to work on WINE, both by optimizing the settings as well as "
"acquiring some DLL libraries automatically."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:490
#, no-wrap
msgid "Installing winetricks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:493
msgid ""
"To install `winetricks` on a FreeBSD using binary packages, use the "
"following commands (note `winetricks` requires either the i386-wine or i386-"
"wine-devel package, and is therefore not installed automatically with other "
"dependencies):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:497
#, no-wrap
msgid "# pkg install i386-wine winetricks\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:500
msgid "To compile it from source, issue the following in the terminal:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:507
#, no-wrap
msgid ""
"# cd /usr/ports/emulators/i386-wine\n"
"# make install\n"
"# cd /usr/ports/emulators/winetricks\n"
"# make install\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:510
msgid ""
"If a manual installation is required, refer to the https://github.com/"
"Winetricks/winetricks[Github] account for instructions."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:512
#, no-wrap
msgid "Using winetricks"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:515
msgid "Run `winetricks` with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:519
#, no-wrap
msgid "% winetricks\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:523
msgid ""
"Note: this should be in a 32-bit prefix to run `winetricks`. Launching "
"`winetricks` displays a window with a number of choices, as follows:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:524
#, no-wrap
msgid "winetricks-run-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:527
msgid ""
"Selecting either _Install an application_, _Install a benchmark_, or "
"_Install a game_ shows a list with supported options, such as the one below "
"for applications:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:528
#, no-wrap
msgid "winetricks-run-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:532
msgid ""
"Selecting one or more items and clicking _OK_ will start their installation "
"process(es). Initially, some messages that appear to be errors may show up, "
"but they're actually informational alerts as `winetricks` configures the "
"WINE environment to get around known issues for the application:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:533
#, no-wrap
msgid "winetricks-app-install-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:536
msgid ""
"Once these are circumvented, the actual installer for the application will "
"be run:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:537
#, no-wrap
msgid "winetricks-app-install-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:540
msgid ""
"Once the installation completes, the new Windows application should be "
"available from the desktop environment's standard menu (shown in the "
"screenshot below for the LXQT desktop environment):"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:541
#, no-wrap
msgid "winetricks-menu-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:544
msgid ""
"In order to remove the application, run `winetricks` again, and select _Run "
"an uninstaller_."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:545
#, no-wrap
msgid "winetricks-uninstall-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:549
msgid ""
"A Windows(R)-style dialog will appear with a list of installed programs and "
"components. Select the application to be removed, then click the _Modify/"
"Remove_ button."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:550
#, no-wrap
msgid "winetricks-uninstall-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:553
msgid ""
"This will run the applications built-in installer, which should also have "
"the option to uninstall."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:554
#, no-wrap
msgid "winetricks-uninstall-3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:561
msgid ""
"Homura is an application similar to `winetricks`, although it was inspired "
"by the https://lutris.net/[Lutris] gaming system for Linux. But while it is "
"focused on games, there are also non-gaming applications available for "
"install through Homura."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:563
#, no-wrap
msgid "Installing Homura"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:566
msgid "To install Homura's binary package, issue the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:570
#, no-wrap
msgid "# pkg install homura\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:574
msgid ""
"Homura is available in the FreeBSD Ports system. However, than the "
"_emulators_ section of Ports or binary packages, look for it in the _games_ "
"section."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:579
#, no-wrap
msgid ""
"# cd /usr/ports/games/homura\n"
"# make install\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:582
#, no-wrap
msgid "Using Homura"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:586
msgid ""
"Homura's usage is quite similar to that of `winetricks`. When using it for "
"the first time, launch it from the command line (or a desktop environment "
"runner applet) with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:590
#, no-wrap
msgid "% Homura\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:594
msgid ""
"This should result in a friendly welcome message. Click _OK_ to continue."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:595
#, no-wrap
msgid "homura-launch-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:598
msgid ""
"The program will also offer to place a link in the application menu of "
"compatible environments:"
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:599
#, no-wrap
msgid "homura-run-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:602
msgid ""
"Depending on the setup of the FreeBSD machine, Homura may display a message "
"urging the install of native graphics drivers."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:603
#, no-wrap
msgid "homura-run-3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:607
msgid ""
-"The application's window should then appear, which amounts to a \"main menu"
-"\" with all its options. Many of the items are the same as `winetricks`, "
-"although Homura offers some additional, helpful options such as opening its "
-"data folder (_Open Homura Folder_) or running a specified program (_Run a "
-"executable in prefix_)."
+"The application's window should then appear, which amounts to a \"main "
+"menu\" with all its options. Many of the items are the same as "
+"`winetricks`, although Homura offers some additional, helpful options such "
+"as opening its data folder (_Open Homura Folder_) or running a specified "
+"program (_Run a executable in prefix_)."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:608
#, no-wrap
msgid "homura-install-1.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:613
msgid ""
"To select one of Homura's supported applications to install, select "
"_Installation_, and click _OK_. This will display a list of applications "
"Homura can install automatically. Select one, and click _OK_ to start the "
"process."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:614
#, no-wrap
msgid "homura-install-2.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:618
msgid ""
"As a first step Homura will download the selected program. A notification "
"may appear in supported desktop environments."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:619
#, no-wrap
msgid "homura-install-3.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:623
msgid ""
"The program will also create a new prefix for the application. A standard "
"WINE dialog with this message will display."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:624
#, no-wrap
msgid "homura-install-4.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:628
msgid ""
"Next, Homura will install any prerequisites for the selected program. This "
"may involve downloading and extracting a fair number of files, the details "
"of which will show in dialogs."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:629
#, no-wrap
msgid "homura-install-5.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:632
msgid "Downloaded packages are automatically opened and run as required."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:633
#, no-wrap
msgid "homura-install-6.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:638
msgid ""
"The installation may end with a simple desktop notification or message in "
"the terminal, depending on how Homura was launched. But in either case "
"Homura should return to the main screen. To confirm the installation was "
"successful, select _Launcher_, and click _OK_."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:639
#, no-wrap
msgid "homura-install-7.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:642
msgid "This will display a list of installed applications."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:643
#, no-wrap
msgid "homura-install-8.png"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:648
msgid ""
"To run the new program, select it from the list, and click _OK_. To "
"uninstall the application, select _Uninstallation_ from the main screen, "
"which will display a similar list. Select the program to be removed, and "
"click _OK_."
msgstr ""
#. type: Target for macro image
#: documentation/content/en/books/handbook/wine/_index.adoc:649
#, no-wrap
msgid "homura-uninstall-1.png"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:652
#, no-wrap
msgid "Running Multiple Management GUIs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:656
msgid ""
"it is worth noting that the above solutions are not mutually exclusive. it "
"is perfectly acceptable, even advantageous, to have both installed at the "
"same time, as they support a different set of programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:660
msgid ""
"However, it is wise to ensure that they do not access any of the same WINE "
"prefixes. Each of these solutions applies workarounds and makes changes to "
"the registries based on known workarounds to existing WINE issues in order "
"to make a given application run smoothly. Allowing both `winetricks` and "
"Homura to access the same prefix could lead to some of these being "
"overwritten, with the result being some or all applications do not work as "
"expected."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:662
#, no-wrap
msgid "WINE in Multi-User FreeBSD Installations"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:665
#, no-wrap
msgid "Issues with Using a Common WINE Prefix"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:670
msgid ""
"Like most UNIX(R)-like operating systems, FreeBSD is designed for multiple "
"users to be logged in and working at the same time. On the other hand, "
"Windows(R) is multi-user in the sense that there can be multiple user "
"accounts set up on one system. But the expectation is that only one will be "
"using the physical machine (a desktop or laptop PC) at any given moment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:674
msgid ""
"More recent consumer versions of Windows(R) have taken some steps to improve "
"the OS in multi-user scenarios. But it is still largely structured around a "
"single-user experience. Furthermore, the measures the WINE project has "
"taken to create a compatible environment means, unlike FreeBSD applications "
"(including WINE itself), it will resemble this single-user environment."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:678
msgid ""
"So it follows that each user will have to maintain their own set of "
"configurations, which is potentially good. Yet it is advantageous to "
"install applications, particularly large ones like office suites or games, "
"only once. Two examples of reasons to do this are maintenance (software "
"updates need only be applied once) and efficiency in storage (no duplicated "
"files)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:680
msgid ""
"There are two strategies to minimize the impact of multiple WINE users in "
"the system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:682
#, no-wrap
msgid "Installing Applications to a Common Drive"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:687
msgid ""
"As shown in the section on WINE Configuration, WINE provides the ability to "
"attach additional drives to a given prefix. In this way, applications can "
"be installed to a common location, while each user will still have an prefix "
"where individual settings may be kept (depending on the program). This is a "
"good setup if there are relatively few applications to be shared between "
"users, and they are programs that require few custom tweaks changes to the "
"prefix in order to function."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:689
msgid "The steps to make install applications in this way are as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:691
msgid ""
"First, set up a shared location on the system where the files will be "
"stored, such as [.filename]#/mnt/windows-drive_d/#. Creating new directories "
"is described in the man:mkdir[1] manual page."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:692
msgid ""
"Next, set permissions for this new directory to allow only desired users to "
"access it. One approach to this is to create a new group such as \"windows,"
"\" add the desired users to that group (see the sub-section on groups in the "
"crossref:basics[users-groups,Users and Basic Account Management] section), "
"and set to the permissions on the directory to `770` (the section on "
"crossref:basics[permissions,Permissions] illustrates this process)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:693
msgid ""
"Finally, add the location as a drive to the user's prefix using the "
"`winecfg` as described in the above section on WINE Configuration in this "
"chapter."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:697
msgid ""
"Once complete, applications can be installed to this location, and "
"subsequently run using the assigned drive letter (or the standard UNIX(R)-"
"style directory path). However, as noted above, only one user should be "
"running these applications (which may be accessing files within their "
"installation directory) at the same time. Some applications may also "
"exhibit unexpected behavior when run by a user who is not the owner, despite "
"being a member of the group that should have full \"read/write/execute\" "
"permissions for the entire directory."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:699
#, no-wrap
msgid "Using a Common Installation of WINE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:706
msgid ""
"If, on the other hand, there are many applications to be shared, or they "
"require specific tuning in order to work correctly, a different approach may "
"be required. In this method, a completely separate user is created "
"specifically for the purposes of storing the WINE prefix and all its "
"installed applications. Individual users are then granted permission to run "
"programs as this user using the man:sudo[8] command. The result is that "
"these users can launch a WINE application as they normally would, only it "
"will act as though launched by the newly-created user, and therefore use the "
"centrally-maintained prefix containing both settings and programs. To "
"accomplish this, take the following steps:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:708
msgid ""
"Create a new user with the following command (as `root`), which will step "
"through the required details:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:712
#, no-wrap
msgid "# adduser\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:717
msgid ""
"Enter the username (e.g., _windows_) and Full name (\"Microsoft Windows\"). "
"Then accept the defaults for the remainder of the questions. Next, install "
"the `sudo` utility using binary packages with the following:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:721
#, no-wrap
msgid "# pkg install sudo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:724
msgid "Once installed, edit [.filename]#/etc/sudoers# as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:728
#, no-wrap
msgid "# User alias specification\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:731
#, no-wrap
msgid ""
"# define which users can run the wine/windows programs\n"
"User_Alias WINDOWS_USERS = user1,user2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:734
#, no-wrap
msgid ""
"# define which users can administrate (become root)\n"
"User_Alias ADMIN = user1\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:736
#, no-wrap
msgid "# Cmnd alias specification\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:739
#, no-wrap
msgid ""
"# define which commands the WINDOWS_USERS may run\n"
"Cmnd_Alias WINDOWS = /usr/bin/wine,/usr/bin/winecfg\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:745
#, no-wrap
msgid ""
"# Defaults\n"
"Defaults:WINDOWS_USERS env_reset\n"
"Defaults:WINDOWS_USERS env_keep += DISPLAY\n"
"Defaults:WINDOWS_USERS env_keep += XAUTHORITY\n"
"Defaults !lecture,tty_tickets,!fqdn\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:748
#, no-wrap
msgid ""
"# User privilege specification\n"
"root ALL=(ALL) ALL\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:751
#, no-wrap
msgid ""
"# Members of the admin user_alias, defined above, may gain root privileges\n"
"ADMIN ALL=(ALL) ALL\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:754
#, no-wrap
msgid ""
"# The WINDOWS_USERS may run WINDOWS programs as user windows without a password\n"
"WINDOWS_USERS ALL = (windows) NOPASSWD: WINDOWS\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:759
msgid ""
"The result of these changes is the users named in the _User_Alias_ section "
"are permitted to run the programs listed in the _Cmnd Alias_ section using "
"the resources listed in the _Defaults_ section (the current display) as if "
"they were the user listed in the final line of the file. In other words, "
"users designates as _WINDOWS_USERS_ can run the WINE and `winecfg` "
"applications as user _windows_. As a bonus, the configuration here means "
"they will not be required to enter the password for the _windows_ user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:761
msgid ""
"Next provide access to the display back to the _windows_ user, as whom the "
"WINE programs will be running:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:765
#, no-wrap
msgid "% xhost +local:windows\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:769
msgid ""
"This should be added to the list of commands run either at login or when the "
"default graphical environment starts. Once all the above are complete, a "
"user configured as one of the `WINDOW_USERS` in [.filename]#sudoers# can run "
"programs using the shared prefix with the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:773
#, no-wrap
msgid "% sudo -u windows wine program.exe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:779
msgid ""
"it is worth noting that multiple users accessing this shared environment at "
"the same time is still risky. However, consider also that the shared "
"environment can itself contain multiple prefixes. In this way an "
"administrator can create a tested and verified set of programs, each with "
"its own prefix. At the same time, one user can play a game while another "
"works with office programs without the need for redundant software "
"installations."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/wine/_index.adoc:781
#, no-wrap
msgid "WINE on FreeBSD FAQ"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:784
msgid ""
"The following section describes some frequently asked questions, tips/"
"tricks, or common issues in running WINE on FreeBSD, along with their "
"respective answers."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:786
#, no-wrap
msgid "Basic Installation and Usage"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:789
#, no-wrap
msgid "How to Install 32-bit and 64-bit WINE on the Same System?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:793
msgid ""
"As described earlier in this section, the wine and i386-wine packages "
"conflict with one another, and therefore cannot be installed on the same "
"system in the normal way. However, multiple installs can be achieved using "
"mechanisms like chroots/jails, or by building WINE from source (note this "
"does _not_ mean building the port)."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:795
#, no-wrap
msgid "Can DOS Programs Be Run on WINE?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:801
msgid ""
"They can, as \"Console User Interface\" applications as mentioned earlier in "
"this section. However, there is an arguably better method for running DOS "
"software: package:emulators/dosbox[DOSBox]. On the other hand, there is "
"little reason not to at least try it. Simply create a new prefix, install "
"the software, and if it does not work delete the prefix."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:803
#, no-wrap
msgid "Should the package:emulators/wine-devel[] Package/Port be Installed to Use the Development Version of WINE Instead of Stable?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:807
msgid ""
"Yes, installing this version will install the \"development\" version of "
"WINE. As with the 32- and 64-bit versions, they cannot be installed "
"together with the stable versions unless additional measures are taken."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:811
msgid ""
"Note that WINE also has a \"Staging\" version, which contains the most "
"recent updates. This was at one time available as a FreeBSD port; however, "
"it has since been removed. It can be compiled directly from source however."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:813
#, no-wrap
msgid "Install Optimization"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:816
#, no-wrap
msgid "How Should Windows(R) Hardware (e.g., Graphics) Drivers be Handled?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:822
msgid ""
"Operating system drivers transfer commands between applications and "
"hardware. WINE emulates a Windows(R) environment, including the drivers, "
"which in turn use FreeBSD's native drivers for this transfer. it is not "
"advisable to install Windows(R) drivers, as the WINE system is designed to "
"use the host systems drivers. If, for example, a graphics card that "
"benefits from dedicated drivers, install them using the standard FreeBSD "
"methods, not Windows(R) installers."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:824
#, no-wrap
msgid "Is There a way to Make Windows(R) Fonts Look Better?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:827
msgid ""
"A user on the FreeBSD forums suggests this configuration to fix out-of-the-"
"box look of WINE fonts, which can be slightly pixelated."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:829
msgid ""
"According to https://forums.freebsd.org/threads/make-wine-ui-fonts-look-"
"good.68273/[a post in the FreeBSD Forums], adding the following to [."
"filename]#.config/fontconfig/fonts.conf# will add anti-aliasing and make "
"text more readable."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:834
#, no-wrap
msgid ""
"<?xml version=\"1.0\"?>\n"
"<!DOCTYPE fontconfig SYSTEM \"fonts.dtd>\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:836
#, no-wrap
msgid "<fontconfig>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/wine/_index.adoc:845
#, no-wrap
msgid ""
" <!-- antialias all fonts -->\n"
" <match target=\"font\">\n"
" <edit name=\"antialias\" mode=\"assign\"><bool>true</bool></edit>>\n"
" <edit name=\"hinting\" mode=\"assign\"><bool>true</bool></edit>>\n"
" <edit name=\"hintstyle\" mode=\"assign\"><const>hintslight</const></edit>>\n"
" <edit name=\"rgba\" mode=\"assign\"><const>rgb</const></edit>>\n"
" </match>\n"
"</fontconfig>\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:849
#, no-wrap
msgid "Does Having Windows(R) Installed Elsewhere on a System Help WINE Operate?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:854
msgid ""
"It may, depending on the application being run. As mentioned in the section "
"describing `winecfg`, some built-in WINE DLLs and other libraries can be "
"overridden by providing a path to an alternate version. Provided the "
"Windows(R) partition or drive is mounted to the FreeBSD system and "
"accessible to the user, configuring some of these overrides will use native "
"Windows(R) libraries and may decrease the chance of unexpected behavior."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:856
#, no-wrap
msgid "Application-Specific"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:859
#, no-wrap
msgid "Where is the Best Place to see if Application X Works on WINE?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:863
msgid ""
"The first step in determining compatibility should be the https://appdb."
"winehq.org/[WINE AppDB]. This is a compilation of reports of programs "
"working (or not) on all supported platforms, although (as previously "
"mentioned), solutions for one platform are often applicable to others."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:865
#, no-wrap
msgid "Is There Anything That Will Help Games Run Better?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:870
msgid ""
"Perhaps. Many Windows(R) games rely on DirectX, a proprietary Microsoft "
"graphics layer. However there are projects in the open source community "
"attempting to implement support for this technology."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:873
msgid ""
"The _dxvk_ project, which is an attempt to implement DirectX using the "
"FreeBSD-compatible Vulkan graphics sub-system, is one such. Although its "
"primary target is WINE on Linux, https://forums.freebsd.org/threads/what-"
"about-gaming-on-freebsd.723/page-9[some FreeBSD users report] compiling and "
"using dxvk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:877
msgid ""
"In addition, work is under way on a https://www.freshports.org/emulators/"
"wine-proton/[wine-proton port]. This will bring the work of Valve, "
"developer of the Steam gaming platform, to FreeBSD. Proton is a "
"distribution of WINE designed to allow many Windows(R) games to run on other "
"operating systems with minimal setup."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/wine/_index.adoc:879
#, no-wrap
msgid "Is There Anywhere FreeBSD WINE Users Gather to Exchange Tips and Tricks?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:882
msgid ""
"There are plenty of places FreeBSD users discuss issues related to WINE that "
"can be searched for solutions:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:884
msgid ""
"https://forums.freebsd.org/[The FreeBSD forums], particularly the "
"_Installation and Maintenance of Ports or Packages_ or _Emulation and "
"virtualization_ forums."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:885
msgid ""
"https://wiki.freebsd.org/IRC/Channels[FreeBSD IRC channels] including "
"#freebsd (for general support), #freebsd-games, and others."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:886
msgid ""
"https://discord.gg/2CCuhCt[The BSD World Discord server's] channels "
"including _bsd-desktop_, _bsd-gaming_, _bsd-wine_, and others."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/wine/_index.adoc:888
#, no-wrap
msgid "Other OS Resources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:891
msgid ""
"There are a number of resources focused on other operating systems that may "
"be useful for FreeBSD users:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:893
msgid ""
"https://wiki.winehq.org/[The WINE Wiki] has a wealth of information on using "
"WINE, much of which is applicable across many of WINE's supported operating "
"systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:894
msgid ""
"Similarly, the documentation available from other OS projects can also be of "
"good value. https://wiki.archlinux.org/index.php/wine[The WINE page] on the "
"Arch Linux Wiki is a particularly good example, although some of the \"Third-"
"party applications\" (i.e., \"companion applications\") are obviously not "
"available on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/wine/_index.adoc:894
msgid ""
"Finally, Codeweavers (a developer of a commercial version of WINE) is an "
"active upstream contributor. Oftentimes answers to questions in https://www."
"codeweavers.com/support/forums[their support forum] can be of aid in "
"troubleshooting problems with the open source version of WINE."
msgstr ""
diff --git a/documentation/content/en/books/handbook/x11/_index.po b/documentation/content/en/books/handbook/x11/_index.po
index 2acf946a65..8d11254671 100644
--- a/documentation/content/en/books/handbook/x11/_index.po
+++ b/documentation/content/en/books/handbook/x11/_index.po
@@ -1,4272 +1,3135 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/x11/_index.adoc:1
#, no-wrap
msgid "This chapter describes how to install and configure Xorg on FreeBSD, which provides the open source X Window System used to provide a graphical environment"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/x11/_index.adoc:1
#, no-wrap
msgid "Part I. Getting Started"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/x11/_index.adoc:1
#, no-wrap
msgid "Chapter 5. The X Window System"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/x11/_index.adoc:15
#, no-wrap
msgid "The X Window System"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:53
#, no-wrap
msgid "Synopsis"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:58
msgid ""
"An installation of FreeBSD using bsdinstall does not automatically install a "
"graphical user interface. This chapter describes how to install and "
"configure Xorg, which provides the open source X Window System used to "
"provide a graphical environment. It then describes how to find and install "
"a desktop environment or window manager."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:62
msgid ""
"Users who prefer an installation method that automatically configures the "
"Xorg should refer to https://ghostbsd.org[GhostBSD], https://www.midnightbsd."
"org[MidnightBSD] or https://nomadbsd.org[NomadBSD]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:65
msgid ""
"For more information on the video hardware that Xorg supports, refer to the "
"http://www.x.org/[x.org] website."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:67
msgid "After reading this chapter, you will know:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:69
msgid ""
"The various components of the X Window System, and how they interoperate."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:70
msgid "How to install and configure Xorg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:71
msgid ""
"How to install and configure several window managers and desktop "
"environments."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:72
msgid "How to use TrueType(R) fonts in Xorg."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:73
msgid "How to set up your system for graphical logins (XDM)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:75
msgid "Before reading this chapter, you should:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:77
msgid ""
"Know how to install additional third-party software as described in crossref:"
"ports[ports,Installing Applications: Packages and Ports]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:79
#, no-wrap
msgid "Terminology"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:82
msgid ""
"While it is not necessary to understand all of the details of the various "
"components in the X Window System and how they interact, some basic "
"knowledge of these components can be useful."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:83
#, no-wrap
msgid "X server"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:89
msgid ""
"X was designed from the beginning to be network-centric, and adopts a "
"\"client-server\" model. In this model, the \"X server\" runs on the "
"computer that has the keyboard, monitor, and mouse attached. The server's "
"responsibility includes tasks such as managing the display, handling input "
"from the keyboard and mouse, and handling input or output from other devices "
"such as a tablet or a video projector. This confuses some people, because "
"the X terminology is exactly backward to what they expect. They expect the "
-"\"X server\" to be the big powerful machine down the hall, and the \"X client"
-"\" to be the machine on their desk."
+"\"X server\" to be the big powerful machine down the hall, and the \"X "
+"client\" to be the machine on their desk."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:90
#, no-wrap
msgid "X client"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:93
msgid ""
"Each X application, such as XTerm or Firefox, is a \"client\". A client "
"sends messages to the server such as \"Please draw a window at these "
"coordinates\", and the server sends back messages such as \"The user just "
"clicked on the OK button\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:97
msgid ""
"In a home or small office environment, the X server and the X clients "
"commonly run on the same computer. It is also possible to run the X server "
"on a less powerful computer and to run the X applications on a more powerful "
"system. In this scenario, the communication between the X client and server "
"takes place over the network."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:98
#, no-wrap
msgid "window manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:104
msgid ""
"X does not dictate what windows should look like on-screen, how to move them "
"around with the mouse, which keystrokes should be used to move between "
"windows, what the title bars on each window should look like, whether or not "
"they have close buttons on them, and so on. Instead, X delegates this "
"responsibility to a separate window manager application. There are http://"
"www.xwinman.org/[dozens of window managers] available. Each window manager "
"provides a different look and feel: some support virtual desktops, some "
"allow customized keystrokes to manage the desktop, some have a \"Start\" "
"button, and some are themeable, allowing a complete change of the desktop's "
"look-and-feel. Window managers are available in the [.filename]#x11-wm# "
"category of the Ports Collection."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:107
msgid ""
"Each window manager uses a different configuration mechanism. Some expect "
"configuration file written by hand while others provide graphical tools for "
"most configuration tasks."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:108
#, no-wrap
msgid "desktop environment"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:111
msgid ""
"KDE and GNOME are considered to be desktop environments as they include an "
"entire suite of applications for performing common desktop tasks. These may "
"include office suites, web browsers, and games."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:112
#, no-wrap
msgid "focus policy"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:115
msgid ""
"The window manager is responsible for the mouse focus policy. This policy "
"provides some means for choosing which window is actively receiving "
"keystrokes and it should also visibly indicate which window is currently "
"active."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:125
msgid ""
"One focus policy is called \"click-to-focus\". In this model, a window "
"becomes active upon receiving a mouse click. In the \"focus-follows-mouse\" "
"policy, the window that is under the mouse pointer has focus and the focus "
"is changed by pointing at another window. If the mouse is over the root "
"window, then this window is focused. In the \"sloppy-focus\" model, if the "
"mouse is moved over the root window, the most recently used window still has "
"the focus. With sloppy-focus, focus is only changed when the cursor enters "
"a new window, and not when exiting the current window. In the \"click-to-"
"focus\" policy, the active window is selected by mouse click. The window "
"may then be raised and appear in front of all other windows. All keystrokes "
"will now be directed to this window, even if the cursor is moved to another "
"window."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:129
msgid ""
"Different window managers support different focus models. All of them "
"support click-to-focus, and the majority of them also support other "
"policies. Consult the documentation for the window manager to determine "
"which focus models are available."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:130
#, no-wrap
msgid "widgets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:136
msgid ""
"Widget is a term for all of the items in the user interface that can be "
"clicked or manipulated in some way. This includes buttons, check boxes, "
"radio buttons, icons, and lists. A widget toolkit is a set of widgets used "
"to create graphical applications. There are several popular widget "
"toolkits, including Qt, used by KDE, and GTK+, used by GNOME. As a result, "
"applications will have a different look and feel, depending upon which "
"widget toolkit was used to create the application."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:138
#, no-wrap
msgid "Installing Xorg"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:141
msgid "On FreeBSD, Xorg can be installed as a package or port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:143
msgid ""
"The binary package can be installed quickly but with fewer options for "
"customization:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:147
#, no-wrap
msgid "# pkg install xorg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:150
msgid "To build and install from the Ports Collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:155
#, no-wrap
msgid ""
"# cd /usr/ports/x11/xorg\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:159
msgid ""
"Either of these installations results in the complete Xorg system being "
"installed. Binary packages are the best option for most users."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:163
msgid ""
"A smaller version of the X system suitable for experienced users is "
"available in package:x11/xorg-minimal[]. Most of the documents, libraries, "
"and applications will not be installed. Some applications require these "
"additional components to function."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:165
#, no-wrap
msgid "Xorg Configuration"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:168
#, no-wrap
msgid "Quick Start"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:171
msgid "Xorg supports most common video cards, keyboards, and pointing devices."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:176
msgid ""
"Video cards, monitors, and input devices are automatically detected and do "
"not require any manual configuration. Do not create [.filename]#xorg.conf# "
"or run a `-configure` step unless automatic configuration fails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:180
msgid ""
"If Xorg has been used on this computer before, move or remove any existing "
"configuration files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:185
#, no-wrap
msgid ""
"# mv /etc/X11/xorg.conf ~/xorg.conf.etc\n"
"# mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:188
msgid ""
"Add the user who will run Xorg to the `video` or `wheel` group to enable 3D "
"acceleration when available. To add user _jru_ to whichever group is "
"available:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:192
#, no-wrap
msgid "# pw groupmod video -m jru || pw groupmod wheel -m jru\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:195
msgid ""
"The `TWM` window manager is included by default. It is started when Xorg "
"starts:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:199
#, no-wrap
msgid "% startx\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:202
msgid ""
"On some older versions of FreeBSD, the system console must be set to man:"
"vt[4] before switching back to the text console will work properly. See <<x-"
"config-kms>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:204
#, no-wrap
msgid "User Group for Accelerated Video"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:209
msgid ""
"Access to [.filename]#/dev/dri# is needed to allow 3D acceleration on video "
"cards. It is usually simplest to add the user who will be running X to "
"either the `video` or `wheel` group. Here, man:pw[8] is used to add user "
"_slurms_ to the `video` group, or to the `wheel` group if there is no "
"`video` group:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:213
#, no-wrap
msgid "# pw groupmod video -m slurms || pw groupmod wheel -m slurms\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:216
#, no-wrap
msgid "Kernel Mode Setting (`KMS`)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:223
msgid ""
"When the computer switches from displaying the console to a higher screen "
"resolution for X, it must set the video output _mode_. Recent versions of "
"`Xorg` use a system inside the kernel to do these mode changes more "
"efficiently. Older versions of FreeBSD use man:sc[4], which is not aware of "
"the `KMS` system. The end result is that after closing X, the system "
"console is blank, even though it is still working. The newer man:vt[4] "
"console avoids this problem."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:225
msgid "Add this line to [.filename]#/boot/loader.conf# to enable man:vt[4]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:229
#, no-wrap
msgid "kern.vty=vt\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:232
#, no-wrap
msgid "Configuration Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:236
msgid ""
"Manual configuration is usually not necessary. Please do not manually "
"create configuration files unless autoconfiguration does not work."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:238
#, no-wrap
msgid "Directory"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:243
msgid ""
"Xorg looks in several directories for configuration files. [.filename]#/usr/"
"local/etc/X11/# is the recommended directory for these files on FreeBSD. "
"Using this directory helps keep application files separate from operating "
"system files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:246
msgid ""
"Storing configuration files in the legacy [.filename]#/etc/X11/# still "
"works. However, this mixes application files with the base FreeBSD files "
"and is not recommended."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:248
#, no-wrap
msgid "Single or Multiple Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:253
msgid ""
"It is easier to use multiple files that each configure a specific setting "
"than the traditional single [.filename]#xorg.conf#. These files are stored "
"in the [.filename]#xorg.conf.d/# subdirectory of the main configuration file "
"directory. The full path is typically [.filename]#/usr/local/etc/X11/xorg."
"conf.d/#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:255
msgid "Examples of these files are shown later in this section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:257
msgid ""
"The traditional single [.filename]#xorg.conf# still works, but is neither as "
"clear nor as flexible as multiple files in the [.filename]#xorg.conf.d/# "
"subdirectory."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:259
#, no-wrap
msgid "Video Cards"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:271
msgid ""
"The Ports framework provides the drm graphics drivers necessary for X11 "
"operation on recent hardware. Users can use one of the following drivers "
"available from package:graphics/drm-kmod[]. These drivers use interfaces in "
"the kernel that are normally private. As such, it is strongly recommended "
"that the drivers be built via the ports system via the `PORTS_MODULES` "
"variable. With `PORTS_MODULES`, every time you build the kernel, the "
"corresponding port(s) containing kernel modules are re-built against the "
"updated sources. This ensures the kernel module stays in-sync with the "
"kernel itself. The kernel and ports trees should be updated together for "
"maximum compatibility. You can add `PORTS_MODULES` to your [.filename]#/etc/"
"make.conf# file to ensure all kernels you build rebuild this module. "
"Advanced users can add it to their kernel config files with the "
"`makeoptions` directive. If you run GENERIC and use freebsd-update, you can "
"just build the [.filename]#graphics/drm-kmod# or [.filename]#x11/nvidia-"
"driver# port after each `freebsd-update install` invocation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:275
msgid "[.filename]#/etc/make.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:280
#, no-wrap
msgid ""
"SYSDIR=path/to/src/sys\n"
"PORTS_MODULES=graphics/drm-kmod x11/nvidia-driver\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:282
msgid ""
"This will rebuild everything, but can select one or the other depending on "
"which GPU / graphics card you have."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:285
#, no-wrap
msgid "Intel KMS driver, Radeon KMS driver, AMD KMS driver"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:287
msgid ""
"2D and 3D acceleration is supported on most Intel KMS driver graphics cards "
"provided by Intel."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:289
msgid "Driver name: `i915kms`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:291
msgid ""
"2D and 3D acceleration is supported on most older Radeon KMS driver graphics "
"cards provided by AMD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:293
msgid "Driver name: `radeonkms`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:295
msgid ""
"2D and 3D acceleration is supported on most newer AMD KMS driver graphics "
"cards provided by AMD."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:297
msgid "Driver name: `amdgpu`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:299
msgid ""
"For reference, please see https://en.wikipedia.org/wiki/"
"List_of_Intel_graphics_processing_units[] or https://en.wikipedia.org/wiki/"
"List_of_AMD_graphics_processing_units[] for a list of supported GPUs."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:301
#, no-wrap
msgid "Intel(R)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:303
msgid ""
"3D acceleration is supported on most Intel(R) graphics up to Ivy Bridge (HD "
"Graphics 2500, 4000, and P4000), including Iron Lake (HD Graphics) and Sandy "
"Bridge (HD Graphics 2000)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:305
msgid "Driver name: `intel`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:307
msgid ""
"For reference, see https://en.wikipedia.org/wiki/"
"List_of_Intel_graphics_processing_units[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:309
#, no-wrap
msgid "AMD(R) Radeon"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:311
msgid ""
"2D and 3D acceleration is supported on Radeon cards up to and including the "
"HD6000 series."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:313
msgid "Driver name: `radeon`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:315
msgid ""
"For reference, see https://en.wikipedia.org/wiki/"
"List_of_AMD_graphics_processing_units[]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:317
#, no-wrap
msgid "NVIDIA"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:320
msgid ""
"Several NVIDIA drivers are available in the [.filename]#x11# category of the "
"Ports Collection. Install the driver that matches the video card."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:322
msgid ""
"For reference, see https://en.wikipedia.org/wiki/"
"List_of_Nvidia_graphics_processing_units[]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:332
msgid ""
"Kernel support for NVIDIA cards is found in either the [.filename]#x11/"
"nvidia-driver# port or the [.filename]#x11/nvidia-driver-xxx# port. Modern "
"cards use the former. Legacy cards use the -xxx ports, where xxx is one of "
"304, 340 or 390 indicating the version of the driver. For those, fill in "
"the `-xxx` using the http://download.nvidia.com/XFree86/FreeBSD-"
"x86_64/465.19.01/README/[ Supported NVIDIA GPU Products ] page. This page "
"lists the devices supported by different versions of the driver. Legacy "
"drivers run on both i386 and amd64. The current driver only supports "
"amd64. Read http://download.nvidia.com/XFree86/FreeBSD-x86_64/465.19.01/"
"README/[installation and configuration of NVIDIA driver] for details. While "
"we recommend this driver be rebuilt with each kernel rebuild for maximum "
"safety, it uses almost no private kernel interfaces and is usually safe "
"across kernel updates."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:334
#, no-wrap
msgid "Hybrid Combination Graphics"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:338
msgid ""
"Some notebook computers add additional graphics processing units to those "
"built into the chipset or processor. _Optimus_ combines Intel(R) and NVIDIA "
"hardware. _Switchable Graphics_ or _Hybrid Graphics_ are a combination of "
"an Intel(R) or AMD(R) processor and an AMD(R) Radeon `GPU`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:340
msgid ""
"Implementations of these hybrid graphics systems vary, and Xorg on FreeBSD "
"is not able to drive all versions of them."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:344
msgid ""
"Some computers provide a `BIOS` option to disable one of the graphics "
"adapters or select a _discrete_ mode which can be used with one of the "
"standard video card drivers. For example, it is sometimes possible to "
"disable the NVIDIA `GPU` in an Optimus system. The Intel(R) video can then "
"be used with an Intel(R) driver."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:347
msgid ""
"`BIOS` settings depend on the model of computer. In some situations, both "
"``GPU``s can be left enabled, but creating a configuration file that only "
"uses the main `GPU` in the `Device` section is enough to make such a system "
"functional."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:349
#, no-wrap
msgid "Other Video Cards"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:351
msgid ""
"Drivers for some less-common video cards can be found in the [.filename]#x11-"
"drivers# directory of the Ports Collection."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:356
msgid ""
"Cards that are not supported by a specific driver might still be usable with "
"the package:x11-drivers/xf86-video-vesa[] driver. This driver is installed "
"by package:x11/xorg[]. It can also be installed manually as package:x11-"
"drivers/xf86-video-vesa[]. Xorg attempts to use this driver when a specific "
"driver is not found for the video card."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:358
msgid ""
"package:x11-drivers/xf86-video-scfb[] is a similar nonspecialized video "
"driver that works on many `UEFI` and ARM(R) computers."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:360
#, no-wrap
msgid "Setting the Video Driver in a File"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:362
msgid "To set the Intel(R) driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:364
#, no-wrap
msgid "Select Intel(R) Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:368
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-intel.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:376
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"intel\"\n"
"\t# BusID \"PCI:1:0:0\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:380
msgid ""
"If more than one video card is present, the `BusID` identifier can be "
"uncommented and set to select the desired card. A list of video card bus "
"``ID``s can be displayed with `pciconf -lv | grep -B3 display`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:383
msgid "To set the Radeon driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:385
#, no-wrap
msgid "Select Radeon Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:389
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:396
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"radeon\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:401
msgid "To set the `VESA` driver in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:403
#, no-wrap
msgid "Select `VESA` Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:407
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:414
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"vesa\"\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:419
msgid "To set the `scfb` driver for use with a `UEFI` or ARM(R) computer:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:421
#, no-wrap
msgid "Select `scfb` Video Driver in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:425
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:432
#, no-wrap
msgid ""
"Section \"Device\"\n"
"\tIdentifier \"Card0\"\n"
"\tDriver \"scfb\"\n"
"EndSection\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:436
#, no-wrap
msgid "Monitors"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:441
msgid ""
"Almost all monitors support the Extended Display Identification Data "
"standard (`EDID`). Xorg uses `EDID` to communicate with the monitor and "
"detect the supported resolutions and refresh rates. Then it selects the "
"most appropriate combination of settings to use with that monitor."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:443
msgid ""
"Other resolutions supported by the monitor can be chosen by setting the "
"desired resolution in configuration files, or after the X server has been "
"started with man:xrandr[1]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:445
#, no-wrap
msgid "Using man:xrandr[1]"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:447
msgid ""
"Run man:xrandr[1] without any parameters to see a list of video outputs and "
"detected monitor modes:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:465
#, no-wrap
msgid ""
"% xrandr\n"
"Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192\n"
"DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm\n"
" 1920x1200 59.95*+\n"
" 1600x1200 60.00\n"
" 1280x1024 85.02 75.02 60.02\n"
" 1280x960 60.00\n"
" 1152x864 75.00\n"
" 1024x768 85.00 75.08 70.07 60.00\n"
" 832x624 74.55\n"
" 800x600 75.00 60.32\n"
" 640x480 75.00 60.00\n"
" 720x400 70.08\n"
"DisplayPort-0 disconnected (normal left inverted right x axis y axis)\n"
"HDMI-0 disconnected (normal left inverted right x axis y axis)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:469
msgid ""
"This shows that the `DVI-0` output is being used to display a screen "
"resolution of 1920x1200 pixels at a refresh rate of about 60 Hz. Monitors "
"are not attached to the `DisplayPort-0` and `HDMI-0` connectors."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:472
msgid ""
"Any of the other display modes can be selected with man:xrandr[1]. For "
"example, to switch to 1280x1024 at 60 Hz:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:476
#, no-wrap
msgid "% xrandr --output DVI-0 --mode 1280x1024 --rate 60\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:479
msgid ""
"A common task is using the external video output on a notebook computer for "
"a video projector."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:483
msgid ""
"The type and quantity of output connectors varies between devices, and the "
"name given to each output varies from driver to driver. What one driver "
"calls `HDMI-1`, another might call `HDMI1`. So the first step is to run man:"
"xrandr[1] to list all the available outputs:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:504
#, no-wrap
msgid ""
"% xrandr\n"
"Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192\n"
"LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm\n"
" 1366x768 60.04*+\n"
" 1024x768 60.00\n"
" 800x600 60.32 56.25\n"
" 640x480 59.94\n"
"VGA1 connected (normal left inverted right x axis y axis)\n"
" 1280x1024 60.02 + 75.02\n"
" 1280x960 60.00\n"
" 1152x864 75.00\n"
" 1024x768 75.08 70.07 60.00\n"
" 832x624 74.55\n"
" 800x600 72.19 75.00 60.32 56.25\n"
" 640x480 75.00 72.81 66.67 60.00\n"
" 720x400 70.08\n"
"HDMI1 disconnected (normal left inverted right x axis y axis)\n"
"DP1 disconnected (normal left inverted right x axis y axis)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:507
msgid ""
"Four outputs were found: the built-in panel `LVDS1`, and external `VGA1`, "
"`HDMI1`, and `DP1` connectors."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:510
msgid ""
"The projector has been connected to the `VGA1` output. man:xrandr[1] is now "
"used to set that output to the native resolution of the projector and add "
"the additional space to the right side of the desktop:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:514
#, no-wrap
msgid "% xrandr --output VGA1 --auto --right-of LVDS1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:519
msgid ""
"`--auto` chooses the resolution and refresh rate detected by `EDID`. If the "
"resolution is not correctly detected, a fixed value can be given with `--"
"mode` instead of the `--auto` statement. For example, most projectors can "
"be used with a 1024x768 resolution, which is set with `--mode 1024x768`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:521
msgid ""
"man:xrandr[1] is often run from [.filename]#.xinitrc# to set the appropriate "
"mode when X starts."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:523
#, no-wrap
msgid "Setting Monitor Resolution in a File"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:525
msgid "To set a screen resolution of 1024x768 in a configuration file:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:526
#, no-wrap
msgid "Set Screen Resolution in a File"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:530
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:540
#, no-wrap
msgid ""
"Section \"Screen\"\n"
"\tIdentifier \"Screen0\"\n"
"\tDevice \"Card0\"\n"
"\tSubSection \"Display\"\n"
"\tModes \"1024x768\"\n"
"\tEndSubSection\n"
"EndSection\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:545
msgid ""
"The few monitors that do not have `EDID` can be configured by setting "
"`HorizSync` and `VertRefresh` to the range of frequencies supported by the "
"monitor."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:546
#, no-wrap
msgid "Manually Setting Monitor Frequencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:550
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:558
#, no-wrap
msgid ""
"Section \"Monitor\"\n"
"\tIdentifier \"Monitor0\"\n"
"\tHorizSync 30-83 # kHz\n"
"\tVertRefresh 50-76 # Hz\n"
"EndSection\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:563
#, no-wrap
msgid "Input Devices"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:566
#, no-wrap
msgid "Keyboards"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:569
#, no-wrap
msgid "Keyboard Layout"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:572
msgid ""
"The standardized location of keys on a keyboard is called a _layout_. "
"Layouts and other adjustable parameters are listed in man:xkeyboard-"
"config[7]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:576
msgid ""
"A United States layout is the default. To select an alternate layout, set "
"the `XkbLayout` and `XkbVariant` options in an `InputClass`. This will be "
"applied to all input devices that match the class."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:578
msgid "This example selects a French keyboard layout."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:579
#, no-wrap
msgid "Setting a Keyboard Layout"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:583
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-fr.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:591
#, no-wrap
msgid ""
"Section\t\"InputClass\"\n"
"\tIdentifier\t\"KeyboardDefaults\"\n"
"\tMatchIsKeyboard\t\"on\"\n"
"\tOption\t\t\"XkbLayout\" \"fr\"\n"
"EndSection\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:595
#, no-wrap
msgid "Setting Multiple Keyboard Layouts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:601
msgid ""
"Set United States, Spanish, and Ukrainian keyboard layouts. Cycle through "
"these layouts by pressing kbd:[Alt+Shift]. package:x11/xxkb[] or package:"
"x11/sbxkb[] can be used for improved layout switching control and current "
"layout indicators."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:603
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:611
#, no-wrap
msgid ""
"Section\t\"InputClass\"\n"
"\tIdentifier\t\"All Keyboards\"\n"
"\tMatchIsKeyboard\t\"yes\"\n"
"\tOption\t\t\"XkbLayout\" \"us, es, ua\"\n"
"EndSection\n"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:616
#, no-wrap
msgid "Closing Xorg From the Keyboard"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:620
msgid ""
"X can be closed with a combination of keys. By default, that key "
"combination is not set because it conflicts with keyboard commands for some "
"applications. Enabling this option requires changes to the keyboard "
"`InputDevice` section:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:621
#, no-wrap
msgid "Enabling Keyboard Exit from X"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:625
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:633
#, no-wrap
msgid ""
"Section\t\"InputClass\"\n"
"\tIdentifier\t\"KeyboardDefaults\"\n"
"\tMatchIsKeyboard\t\"on\"\n"
"\tOption\t\t\"XkbOptions\" \"terminate:ctrl_alt_bksp\"\n"
"EndSection\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:638
#, no-wrap
msgid "Mice and Pointing Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:643
msgid ""
"If using package:xorg-server[] 1.20.8 or later under FreeBSD {rel121-"
"current} and not using man:moused[8], add `kern.evdev.rcpt_mask=12` to [."
"filename]#/etc/sysctl.conf#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:647
msgid ""
"Many mouse parameters can be adjusted with configuration options. See man:"
"mousedrv[4] for a full list."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/handbook/x11/_index.adoc:648
#, no-wrap
msgid "Mouse Buttons"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:651
msgid ""
"The number of buttons on a mouse can be set in the mouse `InputDevice` "
"section of [.filename]#xorg.conf#. To set the number of buttons to 7:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:652
#, no-wrap
msgid "Setting the Number of Mouse Buttons"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:656
msgid "[.filename]#/usr/local/etc/X11/xorg.conf.d/mouse0-buttons.conf#"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:663
#, no-wrap
msgid ""
"Section \"InputDevice\"\n"
"\tIdentifier \"Mouse0\"\n"
"\tOption \"Buttons\" \"7\"\n"
"EndSection\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:668
#, no-wrap
msgid "Manual Configuration"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:672
msgid ""
"In some cases, Xorg autoconfiguration does not work with particular "
"hardware, or a different configuration is desired. For these cases, a "
"custom configuration file can be created."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:677
msgid ""
"Do not create manual configuration files unless required. Unnecessary "
"manual configuration can prevent proper operation."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:681
msgid ""
"A configuration file can be generated by Xorg based on the detected "
"hardware. This file is often a useful starting point for custom "
"configurations."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:683
msgid "Generating an [.filename]#xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:687
#, no-wrap
msgid "# Xorg -configure\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:691
msgid ""
"The configuration file is saved to [.filename]#/root/xorg.conf.new#. Make "
"any changes desired, then test that file (using `-retro` so there is a "
"visible background) with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:695
#, no-wrap
msgid "# Xorg -retro -config /root/xorg.conf.new\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:698
msgid ""
"After the new configuration has been adjusted and tested, it can be split "
"into smaller files in the normal location, [.filename]#/usr/local/etc/X11/"
"xorg.conf.d/#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:700
#, no-wrap
msgid "Using Fonts in Xorg"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:703
#, no-wrap
msgid "Type1 Fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:712
msgid ""
"The default fonts that ship with Xorg are less than ideal for typical "
"desktop publishing applications. Large presentation fonts show up jagged "
"and unprofessional looking, and small fonts are almost completely "
"unintelligible. However, there are several free, high quality Type1 "
"(PostScript(R)) fonts available which can be readily used with Xorg. For "
"instance, the URW font collection (package:x11-fonts/urwfonts[]) includes "
"high quality versions of standard type1 fonts (Times Roman(TM), "
"Helvetica(TM), Palatino(TM) and others). The Freefonts collection (package:"
"x11-fonts/freefonts[]) includes many more fonts, but most of them are "
"intended for use in graphics software such as the Gimp, and are not complete "
"enough to serve as screen fonts. In addition, Xorg can be configured to use "
"TrueType(R) fonts with a minimum of effort. For more details on this, see "
"the man:X[7] manual page or <<truetype>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:714
msgid ""
"To install the above Type1 font collections from binary packages, run the "
"following commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:718
#, no-wrap
msgid "# pkg install urwfonts\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:721
msgid ""
"Alternatively, to build from the Ports Collection, run the following "
"commands:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:726
#, no-wrap
msgid ""
"# cd /usr/ports/x11-fonts/urwfonts\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:730
msgid ""
"And likewise with the freefont or other collections. To have the X server "
"detect these fonts, add an appropriate line to the X server configuration "
"file ([.filename]#/etc/X11/xorg.conf#), which reads:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:734
#, no-wrap
msgid "FontPath \"/usr/local/share/fonts/urwfonts/\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:737
msgid "Alternatively, at the command line in the X session run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:742
#, no-wrap
msgid ""
"% xset fp+ /usr/local/share/fonts/urwfonts\n"
"% xset fp rehash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:746
msgid ""
"This will work but will be lost when the X session is closed, unless it is "
"added to the startup file ([.filename]#~/.xinitrc# for a normal `startx` "
"session, or [.filename]#~/.xsession# when logging in through a graphical "
"login manager like XDM). A third way is to use the new [.filename]#/usr/"
"local/etc/fonts/local.conf# as demonstrated in <<antialias>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:748
#, no-wrap
msgid "TrueType(R) Fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:754
msgid ""
"Xorg has built in support for rendering TrueType(R) fonts. There are two "
"different modules that can enable this functionality. The freetype module "
"is used in this example because it is more consistent with the other font "
"rendering back-ends. To enable the freetype module just add the following "
"line to the `\"Module\"` section of [.filename]#/etc/X11/xorg.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:758
#, no-wrap
msgid "Load \"freetype\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:764
msgid ""
"Now make a directory for the TrueType(R) fonts (for example, [.filename]#/"
"usr/local/share/fonts/TrueType#) and copy all of the TrueType(R) fonts into "
"this directory. Keep in mind that TrueType(R) fonts cannot be directly "
"taken from an Apple(R) Mac(R); they must be in UNIX(R)/MS-DOS(R)/Windows(R) "
"format for use by Xorg. Once the files have been copied into this "
"directory, use mkfontscale to create a [.filename]#fonts.dir#, so that the X "
"font renderer knows that these new files have been installed. `mkfontscale` "
"can be installed as a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:768
#, no-wrap
msgid "# pkg install mkfontscale\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:771
msgid "Then create an index of X font files in a directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:776
#, no-wrap
msgid ""
"# cd /usr/local/share/fonts/TrueType\n"
"# mkfontscale\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:780
msgid ""
"Now add the TrueType(R) directory to the font path. This is just the same "
"as described in <<type1>>:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:785
#, no-wrap
msgid ""
"% xset fp+ /usr/local/share/fonts/TrueType\n"
"% xset fp rehash\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:788
msgid "or add a `FontPath` line to [.filename]#xorg.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:791
msgid ""
"Now Gimp, LibreOffice, and all of the other X applications should now "
"recognize the installed TrueType(R) fonts. Extremely small fonts (as with "
"text in a high resolution display on a web page) and extremely large fonts "
"(within LibreOffice) will look much better now."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:793
#, no-wrap
msgid "Anti-Aliased Fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:796
msgid ""
"All fonts in Xorg that are found in [.filename]#/usr/local/share/fonts/# and "
"[.filename]#~/.fonts/# are automatically made available for anti-aliasing to "
"Xft-aware applications. Most recent applications are Xft-aware, including "
"KDE, GNOME, and Firefox."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:800
msgid ""
"To control which fonts are anti-aliased, or to configure anti-aliasing "
"properties, create (or edit, if it already exists) the file [.filename]#/usr/"
"local/etc/fonts/local.conf#. Several advanced features of the Xft font "
"system can be tuned using this file; this section describes only some simple "
"possibilities. For more details, please see man:fonts-conf[5]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:804
msgid ""
"This file must be in XML format. Pay careful attention to case, and make "
"sure all tags are properly closed. The file begins with the usual XML "
"header followed by a DOCTYPE definition, and then the `<fontconfig>` tag:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:810
#, no-wrap
msgid ""
"<?xml version=\"1.0\"?>\n"
" <!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">\n"
" <fontconfig>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:814
msgid ""
"As previously stated, all fonts in [.filename]#/usr/local/share/fonts/# as "
"well as [.filename]#~/.fonts/# are already made available to Xft-aware "
"applications. To add another directory outside of these two directory "
"trees, add a line like this to [.filename]#/usr/local/etc/fonts/local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:818
#, no-wrap
msgid "<dir>/path/to/my/fonts</dir>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:821
msgid ""
"After adding new fonts, and especially new font directories, rebuild the "
"font caches:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:825
#, no-wrap
msgid "# fc-cache -f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:829
msgid ""
"Anti-aliasing makes borders slightly fuzzy, which makes very small text more "
"readable and removes \"staircases\" from large text, but can cause eyestrain "
"if applied to normal text. To exclude font sizes smaller than 14 point from "
"anti-aliasing, include these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:848
#, no-wrap
msgid ""
" <match target=\"font\">\n"
"\t <test name=\"size\" compare=\"less\">\n"
"\t\t<double>14</double>\n"
"\t </test>\n"
"\t <edit name=\"antialias\" mode=\"assign\">\n"
"\t\t<bool>false</bool>\n"
"\t </edit>\n"
"\t</match>\n"
"\t<match target=\"font\">\n"
"\t <test name=\"pixelsize\" compare=\"less\" qual=\"any\">\n"
"\t\t<double>14</double>\n"
"\t </test>\n"
"\t <edit mode=\"assign\" name=\"antialias\">\n"
"\t\t<bool>false</bool>\n"
"\t </edit>\n"
"\t</match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:854
msgid ""
"Spacing for some monospaced fonts might also be inappropriate with anti-"
"aliasing. This seems to be an issue with KDE, in particular. One possible "
"fix is to force the spacing for such fonts to be 100. Add these lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:873
#, no-wrap
msgid ""
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t <string>fixed</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t <string>mono</string>\n"
"\t </edit>\n"
"\t</match>\n"
"\t<match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t<string>console</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t\t<string>mono</string>\n"
"\t </edit>\n"
"\t</match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:876
msgid ""
"(this aliases the other common names for fixed fonts as `\"mono\"`), and "
"then add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:887
#, no-wrap
msgid ""
" <match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t <string>mono</string>\n"
"\t </test>\n"
"\t <edit name=\"spacing\" mode=\"assign\">\n"
"\t\t <int>100</int>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:893
msgid ""
"Certain fonts, such as Helvetica, may have a problem when anti-aliased. "
"Usually this manifests itself as a font that seems cut in half vertically. "
"At worst, it may cause applications to crash. To avoid this, consider "
"adding the following to [.filename]#local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:904
#, no-wrap
msgid ""
" <match target=\"pattern\" name=\"family\">\n"
"\t <test qual=\"any\" name=\"family\">\n"
"\t\t <string>Helvetica</string>\n"
"\t </test>\n"
"\t <edit name=\"family\" mode=\"assign\">\n"
"\t\t <string>sans-serif</string>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:908
msgid ""
"After editing [.filename]#local.conf#, make certain to end the file with the "
"`</fontconfig>` tag. Not doing this will cause changes to be ignored."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:911
msgid ""
"Users can add personalized settings by creating their own [.filename]#~/."
"config/fontconfig/fonts.conf#. This file uses the same `XML` format "
"described above."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:915
msgid ""
"One last point: with an LCD screen, sub-pixel sampling may be desired. This "
"basically treats the (horizontally separated) red, green and blue components "
"separately to improve the horizontal resolution; the results can be "
"dramatic. To enable this, add the line somewhere in [.filename]#local.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:926
#, no-wrap
msgid ""
"\t <match target=\"font\">\n"
"\t <test qual=\"all\" name=\"rgba\">\n"
"\t\t <const>unknown</const>\n"
"\t </test>\n"
"\t <edit name=\"rgba\" mode=\"assign\">\n"
"\t\t <const>rgb</const>\n"
"\t </edit>\n"
"\t </match>\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:931
msgid ""
"Depending on the sort of display, `rgb` may need to be changed to `bgr`, "
"`vrgb` or `vbgr`: experiment and see which works best."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:934
#, no-wrap
msgid "The X Display Manager"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:938
msgid ""
"Xorg provides an X Display Manager, XDM, which can be used for login session "
"management. XDM provides a graphical interface for choosing which display "
"server to connect to and for entering authorization information such as a "
"login and password combination."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:942
msgid ""
"This section demonstrates how to configure the X Display Manager on "
"FreeBSD. Some desktop environments provide their own graphical login "
"manager. Refer to <<x11-wm-gnome>> for instructions on how to configure the "
"GNOME Display Manager and <<x11-wm-kde>> for instructions on how to "
"configure the KDE Display Manager."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:943
#, no-wrap
msgid "Configuring XDM"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:947
msgid ""
"To install XDM, use the package:x11/xdm[] package or port. Once installed, "
"XDM can be configured to run when the machine boots up by adding the "
"following line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:951
#, no-wrap
msgid "xdm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:954
msgid "XDM will run on the ninth virtual terminal by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:959
msgid ""
"The XDM configuration directory is located in [.filename]#/usr/local/etc/X11/"
"xdm#. This directory contains several files used to change the behavior and "
"appearance of XDM, as well as a few scripts and programs used to set up the "
"desktop when XDM is running. <<xdm-config-files>> summarizes the function "
"of each of these files. The exact syntax and usage of these files is "
"described in man:xdm[8]."
msgstr ""
#. type: Block title
#: documentation/content/en/books/handbook/x11/_index.adoc:961
#, no-wrap
msgid "XDM Configuration Files"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:965
#, no-wrap
msgid "File"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:967
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:968
#, no-wrap
msgid "[.filename]#Xaccess#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:970
#, no-wrap
msgid "The protocol for connecting to XDM is called the X Display Manager Connection Protocol (`XDMCP`). This file is a client authorization ruleset for controlling `XDMCP` connections from remote machines. By default, this file does not allow any remote clients to connect."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:971
#, no-wrap
msgid "[.filename]#Xresources#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:973
#, no-wrap
msgid "This file controls the look and feel of the XDM display chooser and login screens. The default configuration is a simple rectangular login window with the hostname of the machine displayed at the top in a large font and \"Login:\" and \"Password:\" prompts below. The format of this file is identical to the app-defaults file described in the Xorg documentation."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:974
#, no-wrap
msgid "[.filename]#Xservers#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:976
#, no-wrap
msgid "The list of local and remote displays the chooser should provide as login choices."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:977
#, no-wrap
msgid "[.filename]#Xsession#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:979
#, no-wrap
msgid "Default session script for logins which is run by XDM after a user has logged in. This points to a customized session script in [.filename]#~/.xsession#."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:980
#, no-wrap
msgid "[.filename]#Xsetup_#*"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:982
#, no-wrap
msgid "Script to automatically launch applications before displaying the chooser or login interfaces. There is a script for each display being used, named [.filename]#Xsetup_*#, where `*` is the local display number. Typically these scripts run one or two programs in the background such as `xconsole`."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:983
#, no-wrap
msgid "[.filename]#xdm-config#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:985
#, no-wrap
msgid "Global configuration for all displays running on this machine."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:986
#, no-wrap
msgid "[.filename]#xdm-errors#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:988
#, no-wrap
msgid "Contains errors generated by the server program. If a display that XDM is trying to start hangs, look at this file for error messages. These messages are also written to the user's [.filename]#~/.xsession-errors# on a per-session basis."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:989
#, no-wrap
msgid "[.filename]#xdm-pid#"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/x11/_index.adoc:990
#, no-wrap
msgid "The running process `ID` of XDM."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:992
#, no-wrap
msgid "Configuring Remote Access"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:996
msgid ""
"By default, only users on the same system can login using XDM. To enable "
"users on other systems to connect to the display server, edit the access "
"control rules and enable the connection listener."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:998
msgid ""
"To configure XDM to listen for any remote connection, comment out the "
"`DisplayManager.requestPort` line in [.filename]#/usr/local/etc/X11/xdm/xdm-"
"config# by putting a `!` in front of it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1004
#, no-wrap
msgid ""
"! SECURITY: do not listen for XDMCP or Chooser requests\n"
"! Comment out this line if you want to manage X terminals with xdm\n"
"DisplayManager.requestPort: 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1008
msgid ""
"Save the edits and restart XDM. To restrict remote access, look at the "
"example entries in [.filename]#/usr/local/etc/X11/xdm/Xaccess# and refer to "
"man:xdm[8] for further information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:1010
#, no-wrap
msgid "Desktop Environments"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1015
msgid ""
"This section describes how to install three popular desktop environments on "
"a FreeBSD system. A desktop environment can range from a simple window "
"manager to a complete suite of desktop applications. Over a hundred desktop "
"environments are available in the [.filename]#x11-wm# category of the Ports "
"Collection."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1017
#, no-wrap
msgid "GNOME"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1023
msgid ""
"GNOME is a user-friendly desktop environment. It includes a panel for "
"starting applications and displaying status, a desktop, a set of tools and "
"applications, and a set of conventions that make it easy for applications to "
"cooperate and be consistent with each other. More information regarding "
"GNOME on FreeBSD can be found at https://www.FreeBSD.org/gnome[https://www."
"FreeBSD.org/gnome]. That web site contains additional documentation about "
"installing, configuring, and managing GNOME on FreeBSD."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1025
msgid "This desktop environment can be installed from a package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1029
#, no-wrap
msgid "# pkg install gnome\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1033
msgid ""
"To instead build GNOME from ports, use the following command. GNOME is a "
"large application and will take some time to compile, even on a fast "
"computer."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1038
#, no-wrap
msgid ""
"# cd /usr/ports/x11/gnome\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1042
msgid ""
"GNOME requires [.filename]#/proc# to be mounted. Add this line to [."
"filename]#/etc/fstab# to mount this file system automatically during system "
"startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1046
#: documentation/content/en/books/handbook/x11/_index.adoc:1124
#, no-wrap
msgid "proc /proc procfs rw 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1051
msgid ""
"GNOME uses D-Bus for a message bus and hardware abstraction. These "
"applications are automatically installed as dependencies of GNOME. Enable "
"them in [.filename]#/etc/rc.conf# so they will be started when the system "
"boots:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1055
#: documentation/content/en/books/handbook/x11/_index.adoc:1133
#: documentation/content/en/books/handbook/x11/_index.adoc:1200
#, no-wrap
msgid "dbus_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1060
msgid ""
"After installation, configure Xorg to start GNOME. The easiest way to do "
"this is to enable the GNOME Display Manager, GDM, which is installed as part "
"of the GNOME package or port. It can be enabled by adding this line to [."
"filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1064
#, no-wrap
msgid "gdm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1068
msgid ""
"It is often desirable to also start all GNOME services. To achieve this, "
"add a second line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1072
#, no-wrap
msgid "gnome_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1075
msgid "GDM will start automatically when the system boots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1079
msgid ""
"A second method for starting GNOME is to type `startx` from the command-line "
"after configuring [.filename]#~/.xinitrc#. If this file already exists, "
"replace the line that starts the current window manager with one that starts "
"[.filename]#/usr/local/bin/gnome-session#. If this file does not exist, "
"create it with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1083
#, no-wrap
msgid "% echo \"exec /usr/local/bin/gnome-session\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1087
msgid ""
"A third method is to use XDM as the display manager. In this case, create "
"an executable [.filename]#~/.xsession#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1091
#, no-wrap
msgid "% echo \"exec /usr/local/bin/gnome-session\" > ~/.xsession\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1094
#, no-wrap
msgid "KDE"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1100
msgid ""
"KDE is another easy-to-use desktop environment. This desktop provides a "
"suite of applications with a consistent look and feel, a standardized menu "
"and toolbars, keybindings, color-schemes, internationalization, and a "
"centralized, dialog-driven desktop configuration. More information on KDE "
"can be found at http://www.kde.org/[http://www.kde.org/]. For FreeBSD-"
"specific information, consult http://freebsd.kde.org/[http://freebsd.kde."
"org]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1102
msgid "To install the KDE package, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1106
#, no-wrap
msgid "# pkg install x11/kde5\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1111
msgid ""
"To instead build the KDE port, use the following command. Installing the "
"port will provide a menu for selecting which components to install. KDE is "
"a large application and will take some time to compile, even on a fast "
"computer."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1116
#, no-wrap
msgid ""
"# cd /usr/ports/x11/kde5\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1120
msgid ""
"KDE requires [.filename]#/proc# to be mounted. Add this line to [."
"filename]#/etc/fstab# to mount this file system automatically during system "
"startup:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1129
msgid ""
"KDE uses D-Bus for a message bus and hardware abstraction. These "
"applications are automatically installed as dependencies of KDE. Enable "
"them in [.filename]#/etc/rc.conf# so they will be started when the system "
"boots:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1138
msgid ""
"Since KDE Plasma 5, the KDE Display Manager, KDM is no longer developed. A "
"possible replacement is SDDM. To install it, type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1142
#, no-wrap
msgid "# pkg install x11/sddm\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1145
msgid "Add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1149
#, no-wrap
msgid "sddm_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1153
msgid ""
"A second method for launching KDE Plasma is to type `startx` from the "
"command line. For this to work, the following line is needed in [."
"filename]#~/.xinitrc#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1157
#, no-wrap
msgid "exec ck-launch-session startplasma-x11\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1161
msgid ""
"A third method for starting KDE Plasma is through XDM. To do so, create an "
"executable [.filename]#~/.xsession# as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1165
#, no-wrap
msgid "% echo \"exec ck-launch-session startplasma-x11\" > ~/.xsession\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1168
msgid ""
"Once KDE Plasma is started, refer to its built-in help system for more "
"information on how to use its various menus and applications."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1170
#, no-wrap
msgid "Xfce"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1177
msgid ""
"Xfce is a desktop environment based on the GTK+ toolkit used by GNOME. "
"However, it is more lightweight and provides a simple, efficient, easy-to-"
"use desktop. It is fully configurable, has a main panel with menus, "
"applets, and application launchers, provides a file manager and sound "
"manager, and is themeable. Since it is fast, light, and efficient, it is "
"ideal for older or slower machines with memory limitations. More "
"information on Xfce can be found at http://www.xfce.org/[http://www.xfce."
"org]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1179
msgid "To install the Xfce package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1183
#, no-wrap
msgid "# pkg install xfce\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1186
msgid "Alternatively, to build the port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1191
#, no-wrap
msgid ""
"# cd /usr/ports/x11-wm/xfce4\n"
"# make install clean\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1196
msgid ""
"Xfce uses D-Bus for a message bus. This application is automatically "
"installed as dependency of Xfce. Enable it in [.filename]#/etc/rc.conf# so "
"it will be started when the system boots:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1204
msgid ""
"Unlike GNOME or KDE, Xfce does not provide its own login manager. In order "
"to start Xfce from the command line by typing `startx`, first create [."
"filename]#~/.xinitrc# with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1208
#, no-wrap
msgid "% echo \". /usr/local/etc/xdg/xfce4/xinitrc\" > ~/.xinitrc\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1212
msgid ""
"An alternate method is to use XDM. To configure this method, create an "
"executable [.filename]#~/.xsession#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1216
#, no-wrap
msgid "% echo \". /usr/local/etc/xdg/xfce4/xinitrc\" > ~/.xsession\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:1219
#, no-wrap
msgid "Installing Compiz Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1222
msgid ""
"One way to make using a desktop computer more pleasant is with nice 3D "
"effects."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1224
msgid ""
"Installing the Compiz Fusion package is easy, but configuring it requires a "
"few steps that are not described in the port's documentation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1226
#, no-wrap
msgid "Setting up the FreeBSD nVidia Driver"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1231
msgid ""
"Desktop effects can cause quite a load on the graphics card. For an nVidia-"
"based graphics card, the proprietary driver is required for good "
"performance. Users of other graphics cards can skip this section and "
"continue with the [.filename]#xorg.conf# configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1233
msgid ""
"To determine which nVidia driver is needed see the extref:{faq}[FAQ question "
"on the subject, idp59950544]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1235
msgid ""
"Having determined the correct driver to use for your card, installation is "
"as simple as installing any other package."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1237
msgid "For example, to install the latest driver:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1241
#, no-wrap
msgid "# pkg install x11/nvidia-driver\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1245
msgid ""
"The driver will create a kernel module, which needs to be loaded at system "
"startup. Use man:sysrc[8] to load the module at startup:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1249
#, no-wrap
msgid "# sysrc kld_list+=\"nvidia\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1252
msgid ""
"Alternatively, add the following line to [.filename]#/boot/loader.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1256
#, no-wrap
msgid "nvidia_load=\"YES\"\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1264
msgid ""
"To immediately load the kernel module into the running kernel issue a "
"command like `kldload nvidia`. However, it has been noted that some "
"versions of Xorg will not function properly if the driver is not loaded at "
"boot time. After editing [.filename]#/boot/loader.conf#, a reboot is "
"recommended. Improper settings in [.filename]#/boot/loader.conf# can cause "
"the system not to boot properly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1267
msgid ""
"With the kernel module loaded, you normally only need to change a single "
"line in [.filename]#xorg.conf# to enable the proprietary driver:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1269
msgid "Find the following line in [.filename]#/etc/X11/xorg.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1273
#, no-wrap
msgid "Driver \"nv\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1276
msgid "and change it to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1280
#, no-wrap
msgid "Driver \"nvidia\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1284
msgid ""
"Start the GUI as usual, and you should be greeted by the nVidia splash. "
"Everything should work as usual."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1286
#, no-wrap
msgid "Configuring `xorg.conf` for Desktop Effects"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1289
msgid ""
"To enable Compiz Fusion, [.filename]#/etc/X11/xorg.conf# needs to be "
"modified:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1291
msgid "Add the following section to enable composite effects:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1297
#, no-wrap
msgid ""
"Section \"Extensions\"\n"
" Option \"Composite\" \"Enable\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1300
msgid ""
"Locate the \"Screen\" section which should look similar to the one below:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1308
#, no-wrap
msgid ""
"Section \"Screen\"\n"
" Identifier \"Screen0\"\n"
" Device \"Card0\"\n"
" Monitor \"Monitor0\"\n"
" ...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1311
msgid "and add the following two lines (after \"Monitor\" will do):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1316
#, no-wrap
msgid ""
"DefaultDepth 24\n"
"Option \"AddARGBGLXVisuals\" \"True\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1321
msgid ""
"Locate the \"Subsection\" that refers to the screen resolution that you wish "
"to use. For example, if you wish to use 1280x1024, locate the section that "
"follows. If the desired resolution does not appear in any subsection, you "
"may add the relevant entry by hand:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1328
#, no-wrap
msgid ""
"SubSection \"Display\"\n"
" Viewport 0 0\n"
" Modes \"1280x1024\"\n"
"EndSubSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1331
msgid ""
"A color depth of 24 bits is needed for desktop composition, change the above "
"subsection to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1339
#, no-wrap
msgid ""
"SubSection \"Display\"\n"
" Viewport 0 0\n"
" Depth 24\n"
" Modes \"1280x1024\"\n"
"EndSubSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1342
msgid ""
"Finally, confirm that the \"glx\" and \"extmod\" modules are loaded in the "
"\"Module\" section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1349
#, no-wrap
msgid ""
"Section \"Module\"\n"
" Load \"extmod\"\n"
" Load \"glx\"\n"
" ...\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1352
msgid ""
"The preceding can be done automatically with package:x11/nvidia-xconfig[] by "
"running (as root):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1358
#, no-wrap
msgid ""
"# nvidia-xconfig --add-argb-glx-visuals\n"
"# nvidia-xconfig --composite\n"
"# nvidia-xconfig --depth=24\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1361
#, no-wrap
msgid "Installing and Configuring Compiz Fusion"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1364
msgid "Installing Compiz Fusion is as simple as any other package:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1368
#, no-wrap
msgid "# pkg install x11-wm/compiz-fusion\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1371
msgid ""
"When the installation is finished, start your graphic desktop and at a "
"terminal, enter the following commands (as a normal user):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1376
#, no-wrap
msgid ""
"% compiz --replace --sm-disable --ignore-desktop-hints ccp &\n"
"% emerald --replace &\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1380
msgid ""
"Your screen will flicker for a few seconds, as your window manager (e.g., "
"Metacity if you are using GNOME) is replaced by Compiz Fusion. Emerald "
"takes care of the window decorations (i.e., close, minimize, maximize "
"buttons, title bars and so on)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1382
msgid ""
"You may convert this to a trivial script and have it run at startup "
"automatically (e.g., by adding to \"Sessions\" in a GNOME desktop):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1388
#, no-wrap
msgid ""
"#! /bin/sh\n"
"compiz --replace --sm-disable --ignore-desktop-hints ccp &\n"
"emerald --replace &\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1391
msgid ""
"Save this in your home directory as, for example, [.filename]#start-compiz# "
"and make it executable:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1395
#, no-wrap
msgid "% chmod +x ~/start-compiz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1398
msgid ""
"Then use the GUI to add it to [.guimenuitem]#Startup Programs# (located in [."
"guimenuitem]#System#, [.guimenuitem]#Preferences#, [.guimenuitem]#Sessions# "
"on a GNOME desktop)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1400
msgid ""
"To actually select all the desired effects and their settings, execute "
"(again as a normal user) the Compiz Config Settings Manager:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1404
#, no-wrap
msgid "% ccsm\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1409
msgid ""
"In GNOME, this can also be found in the [.guimenuitem]#System#, [."
"guimenuitem]#Preferences# menu."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1412
msgid ""
"If you have selected \"gconf support\" during the build, you will also be "
"able to view these settings using `gconf-editor` under `apps/compiz`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/x11/_index.adoc:1414
#, no-wrap
msgid "Troubleshooting"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1419
msgid ""
"If the mouse does not work, you will need to first configure it before "
"proceeding. In recent Xorg versions, the `InputDevice` sections in [."
"filename]#xorg.conf# are ignored in favor of the autodetected devices. To "
"restore the old behavior, add the following line to the `ServerLayout` or "
"`ServerFlags` section of this file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1423
#, no-wrap
msgid "Option \"AutoAddDevices\" \"false\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1426
msgid ""
"Input devices may then be configured as in previous versions, along with any "
"other options needed (e.g., keyboard layout switching)."
msgstr ""
#. type: delimited block = 5
#: documentation/content/en/books/handbook/x11/_index.adoc:1433
msgid ""
"This section contains partially outdated information. The HAL daemon (hald) "
"is no longer a part of the FreeBSD desktop setup."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1437
msgid ""
"As previously explained the hald daemon will, by default, automatically "
"detect your keyboard. There are chances that your keyboard layout or model "
"will not be correct, desktop environments like GNOME, KDE or Xfce provide "
"tools to configure the keyboard. However, it is possible to set the "
"keyboard properties directly either with the help of the man:setxkbmap[1] "
"utility or with a hald's configuration rule."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1440
msgid ""
"For example if, one wants to use a PC 102 keys keyboard coming with a french "
"layout, we have to create a keyboard configuration file for hald called [."
"filename]#x11-input.fdi# and saved in the [.filename]#/usr/local/etc/hal/fdi/"
"policy# directory. This file should contain the following lines:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1452
#, no-wrap
msgid ""
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<deviceinfo version=\"0.2\">\n"
" <device>\n"
" <match key=\"info.capabilities\" contains=\"input.keyboard\">\n"
"\t <merge key=\"input.x11_options.XkbModel\" type=\"string\">pc102</merge>\n"
"\t <merge key=\"input.x11_options.XkbLayout\" type=\"string\">fr</merge>\n"
" </match>\n"
" </device>\n"
"</deviceinfo>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1455
msgid ""
"If this file already exists, just copy and add to your file the lines "
"regarding the keyboard configuration."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1457
msgid "You will have to reboot your machine to force hald to read this file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1459
msgid ""
"It is possible to do the same configuration from an X terminal or a script "
"with this command line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1463
#, no-wrap
msgid "% setxkbmap -model pc102 -layout fr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1466
msgid ""
"[.filename]#/usr/local/share/X11/xkb/rules/base.lst# lists the various "
"keyboard, layouts and options available."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1471
msgid ""
"The [.filename]#xorg.conf.new# configuration file may now be tuned to "
"taste. Open the file in a text editor such as man:emacs[1] or man:ee[1]. "
"If the monitor is an older or unusual model that does not support "
"autodetection of sync frequencies, those settings can be added to [."
"filename]#xorg.conf.new# under the `\"Monitor\"` section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1481
#, no-wrap
msgid ""
"Section \"Monitor\"\n"
"\tIdentifier \"Monitor0\"\n"
"\tVendorName \"Monitor Vendor\"\n"
"\tModelName \"Monitor Model\"\n"
"\tHorizSync 30-107\n"
"\tVertRefresh 48-120\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1485
msgid ""
"Most monitors support sync frequency autodetection, making manual entry of "
"these values unnecessary. For the few monitors that do not support "
"autodetection, avoid potential damage by only entering values provided by "
"the manufacturer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1489
msgid ""
"X allows DPMS (Energy Star) features to be used with capable monitors. The "
"man:xset[1] program controls the time-outs and can force standby, suspend, "
"or off modes. If you wish to enable DPMS features for your monitor, you "
"must add the following line to the monitor section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1493
#, no-wrap
msgid "Option \"DPMS\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1497
msgid ""
"While the [.filename]#xorg.conf.new# configuration file is still open in an "
"editor, select the default resolution and color depth desired. This is "
"defined in the `\"Screen\"` section:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1511
#, no-wrap
msgid ""
"Section \"Screen\"\n"
"\tIdentifier \"Screen0\"\n"
"\tDevice \"Card0\"\n"
"\tMonitor \"Monitor0\"\n"
"\tDefaultDepth 24\n"
"\tSubSection \"Display\"\n"
"\t\tViewport 0 0\n"
"\t\tDepth 24\n"
"\t\tModes \"1024x768\"\n"
"\tEndSubSection\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1519
msgid ""
"The `DefaultDepth` keyword describes the color depth to run at by default. "
"This can be overridden with the `-depth` command line switch to man:"
"Xorg[1]. The `Modes` keyword describes the resolution to run at for the "
"given color depth. Note that only VESA standard modes are supported as "
"defined by the target system's graphics hardware. In the example above, the "
"default color depth is twenty-four bits per pixel. At this color depth, the "
"accepted resolution is 1024 by 768 pixels."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1521
msgid ""
"Finally, write the configuration file and test it using the test mode given "
"above."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1527
msgid ""
"One of the tools available to assist you during troubleshooting process are "
"the Xorg log files, which contain information on each device that the Xorg "
"server attaches to. Xorg log file names are in the format of [.filename]#/"
"var/log/Xorg.0.log#. The exact name of the log can vary from [."
"filename]#Xorg.0.log# to [.filename]#Xorg.8.log# and so forth."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1531
msgid ""
"If all is well, the configuration file needs to be installed in a common "
"location where man:Xorg[1] can find it. This is typically [.filename]#/etc/"
"X11/xorg.conf# or [.filename]#/usr/local/etc/X11/xorg.conf#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1535
#, no-wrap
msgid "# cp xorg.conf.new /etc/X11/xorg.conf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1540
msgid ""
"The Xorg configuration process is now complete. Xorg may be now started "
"with the man:startx[1] utility. The Xorg server may also be started with "
"the use of man:xdm[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1541
#, no-wrap
msgid "Configuration with Intel(R) `i810` Graphics Chipsets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1545
msgid ""
"Configuration with Intel(R) i810 integrated chipsets requires the [."
"filename]#agpgart# AGP programming interface for Xorg to drive the card. "
"See the man:agp[4] driver manual page for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1549
msgid ""
"This will allow configuration of the hardware as any other graphics board. "
"Note on systems without the man:agp[4] driver compiled in the kernel, trying "
"to load the module with man:kldload[8] will not work. This driver has to be "
"in the kernel at boot time through being compiled in or using [.filename]#/"
"boot/loader.conf#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1550
#, no-wrap
msgid "Adding a Widescreen Flatpanel to the Mix"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1555
msgid ""
"This section assumes a bit of advanced configuration knowledge. If attempts "
"to use the standard configuration tools above have not resulted in a working "
"configuration, there is information enough in the log files to be of use in "
"getting the setup working. Use of a text editor will be necessary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1558
msgid ""
"Current widescreen (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, et.al.) formats "
"support 16:10 and 10:9 formats or aspect ratios that can be problematic. "
"Examples of some common screen resolutions for 16:10 aspect ratios are:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1560
msgid "2560x1600"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1561
msgid "1920x1200"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1562
msgid "1680x1050"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1563
msgid "1440x900"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1564
msgid "1280x800"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1566
msgid ""
"At some point, it will be as easy as adding one of these resolutions as a "
"possible `Mode` in the `Section \"Screen\"` as such:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1580
#, no-wrap
msgid ""
"Section \"Screen\"\n"
"Identifier \"Screen0\"\n"
"Device \"Card0\"\n"
"Monitor \"Monitor0\"\n"
"DefaultDepth 24\n"
"SubSection \"Display\"\n"
"\tViewport 0 0\n"
"\tDepth 24\n"
"\tModes \"1680x1050\"\n"
"EndSubSection\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1583
msgid ""
"Xorg is smart enough to pull the resolution information from the widescreen "
"via I2C/DDC information so it knows what the monitor can handle as far as "
"frequencies and resolutions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1587
msgid ""
"If those `ModeLines` do not exist in the drivers, one might need to give "
"Xorg a little hint. Using [.filename]#/var/log/Xorg.0.log# one can extract "
"enough information to manually create a `ModeLine` that will work. Simply "
"look for information resembling this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1595
#, no-wrap
msgid ""
"(II) MGA(0): Supported additional Video Mode:\n"
"(II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm\n"
"(II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0\n"
"(II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0\n"
"(II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1599
msgid ""
"This information is called EDID information. Creating a `ModeLine` from "
"this is just a matter of putting the numbers in the correct order:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1603
#, no-wrap
msgid "ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1606
msgid ""
"So that the `ModeLine` in `Section \"Monitor\"` for this example would look "
"like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1616
#, no-wrap
msgid ""
"Section \"Monitor\"\n"
"Identifier \"Monitor1\"\n"
"VendorName \"Bigname\"\n"
"ModelName \"BestModel\"\n"
"ModeLine \"1680x1050\" 146.2 1680 1784 1960 2240 1050 1053 1059 1089\n"
"Option \"DPMS\"\n"
"EndSection\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1619
msgid ""
"Now having completed these simple editing steps, X should start on your new "
"widescreen monitor."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/x11/_index.adoc:1621
#, no-wrap
msgid "Troubleshooting Compiz Fusion"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:1623
#, no-wrap
msgid "I have installed Compiz Fusion, and after running the commands you mention, my windows are left without title bars and buttons. What is wrong?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1627
msgid ""
"You are probably missing a setting in [.filename]#/etc/X11/xorg.conf#. "
"Review this file carefully and check especially the `DefaultDepth` and "
"`AddARGBGLXVisuals` directives."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/x11/_index.adoc:1628
#, no-wrap
msgid "When I run the command to start Compiz Fusion, the X server crashes and I am back at the console. What is wrong?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/x11/_index.adoc:1632
msgid ""
"If you check [.filename]#/var/log/Xorg.0.log#, you will probably find error "
"messages during the X startup. The most common would be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/x11/_index.adoc:1640
#, no-wrap
msgid ""
"(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X\n"
"(EE) NVIDIA(0): log file that the GLX module has been loaded in your X\n"
"(EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If\n"
"(EE) NVIDIA(0): you continue to encounter problems, Please try\n"
"(EE) NVIDIA(0): reinstalling the NVIDIA driver.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1644
+#: documentation/content/en/books/handbook/x11/_index.adoc:1643
msgid ""
"This is usually the case when you upgrade Xorg. You will need to reinstall "
"the package:x11/nvidia-driver[] package so glx is built again."
msgstr ""
-
-#. type: Title ==
-#: documentation/content/en/books/handbook/x11/_index.adoc:1646
-#, no-wrap
-msgid "Wayland on FreeBSD"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1651
-msgid ""
-"Wayland is a new software for supporting graphical user interfaces, but it "
-"differs from Xorg in several important ways. First, Wayland is only a "
-"protocol that acts as an intermediary between clients using a different "
-"mechanism which removes the dependency on an X server. Xorg includes both "
-"the X11 protocol, used to run remote displays and the X server will accept "
-"connections and display windows. Under Wayland, the compositor or window "
-"manager provides the display server instead of a traditional X server."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1653
-msgid ""
-"Since Wayland is not an X server, traditional X screen connections will need "
-"to utilize other methods such as VNC or RDP for remote desktop management. "
-"Second, Wayland can manage composite communications between clients and a "
-"compositor as a separate entity which does not need to support the X "
-"protocols."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1657
-msgid ""
-"Wayland is relatively new, and not all software has been updated to run "
-"natively without `Xwayland` support. Because Wayland does not provide the X "
-"server, and expects compositors to provide that support, X11 window managers "
-"that do not yet support Wayland will require that `Xwayland` is not started "
-"with the `-rootless` parameter. The `-rootless` parameter, when removed, "
-"will restore X11 window manager support."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1662
-msgid ""
-"The current NVidia driver should work with most wl-roots compositors, but it "
-"may be a little unstable and not support all features at this time. "
-"Volunteers to help work on the NVidia DRM are requested."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1666
-msgid ""
-"Currently, a lot of software will function with minimal issues on Wayland, "
-"including Firefox. And a few desktops are also available, such as the "
-"Compiz Fusion replacement, known as Wayfire, and the i3 window manager "
-"replacement, Sway."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1673
-msgid ""
-"As of May, 2021, plasma5-kwin does support Wayland on FreeBSD. To use "
-"Plasma under Wayland, use the `startplasma-wayland` parameter to `ck-launch-"
-"session` and tie in dbus with: `ck-launch-session dbus-run-session "
-"startplasma-wayland` to get it working."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1679
-msgid ""
-"For compositors, a kernel supporting the man:evdev[4] driver must exist to "
-"utilize the keybinding functionality. This is built into the [."
-"filename]#GENERIC# kernel by default; however, if it has been customized and "
-"man:evdev[4] support was stripped out, the man:evdev[4] module will need to "
-"be loaded. In addition, users of `Wayland` will need to be members of the "
-"`video` group. To quickly make this change, use the `pw` command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1683
-#, no-wrap
-msgid "pw groupmod video -m user\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1690
-msgid ""
-"Installing Wayland is simple; there is not a great deal of configuration for "
-"the protocol itself. Most of the composition will depend on the chosen "
-"compositor. By installing `seatd` now, a step is skipped as part of the "
-"compositor installation and configuration as `seatd` is needed to provide "
-"non-root access to certain devices. All of the compositors described here "
-"should work with package:graphics/drm-kmod[] open source drivers; however, "
-"the NVidia graphics cards may have issues when using the proprietary "
-"drivers. Begin by installing the following packages:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1694
-#, no-wrap
-msgid "# pkg install wayland seatd\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1699
-msgid ""
-"Once the protocol and supporting packages have been installed, a compositor "
-"must create the user interface. Several compositors will be covered in the "
-"following sections. All compositors using Wayland will need a runtime "
-"directory defined in the environment, which can be achieved with the "
-"following command in the bourne shell:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1703
-#, no-wrap
-msgid "% export XDG_RUNTIME_DIR=/var/run/user/`id -u`\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1708
-msgid ""
-"It is important to note that most compositors will search the "
-"XDG_RUNTIME_DIR directory for the configuration files. In the examples "
-"included here, a parameter will be used to specify a configuration file in [."
-"filename]#~/.config# to keep temporary files and configuration files "
-"separate. It is recommended that an alias be configured for each compositor "
-"to load the designated configuration file."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1716
-msgid ""
-"It has been reported that ZFS users may experience issues with some Wayland "
-"clients because they need access to `posix_fallocate()` in the runtime "
-"directory. While the author could not reproduce this issue on their ZFS "
-"system, a recommended workaround is not to use ZFS for the runtime directory "
-"and instead use `tmpfs` for the [.filename]#/var/run# directory. In this "
-"case, the `tmpfs` file system is used for [.filename]#/var/run# and mounted "
-"through the command `mount -t tmpfs tmpfs /var/run` command and then make "
-"this change persist across reboots through [.filename]#/etc/fstab#. The "
-"XDG_RUNTIME_DIR environment variable could be configured to use [.filename]#/"
-"var/run/user/$UID# and avoid potential pitfalls with ZFS. Consider that "
-"scenario when reviewing the configuration examples in the following sections."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1721
-msgid ""
-"The seatd daemon helps manage access to shared system devices for non-root "
-"users in compositors; this includes graphics cards. For traditional X11 "
-"managers, `seatd` is not needed, such as both Plasma and GNOME, but for the "
-"Wayland compositors discussed here, it will need enabled on the system and "
-"be running before starting a compositor environment. To enable and start "
-"the `seatd` daemon now, and on system initialization:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1726
-#, no-wrap
-msgid ""
-"# sysrc seatd_enable=\"YES\"\n"
-"# service seatd start\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1730
-msgid ""
-"Afterward, a compositor, which is similar to an X11 desktop, will need to be "
-"installed for the GUI environment. Three are discussed here, including "
-"basic configuration options, setting up a screen lock, and recommendations "
-"for more information."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:1731
-#, no-wrap
-msgid "The Wayfire Compositor"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1736
-msgid ""
-"Wayfire is a compositor that aims to be lightweight and customizable. "
-"Several features are available, and it brings back several elements from the "
-"previously released Compiz Fusion desktop. All of the parts look beautiful "
-"on modern hardware. To get Wayfire up and running, begin by installing the "
-"required packages:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1740
-#, no-wrap
-msgid "# pkg install wayfire wf-shell alacritty swaylock-effects swayidle wlogout kanshi mako wlsunset\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1746
-msgid ""
-"The `alacritty` package provides a terminal emulator. Still, it is not "
-"completely required as other terminal emulators such as `kitty`, and XFCE-4 "
-"`Terminal` have been tested and verified to work under the Wayfire "
-"compositor. Wayfire configuration is relatively simple; it uses a file that "
-"should be reviewed for any customizations. To begin, copy the example file "
-"over to the runtime environment configuration directory and then edit the "
-"file:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1751
-#, no-wrap
-msgid ""
-"% mkdir ~/.config/wayfire\n"
-"% cp /usr/local/share/examples/wayfire/wayfire.ini ~/.config/wayfire\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1756
-msgid ""
-"The defaults for most users should be fine. Within the configuration file, "
-"items like the famous `cube` are pre-configured, and there are instructions "
-"to help with the available settings. A few primary settings of note include:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1764
-#, no-wrap
-msgid ""
-"[output]\n"
-"mode = 1920x1080@60000\n"
-"position = 0,0\n"
-"transform = normal\n"
-"scale = 1.000000\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1772
-msgid ""
-"In this example, from the configuration file, the screen's output should be "
-"the listed mode at the listed hertz. For example, the mode should be set to "
-"`widthxheight@refresh_rate`. The position places the output at a specific "
-"pixel location specified. The default should be fine for most users. "
-"Finally, transform sets a background transform, and scale will scale the "
-"output to the specified scale factor. The defaults for these options are "
-"generally acceptable; for more information, see the documentation."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1777
-msgid ""
-"As mentioned, Wayland is new, and not all applications work with the "
-"protocol yet. At this time, `sddm` does not appear to support starting and "
-"managing compositors in Wayland. The `swaylock` utility has been used "
-"instead in these examples. The configuration file contains options to run "
-"`swayidle` and `swaylock` for idle and locking of the screen. This option "
-"to define the action to take when the system is idle is listed as:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1781
-#, no-wrap
-msgid "idle = swaylock\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1784
-msgid "And the lock timeout is configured using the following lines:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1791
-#, no-wrap
-msgid ""
-"[idle]\n"
-"toggle = <super> KEY_Z\n"
-"screensaver_timeout = 300\n"
-"dpms_timeout = 600\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1794
-msgid ""
-"The first option will lock the screen after 300 seconds, and after another "
-"300, the screen will shut off through the `dpms_timeout` option."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1802
-msgid ""
-"One final thing to note is the <super> key. Most of the configuration "
-"mentions this key, and it is the traditional `Windows` key on the keyboard. "
-"Most keyboards have this super key available; however, it should be remapped "
-"within this configuration file if it is not available. For example, to lock "
-"the screen, press and hold the super key, the kbd:[shift] key, and press the "
-"kbd:[escape] key. nless the mappings have changed, this will execute the "
-"swaylock application. The default configuration for `swaylock` will show a "
-"grey screen; however, the application is highly customizable and well "
-"documented. In addition, since the swaylock-effects is the version that was "
-"installed, there are several options available such as the blur effect, "
-"which can be seen using the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1806
-#, no-wrap
-msgid "% swaylock --effect-blur 7x5\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1812
-msgid ""
-"There is also the `--clock` parameter which will display a clock with the "
-"date and time on the lock screen. When package:x11/swaylock-effects[] was "
-"installed, a default [.filename]#pam.d# configuration was included. It "
-"provides the default options that should be fine for most users. More "
-"advanced options are available; see the PAM documentation for more "
-"information."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1815
-msgid ""
-"At this point, it is time to test Wayfire and see if it can start up on the "
-"system. Just type the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1819
-#, no-wrap
-msgid "% wayfire -c ~/.config/wayfire/wayfire.ini\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1826
-msgid ""
-"The compositor should now start and display a background image along with a "
-"menu bar at the top of the screen. Wayfire will attempt to list installed "
-"compatible applications for the desktop and present them in this drop-down "
-"menu; for example, if the XFCE-4 file manager is installed, it will show up "
-"in this drop-down menu. If a specific application is compatible and "
-"valuable enough for a keyboard shortcut, it may be mapped to a keyboard "
-"sequence using the [.filename]#wayfire.ini# configuration file. Wayfire "
-"also has a configuration tool named Wayfire Config Manager. It is located "
-"in the drop-down menu bar but may also be started through a terminal by "
-"issuing the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1830
-#, no-wrap
-msgid "% wcm\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1834
-msgid ""
-"Various Wayfire configuration options, including the composite special "
-"effects, maybe enabled, disabled, or configured through this application. "
-"In addition, for a more user-friendly experience, a background manager, "
-"panel, and docking application may be enabled in the configuration file:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1840
-#, no-wrap
-msgid ""
-"panel = wf-panel\n"
-"dock = wf-dock\n"
-"background = wf-background\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1846
-msgid ""
-"Changes made through `wcm` will overwrite custom changes in the [."
-"filename]#wayfire.ini# configuration file. The [.filename]#wayfire.ini# "
-"file is highly recommended to be backed up so any essential changes may be "
-"restored."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1849
-msgid ""
-"Finally, the default launcher listed in the [.filename]#wayfire.ini# is "
-"package:x11/wf-shell[] which may be replaced with other panels if desired by "
-"the user."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:1850
-#, no-wrap
-msgid "The Hikari Compositor"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1860
-msgid ""
-"The Hikari compositor uses several concepts centered around productivity, "
-"such as sheets, workspaces, and more. In that way, it resembles a tiling "
-"window manager. Breaking this down, the compositor starts with a single "
-"workspace, which is similar to virtual desktops. Hikari uses a single "
-"workspace or virtual desktop for user interaction. The workspace is made up "
-"of several views, which are the working windows in the compositor grouped as "
-"either sheets or groups. Both sheets and groups are made up of a collection "
-"of views; again, the windows that are grouped together. When switching "
-"between sheets or groups, the active sheet or group will become known "
-"collectively as the workspace. The manual page will break this down into "
-"more information on the functions of each but for this document, just "
-"consider a single workspace utilizing a single sheet. Hikari installation "
-"will comprise of a single package, package:x11-wm/hikari[], and a terminal "
-"emulator `alacritty`:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1864
-#, no-wrap
-msgid "# pkg install hikari alacritty\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1869
-msgid ""
-"Other shells, such as `kitty` or the Plasma `Terminal`, will function under "
-"Wayland. Users should experiment with their favorite terminal editor to "
-"validate compatibility."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1874
-msgid ""
-"Hikari uses a configuration file, [.filename]#hikari.conf#, which could "
-"either be placed in the XDG_RUNTIME_DIR or specified on startup using the `-"
-"c` parameter. An autostart configuration file is not required but may make "
-"the migration to this compositor a little easier. Beginning the "
-"configuration is to create the Hikari configuration directory and copy over "
-"the configuration file for editing:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1879
-#, no-wrap
-msgid ""
-"% mkdir ~/.config/hikari\n"
-"% cp /usr/local/etc/hikari/hikari.conf ~/.config/hikari\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1885
-msgid ""
-"The configuration is broken out into various stanzas such as ui, outputs, "
-"layouts, and more. For most users, the defaults will function fine; "
-"however, some important changes should be made. For example, the $TERMINAL "
-"variable is normally not set within the user's environment. Changing this "
-"variable or altering the [.filename]#hikari.conf# file to read:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1889
-#, no-wrap
-msgid "terminal = \"/usr/local/bin/alacritty\"\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1897
-msgid ""
-"Will launch the `alacritty` terminal using the bound key press. While going "
-"through the configuration file, it should be noted that the capital letters "
-"are used to map keys out for the user. For example, the kbd:[L] key for "
-"starting the terminal kbd:[L+Return] is actually the previously discussed "
-"super key or Windows logo key. Therefore, holding the kbd:[L/super/Windows] "
-"key and pressing kbd:[Enter] will open the specified terminal emulator with "
-"the default configuration. Mapping other keys to applications require an "
-"action definition to be created. For this, the action item should be listed "
-"in the actions stanza, for example:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1904
-#, no-wrap
-msgid ""
-"actions {\n"
-" terminal = \"/usr/local/bin/alacritty\"\n"
-" browser = \"/usr/local/bin/firefox\"\n"
-"}\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1907
-msgid ""
-"Then an action may be mapped under the keyboard stanza, which is defined "
-"within the bindings stanza:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1916
-#, no-wrap
-msgid ""
-"bindings {\n"
-" keyboard {\n"
-"SNIP\n"
-" \"L+Return\" = action-terminal\n"
-" \"L+b\" = action-browser\n"
-"SNIP\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1922
-msgid ""
-"After Hikari is restarted, holding the Windows logo button and pressing the "
-"kbd:[b] key on the keyboard will start the web browser. The compositor does "
-"not have a menu bar, and it is recommended the user set up, at minimal, a "
-"terminal emulator before migration. The manual page contains a great deal "
-"of documentation it should be read before performing a full migration. "
-"Another positive aspect about Hikari is that, while migrating to the "
-"compositor, Hikari can be started in the Plasma and GNOME desktop "
-"environments, allowing for a test-drive before completely migrating."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1929
-msgid ""
-"Locking the screen in Hikari is easy because a default [.filename]#pam.d# "
-"configuration file and unlock utility are bundled with the package. The key "
-"binding for locking the screen is kbd:[L] (Windows logo key)+ kbd:[Shift] + "
-"kbd:[Backspace]. It should be noted that all views not marked public will "
-"be hidden. These views will never accept input when locked but beware of "
-"sensitive information being visible. For some users, it may be easier to "
-"migrate to a different screen locking utility such as swaylock-effects, "
-"discussed in this section. To start Hikari, use the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1933
-#, no-wrap
-msgid "% hikari -c ~/.config/hikari/hikari.conf\n"
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:1935
-#, no-wrap
-msgid "The Sway Compositor"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1941
-msgid ""
-"The Sway compositor is a tiling compositor that attempts to replace the i3 "
-"windows manager. It should work with the user's current i3 configuration; "
-"however, new features may require some additional setup. In the forthcoming "
-"examples, a fresh installation without migrating any i3 configuration will "
-"be assumed. To install Sway and valuable components, issue the following "
-"command as the root user:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1945
-#, no-wrap
-msgid "# pkg install sway swayidle swaylock-effects alacritty dmenu-wayland dmenu\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1948
-msgid ""
-"For a basic configuration file, issue the following commands and then edit "
-"the configuration file after it is copied:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1953
-#, no-wrap
-msgid ""
-"% mkdir ~/.config/sway\n"
-"% cp /usr/local/etc/sway/config ~/.config/sway\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1957
-msgid ""
-"The base configuration file has many defaults, which will be fine for most "
-"users. Several important changes should be made like the following:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1973
-#, no-wrap
-msgid ""
-"# Logo key. Use Mod1 for Alt.\n"
-"input * xkb_rules evdev\n"
-"set $mod Mod4\n"
-"# Your preferred terminal emulator\n"
-"set $term alacritty\n"
-"set $lock swaylock -f -c 000000\n"
-"output \"My Workstation\" mode 1366x786@60Hz position 1366 0\n"
-"output * bg ~/wallpapers/mywallpaper.png stretch\n"
-"### Idle configuration\n"
-"exec swayidle -w \\\n"
-" timeout 300 'swaylock -f -c 000000' \\\n"
-" timeout 600 'swaymsg \"output * dpms off\"' resume 'swaymsg \"output * dpms on\"' \\\n"
-" before-sleep 'swaylock -f -c 000000'\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1983
-msgid ""
-"In the previous example, the `xkb` rules for man:evdev[4] events are loaded, "
-"and the $mod key is set to the Windows logo key for the key bindings. Next, "
-"the terminal emulator was set to be `alacritty`, and a screen lock command "
-"was defined; more on this later. The output keyword, the mode, the "
-"position, a background wallpaper, and Sway is also told to stretch this "
-"wallpaper to fill out the screen. Finally, `swaylock` is set to daemonize "
-"and lock the screen after a timeout of 300 seconds, placing the screen or "
-"monitor into sleep mode after 600 seconds. The locked background color of "
-"000000, which is black, is also defined here. Using swaylock-effects, a "
-"clock may also be displayed with the `--clock` parameter. See the manual "
-"page for more options. The man:sway-output[5] manual page should also be "
-"reviewed; it includes a great deal of information on customing the output "
-"options available."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:1991
-msgid ""
-"While in Sway, to bring up a menu of applications, hold the Windows logo key "
-"(mod) and press the kbd:[d] key. The menu may be navigated using the arrow "
-"keys on the keyboard. There is also a method to manipulate the layout of "
-"the bar and add a tray; read the man:sway-bar[5] manual page for more "
-"information. The default configuration adds a date and time to the upper "
-"right-hand corner. See the `Bar` stanza in the configuration file for an "
-"example. By default, the configuration does not include locking the screen "
-"outside of the example above, enabling a lockout timer. Creating a lock key "
-"binding requires the following line to the `Key bindings` section:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:1996
-#, no-wrap
-msgid ""
-"# Lock the screen manually\n"
-"bindsym $mod+Shift+Return exec $lock\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2002
-msgid ""
-"Now the screen may be locked using the combination of holding the Windows "
-"logo key, pressing and holding shift, and finally pressing return. When "
-"Sway is installed, whether from a package or the FreeBSD Ports Collection, a "
-"default file for [.filename]#pam.d# was installed. The default "
-"configuration should be acceptable for most users, but more advanced options "
-"are available. Read through the PAM documentation for more information."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2008
-msgid ""
-"Finally, to exit Sway and return to the shell, hold the Windows logo key, "
-"the shift key, and press the kbd:[e] key. A prompt will be displayed with "
-"an option to exit Sway. During migration, Sway can be started through a "
-"terminal emulator on an X11 desktop such as Plasma. This makes testing "
-"different changes and key bindings a little easier prior to fully migrating "
-"to this compositor. To start Sway, issue the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2012
-#, no-wrap
-msgid "% sway -c ~/.config/sway/config\n"
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:2014
-#, no-wrap
-msgid "Using Xwayland"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2018
-msgid ""
-"When installing Wayland, the `Xwayland` binary should have been installed "
-"unless Wayland was built without X11 support. If the [.filename]#/usr/local/"
-"bin/Xwayland# file does not exist, install it using the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2022
-#, no-wrap
-msgid "# pkg install xwayland-devel\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2028
-msgid ""
-"The development version of Xwayland is recommended and was most likely "
-"installed with the Wayland package. Each compositor has a method of "
-"enabling or disabling this feature."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2032
-msgid ""
-"Once `Xwayland` has been installed, configure it within the chosen "
-"compositor. For Wayfire, the following line is required in the [."
-"filename]#wayfire.ini# file:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2036
-#, no-wrap
-msgid "xwayland = true\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2040
-msgid ""
-"For the Sway compositor, `Xwayland` should be enabled by default. Even so, "
-"it is recommened to manually add a configuration line in the [.filename]#~/."
-"config/sway/config# like the following:"
-msgstr ""
-
-#. type: delimited block . 5
-#: documentation/content/en/books/handbook/x11/_index.adoc:2044
-#, no-wrap
-msgid "xwayland enable\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2049
-msgid ""
-"Finally, for Hikari, no changes are needed. Support for `Xwayland` is build "
-"in by default. To disable that support, rebuild the package from the ports "
-"collection and disable Xwayland support at that time."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2053
-msgid ""
-"After these changes are made, start the compositor at the command line and "
-"execute a terminal from the key bindings. Within this terminal, issue the "
-"`env` command and search for the `DISPLAY` variables. If the compositor was "
-"able to properly start the Xwayland X server, these environment variables "
-"should look similar to the following:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2057
-#: documentation/content/en/books/handbook/x11/_index.adoc:2087
-#, no-wrap
-msgid "% env | grep DISPLAY\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2063
-#, no-wrap
-msgid ""
-"WAYLAND_DISPLAY=wayland-1\n"
-"DISPLAY=:0\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2069
-msgid ""
-"In this output, there is a default Wayland display and a display set for the "
-"Xwayland server. Another method to verify that `Xwayland` is functioning "
-"properly is to use install and test the small package:[x11/eyes] and check "
-"the output. If the `xeyes` application starts and the eyes follow the mouse "
-"pointer, Xwayland is functioning properly. If an error such as the "
-"following is displayed, something happened during the `Xwayland` "
-"intitialization and it may need reinstalled:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2073
-#, no-wrap
-msgid "Error: Cannot open display wayland-0\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2079
-msgid ""
-"A security feature of Wayland is that, without running an X server, there is "
-"not another network listener. Once `Xwayland` is enabled, this security "
-"feature is no longer applicable to the system."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2083
-msgid ""
-"For some compositors, such as Wayfire, `Xwayland` may not start properly. "
-"As such, `env` will show the following information for the `DISPLAY` "
-"environment variables:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2093
-#, no-wrap
-msgid ""
-"DISPLAY=wayland-1\n"
-"WAYLAND_DISPLAY=wayland-1\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2098
-msgid ""
-"Even though `Xwayfire` was installed and configured, X11 applications will "
-"not start giving a display issue. To work around this, verify that there is "
-"already an instance of `Xwayland` using a UNIX socket through these two "
-"methods. First, check the output from `sockstat` and search for X11-unix:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2102
-#, no-wrap
-msgid "% sockstat | grep x11\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2105
-msgid "There should be something similar to the following information:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2113
-#, no-wrap
-msgid ""
-"trhodes Xwayland 2734 8 stream /tmp/.X11-unix/X0\n"
-"trhodes Xwayland 2734 9 stream /tmp/.X11-unix/X0\n"
-"trhodes Xwayland 2734 10 stream /tmp/.X11-unix/X0\n"
-"trhodes Xwayland 2734 27 stream /tmp/.X11-unix/X0_\n"
-"trhodes Xwayland 2734 28 stream /tmp/.X11-unix/X0\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2117
-msgid ""
-"This suggests the existence of an X11 socket. This can be further verified "
-"by attempting to execute `Xwayland` manually within a terminal emulator "
-"running under the compositor:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2121
-#, no-wrap
-msgid "% Xwayland\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2124
-msgid ""
-"If an X11 socket is already available, the following error should be "
-"presented to the user:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2133
-#, no-wrap
-msgid ""
-"(EE)\n"
-"Fatal server error:\n"
-"(EE) Server is already active for display 0\n"
-"\tIf this server is no longer running, remove /tmp/.X0-lock\n"
-"\tand start again.\n"
-"(EE)\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2137
-msgid ""
-"Since there is an active X display available using display zero, the "
-"environment variable was just set improperly, to fix this, change the "
-"`DISPLAY` environment variable to `:0` and attempt to execute the "
-"application again. The following example uses package:mail/claws-mail[] as "
-"the application which needs the `Xwayland` service:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2141
-#, no-wrap
-msgid "export DISPLAY=:0\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2144
-msgid ""
-"After this change, the package:mail/claws-mail[] application should now "
-"start using `Xwayland` and function as expected."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:2145
-#, no-wrap
-msgid "Remote Desktop Using VNC"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2151
-msgid ""
-"Earlier in this document it was noted that Wayland does not provide the same "
-"X server style access as Xorg provides. Instead, users are free to pick and "
-"choose a remote desktop protocol such as RDP or VNC. The FreeBSD Ports "
-"collection includes the `wayvnc`, which will support wlroots based "
-"compositors such as the ones discussed here. This application may be "
-"installed using:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2155
-#, no-wrap
-msgid "# pkg install wayvnc\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2159
-msgid ""
-"Unlike some other packages, `wayvnc` does not come with a configuration "
-"file. Thankfully, the manual page documents the important options and they "
-"may be extrapolated into a simple configuration file:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2168
-#, no-wrap
-msgid ""
-"address=0.0.0.0\n"
-"enable_auth=true\n"
-"username=username\n"
-"password=password\n"
-"private_key_file=/path/to/key.pem\n"
-"certificate_file=/path/to/cert.pem\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2174
-msgid ""
-"The key files will need to be generated, and it is highly recommended they "
-"be used for increased security of the connection. When invoked, wayvnc will "
-"search for the configuration file in [.filename]#~/.config/wayvnc/config#. "
-"This could be overwritten using the `-C configuration_file` option when "
-"starting the server. Thus, to start the `wayvnc` server, issue the "
-"following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2178
-#, no-wrap
-msgid "% wayvnc -C ~/.config/wayvnc/config\n"
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2185
-msgid ""
-"At the time of this writing, there is no rc.d script to start `wayvnc` on "
-"system initialization. If that functionality is desired, a local startup "
-"file will need to be created. This is probably a feature request for the "
-"port maintainer."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:2187
-#, no-wrap
-msgid "Wayland Login Manager"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2191
-msgid ""
-"While several login managers exist and are slowly migrating to Wayland, one "
-"option is the package:x11/ly[] text user interface (TUI) manager. Needing "
-"minimal configuration, `ly` will start Sway, Wayfire, and others by "
-"presenting a login window on system initialization. To install `ly`, issue "
-"the following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2195
-#, no-wrap
-msgid "# pkg install ly\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2198
-msgid ""
-"There will be some configuration hints presented, the import steps are to "
-"add the following lines to [.filename]#/etc/gettytab#:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2204
-#, no-wrap
-msgid ""
-"Ly:\\\n"
-" :lo=/usr/local/bin/ly:\\\n"
-" :al=root:\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2207
-msgid ""
-"And then modify the ttyv1 line in [.filename]#/etc/ttys# to match the "
-"following line:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2211
-#, no-wrap
-msgid "ttyv1 \"/usr/libexec/getty Ly\" xterm onifexists secure\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2216
-msgid ""
-"After a system reboot, a login should appear. To configure specific "
-"settings, such as language and edit [.filename]#/usr/local/etc/ly/config."
-"ini#. At minimal, this file should have the designated tty that was "
-"previously specified in [.filename]#/etc/ttys#."
-msgstr ""
-
-#. type: delimited block = 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2220
-msgid ""
-"If setting ttyv0 up as the login terminal, it may be required to press the "
-"kbd:[alt] and kbd:[F1] keys to properly see the login window."
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2223
-msgid ""
-"When the login window appears, using the left and right arrows will swap "
-"through different, supported, window managers."
-msgstr ""
-
-#. type: Title ===
-#: documentation/content/en/books/handbook/x11/_index.adoc:2225
-#, no-wrap
-msgid "Useful Utilities"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2231
-msgid ""
-"One useful Wayland utility which all compositors can make use of is the "
-"waybar. While Wayfire does come with a launch menu, an easy-to-use and fast "
-"taskbar is a good accessory for any compositor or desktop manager. A "
-"Wayland compatible taskbar that is fast and easy to configure is waybar. To "
-"install the package and a supporting audio control utility, issue the "
-"following command:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2235
-#, no-wrap
-msgid "# pkg install pavucontrol waybar\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2238
-msgid ""
-"To create the configuration directory and copy over a default configuration "
-"file, execute the following commands:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2243
-#, no-wrap
-msgid ""
-"% mkdir ~/.config/waybar\n"
-"% cp /usr/local/etc/xdg/waybar/config ~/.config/waybar\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2247
-msgid ""
-"The `lavalauncher` utility provides a launch bar for various applications. "
-"There is no example configuration file provided with the package, so the "
-"following actions must be taken:"
-msgstr ""
-
-#. type: delimited block - 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2251
-#, no-wrap
-msgid "mkdir ~/.config/lavalauncher\n"
-msgstr ""
-
-#. type: Plain text
-#: documentation/content/en/books/handbook/x11/_index.adoc:2254
-msgid ""
-"An example configuration file that only includes Firefox, and is placed on "
-"the right, is below:"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2260
-#, no-wrap
-msgid ""
-"global-settings {\n"
-"\twatch-config-file = true;\n"
-"}\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2265
-#, no-wrap
-msgid ""
-"bar {\n"
-"\toutput = eDP-1;\n"
-"\tposition = bottom;\n"
-"\tbackground-colour = \"#202020\";\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2268
-#, no-wrap
-msgid ""
-"\t# Condition for the default configuration set.\n"
-"\tcondition-resolution = wider-than-high;\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2272
-#, no-wrap
-msgid ""
-"\tconfig {\n"
-"\t\tposition = right;\n"
-"\t}\n"
-msgstr ""
-
-#. type: delimited block . 4
-#: documentation/content/en/books/handbook/x11/_index.adoc:2281
-#, no-wrap
-msgid ""
-"\tbutton {\n"
-"\t\timage-path = /usr/local/lib/firefox/browser/chrome/icons/default/default48.png;\n"
-"\t\tcommand[mouse-left] = /usr/local/bin/firefox;\n"
-"\t}\n"
-"\tbutton {\n"
-"\t image-path = /usr/local/share/pixmaps/thunderbird.png;\n"
-"\t command[mouse-left] = /usr/local/bin/thunderbird;\n"
-"}\n"
-msgstr ""
diff --git a/documentation/content/en/books/handbook/zfs/_index.po b/documentation/content/en/books/handbook/zfs/_index.po
index 088d57ac25..4ad7261726 100644
--- a/documentation/content/en/books/handbook/zfs/_index.po
+++ b/documentation/content/en/books/handbook/zfs/_index.po
@@ -1,5038 +1,5039 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 13:49-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/handbook/zfs/_index.adoc:1
#, no-wrap
msgid "ZFS is an advanced file system designed to solve major problems found in previous storage subsystem software"
msgstr ""
#. type: YAML Front Matter: part
#: documentation/content/en/books/handbook/zfs/_index.adoc:1
#, no-wrap
msgid "Part III. System Administration"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/handbook/zfs/_index.adoc:1
#, no-wrap
-msgid "Chapter 20. The Z File System (ZFS)"
+msgid "Chapter 21. The Z File System (ZFS)"
msgstr ""
#. type: Title =
#: documentation/content/en/books/handbook/zfs/_index.adoc:15
#, no-wrap
msgid "The Z File System (ZFS)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:53
msgid ""
"ZFS is an advanced file system designed to solve major problems found in "
"previous storage subsystem software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:55
msgid ""
"Originally developed at Sun(TM), ongoing open source ZFS development has "
"moved to the http://open-zfs.org[OpenZFS Project]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:57
msgid "ZFS has three major design goals:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:59
msgid ""
"Data integrity: All data includes a <<zfs-term-checksum,checksum>> of the "
"data. ZFS calculates checksums and writes them along with the data. When "
"reading that data later, ZFS recalculates the checksums. If the checksums do "
"not match, meaning detecting one or more data errors, ZFS will attempt to "
"automatically correct errors when ditto-, mirror-, or parity-blocks are "
"available."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:60
msgid ""
"Pooled storage: adding physical storage devices to a pool, and allocating "
"storage space from that shared pool. Space is available to all file systems "
"and volumes, and increases by adding new storage devices to the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:61
msgid ""
"Performance: caching mechanisms provide increased performance. <<zfs-term-"
"arc,ARC>> is an advanced memory-based read cache. ZFS provides a second "
"level disk-based read cache with <<zfs-term-l2arc,L2ARC>>, and a disk-based "
"synchronous write cache named <<zfs-term-zil,ZIL>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:63
msgid "A complete list of features and terminology is in <<zfs-term>>."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:65
#, no-wrap
msgid "What Makes ZFS Different"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:78
msgid ""
"More than a file system, ZFS is fundamentally different from traditional "
"file systems. Combining the traditionally separate roles of volume manager "
"and file system provides ZFS with unique advantages. The file system is now "
"aware of the underlying structure of the disks. Traditional file systems "
"could exist on a single disk alone at a time. If there were two disks then "
"creating two separate file systems was necessary. A traditional hardware "
"RAID configuration avoided this problem by presenting the operating system "
"with a single logical disk made up of the space provided by physical disks "
"on top of which the operating system placed a file system. Even with "
"software RAID solutions like those provided by GEOM, the UFS file system "
"living on top of the RAID believes it's dealing with a single device. ZFS' "
"combination of the volume manager and the file system solves this and allows "
"the creation of file systems that all share a pool of available storage. "
"One big advantage of ZFS' awareness of the physical disk layout is that "
"existing file systems grow automatically when adding extra disks to the "
"pool. This new space then becomes available to the file systems. ZFS can "
"also apply different properties to each file system. This makes it useful to "
"create separate file systems and datasets instead of a single monolithic "
"file system."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:80
#, no-wrap
msgid "Quick Start Guide"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:84
msgid ""
"FreeBSD can mount ZFS pools and datasets during system initialization. To "
"enable it, add this line to [.filename]#/etc/rc.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:88
#, no-wrap
msgid "zfs_enable=\"YES\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:91
msgid "Then start the service:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:95
#, no-wrap
msgid "# service zfs start\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:99
msgid ""
"The examples in this section assume three SCSI disks with the device names [."
"filename]#da0#, [.filename]#da1#, and [.filename]#da2#. Users of SATA "
"hardware should instead use [.filename]#ada# device names."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:101
#, no-wrap
msgid "Single Disk Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:104
msgid "To create a simple, non-redundant pool using a single disk device:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:108
#, no-wrap
msgid "# zpool create example /dev/da0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:111
msgid "To view the new pool, review the output of `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:120
#, no-wrap
msgid ""
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235230 1628718 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032846 48737598 2% /usr\n"
"example 17547136 0 17547136 0% /example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:124
msgid ""
"This output shows creating and mounting of the `example` pool, and that is "
"now accessible as a file system. Create files for users to browse:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:135
#, no-wrap
msgid ""
"# cd /example\n"
"# ls\n"
"# touch testfile\n"
"# ls -al\n"
"total 4\n"
"drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .\n"
"drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..\n"
"-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:139
msgid ""
"This pool is not using any advanced ZFS features and properties yet. To "
"create a dataset on this pool with compression enabled:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:144
#, no-wrap
msgid ""
"# zfs create example/compressed\n"
"# zfs set compression=gzip example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:148
msgid ""
"The `example/compressed` dataset is now a ZFS compressed file system. Try "
"copying some large files to [.filename]#/example/compressed#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:150
msgid "Disable compression with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:154
#, no-wrap
msgid "# zfs set compression=off example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:157
msgid "To unmount a file system, use `zfs umount` and then verify with `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:167
#, no-wrap
msgid ""
"# zfs umount example/compressed\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235232 1628716 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:170
msgid ""
"To re-mount the file system to make it accessible again, use `zfs mount` and "
"verify with `df`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:181
#, no-wrap
msgid ""
"# zfs mount example/compressed\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235234 1628714 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
"example/compressed 17547008 0 17547008 0% /example/compressed\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:184
msgid "Running `mount` shows the pool and file systems:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:193
#, no-wrap
msgid ""
"# mount\n"
"/dev/ad0s1a on / (ufs, local)\n"
"devfs on /dev (devfs, local)\n"
"/dev/ad0s1d on /usr (ufs, local, soft-updates)\n"
"example on /example (zfs, local)\n"
"example/compressed on /example/compressed (zfs, local)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:199
msgid ""
"Use ZFS datasets like any file system after creation. Set other available "
"features on a per-dataset basis when needed. The example below creates a "
"new file system called `data`. It assumes the file system contains "
"important files and configures it to store two copies of each data block."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:204
#, no-wrap
msgid ""
"# zfs create example/data\n"
"# zfs set copies=2 example/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:207
msgid "Use `df` to see the data and space usage:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:218
#, no-wrap
msgid ""
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235234 1628714 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032864 48737580 2% /usr\n"
"example 17547008 0 17547008 0% /example\n"
"example/compressed 17547008 0 17547008 0% /example/compressed\n"
"example/data 17547008 0 17547008 0% /example/data\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:223
msgid ""
"Notice that all file systems in the pool have the same available space. "
"Using `df` in these examples shows that the file systems use the space they "
"need and all draw from the same pool. ZFS gets rid of concepts such as "
"volumes and partitions, and allows several file systems to share the same "
"pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:225
msgid "To destroy the file systems and then the pool that is no longer needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:231
#, no-wrap
msgid ""
"# zfs destroy example/compressed\n"
"# zfs destroy example/data\n"
"# zpool destroy example\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:234
#, no-wrap
msgid "RAID-Z"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:240
msgid ""
"Disks fail. One way to avoid data loss from disk failure is to use RAID. "
"ZFS supports this feature in its pool design. RAID-Z pools require three or "
"more disks but provide more usable space than mirrored pools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:242
msgid ""
"This example creates a RAID-Z pool, specifying the disks to add to the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:246
#, no-wrap
msgid "# zpool create storage raidz da0 da1 da2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:254
msgid ""
"Sun(TM) recommends that the number of devices used in a RAID-Z configuration "
"be between three and nine. For environments requiring a single pool "
"consisting of 10 disks or more, consider breaking it up into smaller RAID-Z "
"groups. If two disks are available, ZFS mirroring provides redundancy if "
"required. Refer to man:zpool[8] for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:258
msgid ""
"The previous example created the `storage` zpool. This example makes a new "
"file system called `home` in that pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:262
#, no-wrap
msgid "# zfs create storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:265
msgid "Enable compression and store an extra copy of directories and files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:270
#, no-wrap
msgid ""
"# zfs set copies=2 storage/home\n"
"# zfs set compression=gzip storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:273
msgid ""
"To make this the new home directory for users, copy the user data to this "
"directory and create the appropriate symbolic links:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:280
#, no-wrap
msgid ""
"# cp -rp /home/* /storage/home\n"
"# rm -rf /home /usr/home\n"
"# ln -s /storage/home /home\n"
"# ln -s /storage/home /usr/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:284
msgid ""
"Users data is now stored on the freshly-created [.filename]#/storage/home#. "
"Test by adding a new user and logging in as that user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:286
msgid "Create a file system snapshot to roll back to later:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:290
#, no-wrap
msgid "# zfs snapshot storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:293
msgid "ZFS creates snapshots of a dataset, not a single directory or file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:296
msgid ""
"The `@` character is a delimiter between the file system name or the volume "
"name. Before deleting an important directory, back up the file system, then "
"roll back to an earlier snapshot in which the directory still exists:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:300
#, no-wrap
msgid "# zfs rollback storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:304
msgid ""
"To list all available snapshots, run `ls` in the file system's [.filename]#."
"zfs/snapshot# directory. For example, to see the snapshot taken:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:308
#, no-wrap
msgid "# ls /storage/home/.zfs/snapshot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:313
msgid ""
"Write a script to take regular snapshots of user data. Over time, snapshots "
"can use up a lot of disk space. Remove the previous snapshot using the "
"command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:317
#, no-wrap
msgid "# zfs destroy storage/home@08-30-08\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:321
msgid ""
"After testing, make [.filename]#/storage/home# the real [.filename]#/home# "
"with this command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:325
#, no-wrap
msgid "# zfs set mountpoint=/home storage/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:328
msgid ""
"Run `df` and `mount` to confirm that the system now treats the file system "
"as the real [.filename]#/home#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:344
#, no-wrap
msgid ""
"# mount\n"
"/dev/ad0s1a on / (ufs, local)\n"
"devfs on /dev (devfs, local)\n"
"/dev/ad0s1d on /usr (ufs, local, soft-updates)\n"
"storage on /storage (zfs, local)\n"
"storage/home on /home (zfs, local)\n"
"# df\n"
"Filesystem 1K-blocks Used Avail Capacity Mounted on\n"
"/dev/ad0s1a 2026030 235240 1628708 13% /\n"
"devfs 1 1 0 100% /dev\n"
"/dev/ad0s1d 54098308 1032826 48737618 2% /usr\n"
"storage 26320512 0 26320512 0% /storage\n"
"storage/home 26320512 0 26320512 0% /home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:348
msgid ""
"This completes the RAID-Z configuration. Add daily status updates about the "
"created file systems to the nightly man:periodic[8] runs by adding this line "
"to [.filename]#/etc/periodic.conf#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:352
#, no-wrap
msgid "daily_status_zfs_enable=\"YES\"\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:355
#, no-wrap
msgid "Recovering RAID-Z"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:359
msgid ""
"Every software RAID has a method of monitoring its `state`. View the status "
"of RAID-Z devices using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:363
#, no-wrap
msgid "# zpool status -x\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:366
msgid ""
"If all pools are <<zfs-term-online,Online>> and everything is normal, the "
"message shows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:370
#, no-wrap
msgid "all pools are healthy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:373
msgid ""
"If there is a problem, perhaps a disk being in the <<zfs-term-offline,"
"Offline>> state, the pool state will look like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:385
#, no-wrap
msgid ""
" pool: storage\n"
" state: DEGRADED\n"
"status: One or more devices has been taken offline by the administrator.\n"
"\tSufficient replicas exist for the pool to continue functioning in a\n"
"\tdegraded state.\n"
"action: Online the device using 'zpool online' or replace the device with\n"
"\t'zpool replace'.\n"
" scrub: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:392
#, no-wrap
msgid ""
"\tNAME STATE READ WRITE CKSUM\n"
"\tstorage DEGRADED 0 0 0\n"
"\t raidz1 DEGRADED 0 0 0\n"
"\t da0 ONLINE 0 0 0\n"
"\t da1 OFFLINE 0 0 0\n"
"\t da2 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:394
#: documentation/content/en/books/handbook/zfs/_index.adoc:429
#: documentation/content/en/books/handbook/zfs/_index.adoc:475
#: documentation/content/en/books/handbook/zfs/_index.adoc:518
#: documentation/content/en/books/handbook/zfs/_index.adoc:541
#: documentation/content/en/books/handbook/zfs/_index.adoc:573
#: documentation/content/en/books/handbook/zfs/_index.adoc:652
#: documentation/content/en/books/handbook/zfs/_index.adoc:706
#: documentation/content/en/books/handbook/zfs/_index.adoc:743
#: documentation/content/en/books/handbook/zfs/_index.adoc:772
#: documentation/content/en/books/handbook/zfs/_index.adoc:852
#: documentation/content/en/books/handbook/zfs/_index.adoc:925
#: documentation/content/en/books/handbook/zfs/_index.adoc:956
#: documentation/content/en/books/handbook/zfs/_index.adoc:1056
#: documentation/content/en/books/handbook/zfs/_index.adoc:1100
#: documentation/content/en/books/handbook/zfs/_index.adoc:1125
#: documentation/content/en/books/handbook/zfs/_index.adoc:1145
#, no-wrap
msgid "errors: No known data errors\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:397
msgid ""
"\"OFFLINE\" shows the administrator took [.filename]#da1# offline using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:401
#, no-wrap
msgid "# zpool offline storage da1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:405
msgid ""
"Power down the computer now and replace [.filename]#da1#. Power up the "
"computer and return [.filename]#da1# to the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:409
#, no-wrap
msgid "# zpool replace storage da1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:412
msgid ""
"Next, check the status again, this time without `-x` to display all pools:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:420
#, no-wrap
msgid ""
"# zpool status storage\n"
" pool: storage\n"
" state: ONLINE\n"
" scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:427
#: documentation/content/en/books/handbook/zfs/_index.adoc:473
#, no-wrap
msgid ""
"\tNAME STATE READ WRITE CKSUM\n"
"\tstorage ONLINE 0 0 0\n"
"\t raidz1 ONLINE 0 0 0\n"
"\t da0 ONLINE 0 0 0\n"
"\t da1 ONLINE 0 0 0\n"
"\t da2 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:432
msgid "In this example, everything is normal."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:434
#, no-wrap
msgid "Data Verification"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:438
msgid ""
"ZFS uses checksums to verify the integrity of stored data. Creating file "
"systems automatically enables them."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:445
msgid ""
"Disabling Checksums is possible but _not_ recommended! Checksums take little "
"storage space and provide data integrity. Most ZFS features will not work "
"properly with checksums disabled. Disabling these checksums will not "
"increase performance noticeably."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:448
msgid ""
"Verifying the data checksums (called _scrubbing_) ensures integrity of the "
"`storage` pool with:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:452
#, no-wrap
msgid "# zpool scrub storage\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:458
msgid ""
"The duration of a scrub depends on the amount of data stored. Larger "
"amounts of data will take proportionally longer to verify. Since scrubbing "
"is I/O intensive, ZFS allows a single scrub to run at a time. After "
"scrubbing completes, view the status with `zpool status`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:466
#, no-wrap
msgid ""
"# zpool status storage\n"
" pool: storage\n"
" state: ONLINE\n"
" scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:479
msgid ""
"Displaying the completion date of the last scrubbing helps decide when to "
"start another. Routine scrubs help protect data from silent corruption and "
"ensure the integrity of the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:481
msgid "Refer to man:zfs[8] and man:zpool[8] for other ZFS options."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:483
#, no-wrap
msgid "`zpool` Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:488
msgid ""
"ZFS administration uses two main utilities. The `zpool` utility controls "
"the operation of the pool and allows adding, removing, replacing, and "
"managing disks. The <<zfs-zfs,`zfs`>> utility allows creating, destroying, "
"and managing datasets, both <<zfs-term-filesystem,file systems>> and <<zfs-"
"term-volume,volumes>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:490
#, no-wrap
msgid "Creating and Destroying Storage Pools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:499
msgid ""
-"Creating a ZFS storage pool (_zpool_) requires permanent decisions, as the "
-"pool structure cannot change after creation. The most important decision is "
+"Creating a ZFS storage pool requires permanent decisions, as the pool "
+"structure cannot change after creation. The most important decision is "
"which types of vdevs to group the physical disks into. See the list of "
"<<zfs-term-vdev,vdev types>> for details about the possible options. After "
"creating the pool, most vdev types do not allow adding disks to the vdev. "
"The exceptions are mirrors, which allow adding new disks to the vdev, and "
"stripes, which upgrade to mirrors by attaching a new disk to the vdev. "
"Although adding new vdevs expands a pool, the pool layout cannot change "
"after pool creation. Instead, back up the data, destroy the pool, and "
"recreate it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:501
msgid "Create a simple mirror pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:510
#, no-wrap
msgid ""
"# zpool create mypool mirror /dev/ada1 /dev/ada2\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:516
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
" ada2 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:521
msgid ""
"To create more than one vdev with a single command, specify groups of disks "
"separated by the vdev type keyword, `mirror` in this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:530
#, no-wrap
msgid ""
"# zpool create mypool mirror /dev/ada1 /dev/ada2 mirror /dev/ada3 /dev/ada4\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:539
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
" ada2 ONLINE 0 0 0\n"
" mirror-1 ONLINE 0 0 0\n"
" ada3 ONLINE 0 0 0\n"
" ada4 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:550
msgid ""
"Pools can also use partitions rather than whole disks. Putting ZFS in a "
"separate partition allows the same disk to have other partitions for other "
"purposes. In particular, it allows adding partitions with bootcode and file "
"systems needed for booting. This allows booting from disks that are also "
"members of a pool. ZFS adds no performance penalty on FreeBSD when using a "
"partition rather than a whole disk. Using partitions also allows the "
"administrator to _under-provision_ the disks, using less than the full "
"capacity. If a future replacement disk of the same nominal size as the "
"original actually has a slightly smaller capacity, the smaller partition "
"will still fit, using the replacement disk."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:552
msgid "Create a <<zfs-term-vdev-raidz,RAID-Z2>> pool using partitions:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:561
#, no-wrap
msgid ""
"# zpool create mypool raidz2 /dev/ada0p3 /dev/ada1p3 /dev/ada2p3 /dev/ada3p3 /dev/ada4p3 /dev/ada5p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:571
#: documentation/content/en/books/handbook/zfs/_index.adoc:770
#: documentation/content/en/books/handbook/zfs/_index.adoc:954
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" raidz2-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
" ada3p3 ONLINE 0 0 0\n"
" ada4p3 ONLINE 0 0 0\n"
" ada5p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:580
msgid ""
"Destroy a pool that is no longer needed to reuse the disks. Destroying a "
"pool requires unmounting the file systems in that pool first. If any "
"dataset is in use, the unmount operation fails without destroying the pool. "
"Force the pool destruction with `-f`. This can cause undefined behavior in "
"applications which had open files on those datasets."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:582
#, no-wrap
msgid "Adding and Removing Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:586
msgid ""
-"Two ways exist for adding disks to a zpool: attaching a disk to an existing "
+"Two ways exist for adding disks to a pool: attaching a disk to an existing "
"vdev with `zpool attach`, or adding vdevs to the pool with `zpool add`. "
"Some <<zfs-term-vdev,vdev types>> allow adding disks to the vdev after "
"creation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:595
msgid ""
"A pool created with a single disk lacks redundancy. It can detect "
"corruption but can not repair it, because there is no other copy of the "
"data. The <<zfs-term-copies,copies>> property may be able to recover from a "
"small failure such as a bad sector, but does not provide the same level of "
"protection as mirroring or RAID-Z. Starting with a pool consisting of a "
"single disk vdev, use `zpool attach` to add a new disk to the vdev, creating "
"a mirror. Also use `zpool attach` to add new disks to a mirror group, "
"increasing redundancy and read performance. When partitioning the disks "
"used for the pool, replicate the layout of the first disk on to the second. "
"Use `gpart backup` and `gpart restore` to make this process easier."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:597
msgid ""
"Upgrade the single disk (stripe) vdev [.filename]#ada0p3# to a mirror by "
"attaching [.filename]#ada1p3#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:605
#: documentation/content/en/books/handbook/zfs/_index.adoc:802
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:609
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:613
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool attach mypool ada0p3 ada1p3\n"
"Make sure to wait until resilvering finishes before rebooting.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:615
#, no-wrap
msgid "If you boot from pool 'mypool', you may need to update boot code on newly attached disk _ada1p3_.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:617
#, no-wrap
msgid "Assuming you use GPT partitioning and _da0_ is your new boot disk you may use the following command:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:631
#, no-wrap
msgid ""
" gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1\n"
"bootcode written to ada1\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Fri May 30 08:19:19 2014\n"
" 527M scanned out of 781M at 47.9M/s, 0h0m to go\n"
" 527M resilvered, 67.53% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:637
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:644
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:15:58 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:650
#: documentation/content/en/books/handbook/zfs/_index.adoc:683
#: documentation/content/en/books/handbook/zfs/_index.adoc:741
#: documentation/content/en/books/handbook/zfs/_index.adoc:808
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:660
msgid ""
"When adding disks to the existing vdev is not an option, as for RAID-Z, an "
"alternative method is to add another vdev to the pool. Adding vdevs "
"provides higher performance by distributing writes across the vdevs. Each "
"vdev provides its own redundancy. Mixing vdev types like `mirror` and `RAID-"
"Z` is possible but discouraged. Adding a non-redundant vdev to a pool "
"containing mirror or RAID-Z vdevs risks the data on the entire pool. "
"Distributing writes means a failure of the non-redundant disk will result in "
"the loss of a fraction of every block written to the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:665
msgid ""
"ZFS stripes data across each of the vdevs. For example, with two mirror "
"vdevs, this is effectively a RAID 10 that stripes writes across two sets of "
"mirrors. ZFS allocates space so that each vdev reaches 100% full at the "
"same time. Having vdevs with different amounts of free space will lower "
"performance, as more data writes go to the less full vdev."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:667
msgid ""
"When attaching new devices to a boot pool, remember to update the bootcode."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:669
msgid ""
"Attach a second mirror group ([.filename]#ada2p3# and [.filename]#ada3p3#) "
"to the existing mirror:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:677
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Fri May 30 08:19:35 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:695
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool add mypool mirror ada2p3 ada3p3\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2\n"
"bootcode written to ada2\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada3\n"
"bootcode written to ada3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:704
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" mirror-1 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
" ada3p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:710
msgid ""
"Removing vdevs from a pool is impossible and removal of disks from a mirror "
"is exclusive if there is enough remaining redundancy. If a single disk "
"remains in a mirror group, that group ceases to be a mirror and becomes a "
"stripe, risking the entire pool if that remaining disk fails."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:712
msgid "Remove a disk from a three-way mirror group:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:720
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:727
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:735
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool detach mypool ada2p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 0h0m with 0 errors on Fri May 30 08:29:51 2014\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:746
#, no-wrap
msgid "Checking the Status of a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:752
msgid ""
"Pool status is important. If a drive goes offline or ZFS detects a read, "
"write, or checksum error, the corresponding error count increases. The "
"`status` output shows the configuration and status of each device in the "
"pool and the status of the entire pool. Actions to take and details about "
"the last <<zfs-zpool-scrub,`scrub`>> are also shown."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:760
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub repaired 0 in 2h25m with 0 errors on Sat Sep 14 04:25:50 2013\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:775
#, no-wrap
msgid "Clearing Errors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:781
msgid ""
"When detecting an error, ZFS increases the read, write, or checksum error "
"counts. Clear the error message and reset the counts with `zpool clear "
"_mypool_`. Clearing the error state can be important for automated scripts "
"that alert the administrator when the pool encounters an error. Without "
"clearing old errors, the scripts may fail to report further errors."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:783
#, no-wrap
msgid "Replacing a Functioning Device"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:792
msgid ""
"It may be desirable to replace one disk with a different disk. When "
"replacing a working disk, the process keeps the old disk online during the "
"replacement. The pool never enters a <<zfs-term-degraded,degraded>> state, "
"reducing the risk of data loss. Running `zpool replace` copies the data "
"from the old disk to the new one. After the operation completes, ZFS "
"disconnects the old disk from the vdev. If the new disk is larger than the "
"old disk, it may be possible to grow the zpool, using the new space. See "
"<<zfs-zpool-online,Growing a Pool>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:794
msgid "Replace a functioning device in the pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:812
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool replace mypool ada1p3 ada2p3\n"
"Make sure to wait until resilvering finishes before rebooting.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:814
#, no-wrap
msgid "When booting from the pool 'zroot', update the boot code on the newly attached disk 'ada2p3'.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:816
#, no-wrap
msgid "Assuming GPT partitioning is used and [.filename]#da0# is the new boot disk, use the following command:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:829
#, no-wrap
msgid ""
" gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0\n"
"# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada2\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Mon Jun 2 14:21:35 2014\n"
" 604M scanned out of 781M at 46.5M/s, 0h0m to go\n"
" 604M resilvered, 77.39% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:837
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" replacing-1 ONLINE 0 0 0\n"
" ada1p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:844
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:21:52 2014\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:850
#: documentation/content/en/books/handbook/zfs/_index.adoc:923
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" ada2p3 ONLINE 0 0 0\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:855
#, no-wrap
msgid "Dealing with Failed Devices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:863
msgid ""
"When a disk in a pool fails, the vdev to which the disk belongs enters the "
"<<zfs-term-degraded,degraded>> state. The data is still available, but with "
"reduced performance because ZFS computes missing data from the available "
"redundancy. To restore the vdev to a fully functional state, replace the "
"failed physical device. ZFS is then instructed to begin the <<zfs-term-"
"resilver,resilver>> operation. ZFS recomputes data on the failed device "
"from available redundancy and writes it to the replacement device. After "
"completion, the vdev returns to <<zfs-term-online,online>> status."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:866
msgid ""
"If the vdev does not have any redundancy, or if devices have failed and "
"there is not enough redundancy to compensate, the pool enters the <<zfs-term-"
"faulted,faulted>> state. Unless enough devices can reconnect the pool "
"becomes inoperative requiring a data restore from backups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:869
msgid ""
"When replacing a failed disk, the name of the failed disk changes to the "
"GUID of the new disk. A new device name parameter for `zpool replace` is "
"not required if the replacement device has the same device name."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:871
msgid "Replace a failed disk using `zpool replace`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:883
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: DEGRADED\n"
"status: One or more devices could not be opened. Sufficient replicas exist for\n"
" the pool to continue functioning in a degraded state.\n"
"action: Attach the missing device and online it using 'zpool online'.\n"
" see: http://illumos.org/msg/ZFS-8000-2Q\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:889
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool DEGRADED 0 0 0\n"
" mirror-0 DEGRADED 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" 316502962686821739 UNAVAIL 0 0 0 was /dev/ada1p3\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:902
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool replace mypool 316502962686821739 ada2p3\n"
"# zpool status\n"
" pool: mypool\n"
" state: DEGRADED\n"
"status: One or more devices is currently being resilvered. The pool will\n"
" continue to function, possibly in a degraded state.\n"
"action: Wait for the resilver to complete.\n"
" scan: resilver in progress since Mon Jun 2 14:52:21 2014\n"
" 641M scanned out of 781M at 49.3M/s, 0h0m to go\n"
" 640M resilvered, 82.04% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:910
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool DEGRADED 0 0 0\n"
" mirror-0 DEGRADED 0 0 0\n"
" ada0p3 ONLINE 0 0 0\n"
" replacing-1 UNAVAIL 0 0 0\n"
" 15732067398082357289 UNAVAIL 0 0 0 was /dev/ada1p3/old\n"
" ada2p3 ONLINE 0 0 0 (resilvering)\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:917
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: resilvered 781M in 0h0m with 0 errors on Mon Jun 2 14:52:38 2014\n"
"config:\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:928
#, no-wrap
msgid "Scrubbing a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:933
msgid ""
"Routinely <<zfs-term-scrub,scrub>> pools, ideally at least once every "
"month. The `scrub` operation is disk-intensive and will reduce performance "
"while running. Avoid high-demand periods when scheduling `scrub` or use "
"<<zfs-advanced-tuning-scrub_delay,`vfs.zfs.scrub_delay`>> to adjust the "
"relative priority of the `scrub` to keep it from slowing down other "
"workloads."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:944
#, no-wrap
msgid ""
"# zpool scrub mypool\n"
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
" scan: scrub in progress since Wed Feb 19 20:52:54 2014\n"
" 116G scanned out of 8.60T at 649M/s, 3h48m to go\n"
" 0 repaired, 1.32% done\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:959
msgid "To cancel a scrub operation if needed, run `zpool scrub -s _mypool_`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:961
#, no-wrap
msgid "Self-Healing"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:972
msgid ""
"The checksums stored with data blocks enable the file system to _self-"
"heal_. This feature will automatically repair data whose checksum does not "
"match the one recorded on another device that is part of the storage pool. "
"For example, a mirror configuration with two disks where one drive is "
"starting to malfunction and cannot properly store the data any more. This "
"is worse when the data was not accessed for a long time, as with long term "
"archive storage. Traditional file systems need to run commands that check "
"and repair the data like man:fsck[8]. These commands take time, and in "
"severe cases, an administrator has to decide which repair operation to "
"perform. When ZFS detects a data block with a mismatched checksum, it tries "
"to read the data from the mirror disk. If that disk can provide the correct "
"data, ZFS will give that to the application and correct the data on the disk "
"with the wrong checksum. This happens without any interaction from a system "
"administrator during normal pool operation."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:974
msgid ""
"The next example shows this self-healing behavior by creating a mirrored "
"pool of disks [.filename]#/dev/ada0# and [.filename]#/dev/ada1#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:983
#, no-wrap
msgid ""
"# zpool create healer mirror /dev/ada0 /dev/ada1\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:989
#: documentation/content/en/books/handbook/zfs/_index.adoc:1143
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:994
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"healer 960M 92.5K 960M - - 0% 0% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:997
msgid ""
"Copy some important data to the pool to protect from data errors using the "
"self-healing feature and create a checksum of the pool for later comparison."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1007
#, no-wrap
msgid ""
"# cp /some/important/data /healer\n"
"# zfs list\n"
"NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT\n"
"healer 960M 67.7M 892M 7% 1.00x ONLINE -\n"
"# sha1 /healer > checksum.txt\n"
"# cat checksum.txt\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1011
msgid ""
"Simulate data corruption by writing random data to the beginning of one of "
"the disks in the mirror. To keep ZFS from healing the data when detected, "
"export the pool before the corruption and import it again afterwards."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1019
msgid ""
"This is a dangerous operation that can destroy vital data, shown here for "
"demonstration alone. *Do not try* it during normal operation of a storage "
"pool. Nor should this intentional corruption example run on any disk with a "
"file system not using ZFS on another partition in it. Do not use any other "
"disk device names other than the ones that are part of the pool. Ensure "
"proper backups of the pool exist and test them before running the command!"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1029
#, no-wrap
msgid ""
"# zpool export healer\n"
"# dd if=/dev/random of=/dev/ada1 bs=1m count=200\n"
"200+0 records in\n"
"200+0 records out\n"
"209715200 bytes transferred in 62.992162 secs (3329227 bytes/sec)\n"
"# zpool import healer\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1035
msgid ""
"The pool status shows that one device has experienced an error. Note that "
"applications reading data from the pool did not receive any incorrect data. "
"ZFS provided data from the [.filename]#ada0# device with the correct "
"checksums. To find the device with the wrong checksum, look for one whose "
"`CKSUM` column contains a nonzero value."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1048
#, no-wrap
msgid ""
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
" action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: none requested\n"
" config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1054
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1060
msgid ""
"ZFS detected the error and handled it by using the redundancy present in the "
"unaffected [.filename]#ada0# mirror disk. A checksum comparison with the "
"original one will reveal whether the pool is consistent again."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1067
#, no-wrap
msgid ""
"# sha1 /healer >> checksum.txt\n"
"# cat checksum.txt\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
"SHA1 (/healer) = 2753eff56d77d9a536ece6694bf0a82740344d1f\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1076
msgid ""
"Generate checksums before and after the intentional tampering while the pool "
"data still matches. This shows how ZFS is capable of detecting and "
"correcting any errors automatically when the checksums differ. Note this is "
"possible with enough redundancy present in the pool. A pool consisting of a "
"single device has no self-healing capabilities. That is also the reason why "
"checksums are so important in ZFS; do not disable them for any reason. ZFS "
"requires no man:fsck[8] or similar file system consistency check program to "
"detect and correct this, and keeps the pool available while there is a "
"problem. A scrub operation is now required to overwrite the corrupted data "
"on [.filename]#ada1#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1092
#, no-wrap
msgid ""
"# zpool scrub healer\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
"status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
"action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: scrub in progress since Mon Dec 10 12:23:30 2012\n"
" 10.4M scanned out of 67.0M at 267K/s, 0h3m to go\n"
" 9.63M repaired, 15.56% done\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1098
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 627 (repairing)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1104
msgid ""
"The scrub operation reads data from [.filename]#ada0# and rewrites any data "
"with a wrong checksum on [.filename]#ada1#, shown by the `(repairing)` "
"output from `zpool status`. After the operation is complete, the pool "
"status changes to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1117
#, no-wrap
msgid ""
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
"status: One or more devices has experienced an unrecoverable error. An\n"
" attempt was made to correct the error. Applications are unaffected.\n"
"action: Determine if the device needs to be replaced, and clear the errors\n"
" using 'zpool clear' or replace the device with 'zpool replace'.\n"
" see: http://illumos.org/msg/ZFS-8000-4J\n"
" scan: scrub repaired 66.5M in 0h2m with 0 errors on Mon Dec 10 12:26:25 2012\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1123
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" healer ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
" ada0 ONLINE 0 0 0\n"
" ada1 ONLINE 0 0 2.72K\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1128
msgid ""
"After the scrubbing operation completes with all the data synchronized from "
"[.filename]#ada0# to [.filename]#ada1#, <<zfs-zpool-clear,clear>> the error "
"messages from the pool status by running `zpool clear`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1137
#, no-wrap
msgid ""
"# zpool clear healer\n"
"# zpool status healer\n"
" pool: healer\n"
" state: ONLINE\n"
" scan: scrub repaired 66.5M in 0h2m with 0 errors on Mon Dec 10 12:26:25 2012\n"
"config:\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1148
msgid ""
"The pool is now back to a fully working state, with all error counts now "
"zero."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1150
#, no-wrap
msgid "Growing a Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1159
msgid ""
"The smallest device in each vdev limits the usable size of a redundant "
"pool. Replace the smallest device with a larger device. After completing a "
"<<zfs-zpool-replace,replace>> or <<zfs-term-resilver,resilver>> operation, "
"the pool can grow to use the capacity of the new device. For example, "
"consider a mirror of a 1 TB drive and a 2 TB drive. The usable space is 1 "
"TB. When replacing the 1 TB drive with another 2 TB drive, the resilvering "
"process copies the existing data onto the new drive. As both of the devices "
"now have 2 TB capacity, the mirror's available space grows to 2 TB."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1162
msgid ""
"Start expansion by using `zpool online -e` on each device. After expanding "
"all devices, the extra space becomes available to the pool."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1164
#, no-wrap
msgid "Importing and Exporting Pools"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1172
msgid ""
"_Export_ pools before moving them to another system. ZFS unmounts all "
"datasets, marking each device as exported but still locked to prevent use by "
"other disks. This allows pools to be _imported_ on other machines, other "
"operating systems that support ZFS, and even different hardware "
"architectures (with some caveats, see man:zpool[8]). When a dataset has "
"open files, use `zpool export -f` to force exporting the pool. Use this "
"with caution. The datasets are forcibly unmounted, potentially resulting in "
"unexpected behavior by the applications which had open files on those "
"datasets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1174
msgid "Export a pool that is not in use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1178
#, no-wrap
msgid "# zpool export mypool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1186
msgid ""
"Importing a pool automatically mounts the datasets. If this is undesired "
"behavior, use `zpool import -N` to prevent it. `zpool import -o` sets "
"temporary properties for this specific import. `zpool import altroot=` "
"allows importing a pool with a base mount point instead of the root of the "
"file system. If the pool was last used on a different system and was not "
"properly exported, force the import using `zpool import -f`. `zpool import -"
"a` imports all pools that do not appear to be in use by another system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1188
msgid "List all available pools for import:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1197
#, no-wrap
msgid ""
"# zpool import\n"
" pool: mypool\n"
" id: 9930174748043525076\n"
" state: ONLINE\n"
" action: The pool can be imported using its name or numeric identifier.\n"
" config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1200
#, no-wrap
msgid ""
" mypool ONLINE\n"
" ada2p3 ONLINE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1203
msgid "Import the pool with an alternative root directory:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1211
#, no-wrap
msgid ""
"# zpool import -o altroot=/mnt mypool\n"
"# zfs list\n"
"zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 110K 47.0G 31K /mnt/mypool\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1214
#, no-wrap
msgid "Upgrading a Storage Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1220
msgid ""
"After upgrading FreeBSD, or if importing a pool from a system using an older "
"version, manually upgrade the pool to the latest ZFS version to support "
"newer features. Consider whether the pool may ever need importing on an "
"older system before upgrading. Upgrading is a one-way process. Upgrade "
"older pools is possible, but downgrading pools with newer features is not."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1222
msgid "Upgrade a v28 pool to support `Feature Flags`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1235
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: The pool is formatted using a legacy on-disk format. The pool can\n"
" still be used, but some features are unavailable.\n"
"action: Upgrade the pool using 'zpool upgrade'. Once this is done, the\n"
" pool will no longer be accessible on software that does not support feat\n"
" flags.\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1241
#: documentation/content/en/books/handbook/zfs/_index.adoc:1289
#, no-wrap
msgid ""
" NAME STATE READ WRITE CKSUM\n"
" mypool ONLINE 0 0 0\n"
" mirror-0 ONLINE 0 0 0\n"
"\t ada0 ONLINE 0 0 0\n"
"\t ada1 ONLINE 0 0 0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1245
#: documentation/content/en/books/handbook/zfs/_index.adoc:1293
#, no-wrap
msgid ""
"errors: No known data errors\n"
"# zpool upgrade\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1248
#, no-wrap
msgid ""
"The following pools are formatted with legacy version numbers and are upgraded to use feature flags.\n"
"After being upgraded, these pools will no longer be accessible by software that does not support feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1252
#, no-wrap
msgid ""
"VER POOL\n"
"--- ------------\n"
"28 mypool\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1257
#, no-wrap
msgid ""
"Use 'zpool upgrade -v' for a list of available legacy versions.\n"
"Every feature flags pool has all supported features enabled.\n"
"# zpool upgrade mypool\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1264
#, no-wrap
msgid ""
"Successfully upgraded 'mypool' from version 28 to feature flags.\n"
"Enabled the following features on 'mypool':\n"
" async_destroy\n"
" empty_bpobj\n"
" lz4_compress\n"
" multi_vdev_crash_dump\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1268
msgid ""
"The newer features of ZFS will not be available until `zpool upgrade` has "
"completed. Use `zpool upgrade -v` to see what new features the upgrade "
"provides, as well as which features are already supported."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1270
msgid "Upgrade a pool to support new feature flags:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1283
#, no-wrap
msgid ""
"# zpool status\n"
" pool: mypool\n"
" state: ONLINE\n"
"status: Some supported features are not enabled on the pool. The pool can\n"
" still be used, but some features are unavailable.\n"
"action: Enable all features using 'zpool upgrade'. Once this is done,\n"
" the pool may no longer be accessible by software that does not support\n"
" the features. See zpool-features(7) for details.\n"
" scan: none requested\n"
"config:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1295
#, no-wrap
msgid "All pools are formatted using feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1299
#, no-wrap
msgid ""
"Some supported features are not enabled on the following pools. Once a\n"
"feature is enabled the pool may become incompatible with software\n"
"that does not support the feature. See zpool-features(7) for details.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1312
#, no-wrap
msgid ""
"POOL FEATURE\n"
"---------------\n"
"zstore\n"
" multi_vdev_crash_dump\n"
" spacemap_histogram\n"
" enabled_txg\n"
" hole_birth\n"
" extensible_dataset\n"
" bookmarks\n"
" filesystem_limits\n"
"# zpool upgrade mypool\n"
"This system supports ZFS pool feature flags.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1320
#, no-wrap
msgid ""
"Enabled the following features on 'mypool':\n"
" spacemap_histogram\n"
" enabled_txg\n"
" hole_birth\n"
" extensible_dataset\n"
" bookmarks\n"
" filesystem_limits\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1327
msgid ""
"Update the boot code on systems that boot from a pool to support the new "
"pool version. Use `gpart bootcode` on the partition that contains the boot "
"code. Two types of bootcode are available, depending on way the system "
"boots: GPT (the most common option) and EFI (for more modern systems)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1329
msgid "For legacy boot using GPT, use the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1333
#, no-wrap
msgid "# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1336
msgid "For systems using EFI to boot, execute the following command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1340
#, no-wrap
msgid "# gpart bootcode -p /boot/boot1.efifat -i 1 ada1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1344
msgid ""
"Apply the bootcode to all bootable disks in the pool. See man:gpart[8] for "
"more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1347
#, no-wrap
msgid "Displaying Recorded Pool History"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1353
msgid ""
"ZFS records commands that change the pool, including creating datasets, "
"changing properties, or replacing a disk. Reviewing history about a pool's "
"creation is useful, as is checking which user performed a specific action "
"and when. History is not kept in a log file, but is part of the pool "
"itself. The command to review this history is aptly named `zpool history`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1362
#, no-wrap
msgid ""
"# zpool history\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 zpool create tank mirror /dev/ada0 /dev/ada1\n"
"2013-02-27.18:50:58 zfs set atime=off tank\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank\n"
"2013-02-27.18:51:18 zfs create tank/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1367
msgid ""
"The output shows `zpool` and `zfs` commands altering the pool in some way "
"along with a timestamp. Commands like `zfs list` are not included. When "
"specifying no pool name, ZFS displays history of all pools."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1370
msgid ""
"`zpool history` can show even more information when providing the options `-"
"i` or `-l`. `-i` displays user-initiated events as well as internally "
"logged ZFS events."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1382
#, no-wrap
msgid ""
"# zpool history -i\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 [internal pool create txg:5] pool spa 28; zfs spa 28; zpl 5;uts 9.1-RELEASE 901000 amd64\n"
"2013-02-27.18:50:53 [internal property set txg:50] atime=0 dataset = 21\n"
"2013-02-27.18:50:58 zfs set atime=off tank\n"
"2013-02-27.18:51:04 [internal property set txg:53] checksum=7 dataset = 21\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank\n"
"2013-02-27.18:51:13 [internal create txg:55] dataset = 39\n"
"2013-02-27.18:51:18 zfs create tank/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1386
msgid ""
"Show more details by adding `-l`. Showing history records in a long format, "
"including information like the name of the user who issued the command and "
"the hostname on which the change happened."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1395
#, no-wrap
msgid ""
"# zpool history -l\n"
"History for 'tank':\n"
"2013-02-26.23:02:35 zpool create tank mirror /dev/ada0 /dev/ada1 [user 0 (root) on :global]\n"
"2013-02-27.18:50:58 zfs set atime=off tank [user 0 (root) on myzfsbox:global]\n"
"2013-02-27.18:51:09 zfs set checksum=fletcher4 tank [user 0 (root) on myzfsbox:global]\n"
"2013-02-27.18:51:18 zfs create tank/backup [user 0 (root) on myzfsbox:global]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1401
msgid ""
"The output shows that the `root` user created the mirrored pool with disks [."
"filename]#/dev/ada0# and [.filename]#/dev/ada1#. The hostname `myzfsbox` is "
"also shown in the commands after the pool's creation. The hostname display "
"becomes important when exporting the pool from one system and importing on "
"another. It's possible to distinguish the commands issued on the other "
"system by the hostname recorded for each command."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1404
msgid ""
"Combine both options to `zpool history` to give the most detailed "
"information possible for any given pool. Pool history provides valuable "
"information when tracking down the actions performed or when needing more "
"detailed output for debugging."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1406
#, no-wrap
msgid "Performance Monitoring"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1413
msgid ""
"A built-in monitoring system can display pool I/O statistics in real time. "
"It shows the amount of free and used space on the pool, read and write "
"operations performed per second, and I/O bandwidth used. By default, ZFS "
"monitors and displays all pools in the system. Provide a pool name to limit "
"monitoring to that pool. A basic example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1421
#, no-wrap
msgid ""
"# zpool iostat\n"
" capacity operations bandwidth\n"
"pool alloc free read write read write\n"
"---------- ----- ----- ----- ----- ----- -----\n"
"data 288G 1.53T 2 11 11.3K 57.1K\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1427
msgid ""
"To continuously see I/O activity, specify a number as the last parameter, "
"indicating an interval in seconds to wait between updates. The next "
"statistic line prints after each interval. Press kbd:[Ctrl+C] to stop this "
"continuous monitoring. Give a second number on the command line after the "
"interval to specify the total number of statistics to display."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1432
msgid ""
"Display even more detailed I/O statistics with `-v`. Each device in the "
"pool appears with a statistics line. This is useful for seeing read and "
"write operations performed on each device, and can help determine if any "
"individual device is slowing down the pool. This example shows a mirrored "
"pool with two devices:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1444
#, no-wrap
msgid ""
"# zpool iostat -v \n"
" capacity operations bandwidth\n"
"pool alloc free read write read write\n"
"----------------------- ----- ----- ----- ----- ----- -----\n"
"data 288G 1.53T 2 12 9.23K 61.5K\n"
" mirror 288G 1.53T 2 12 9.23K 61.5K\n"
" ada1 - - 0 4 5.61K 61.7K\n"
" ada2 - - 1 4 5.04K 61.7K\n"
"----------------------- ----- ----- ----- ----- ----- -----\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1447
#, no-wrap
msgid "Splitting a Storage Pool"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1454
msgid ""
"ZFS can split a pool consisting of one or more mirror vdevs into two pools. "
"Unless otherwise specified, ZFS detaches the last member of each mirror and "
"creates a new pool containing the same data. Be sure to make a dry run of "
"the operation with `-n` first. This displays the details of the requested "
"operation without actually performing it. This helps confirm that the "
"operation will do what the user intends."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:1456
#, no-wrap
msgid "`zfs` Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1460
msgid ""
"The `zfs` utility can create, destroy, and manage all existing ZFS datasets "
"within a pool. To manage the pool itself, use <<zfs-zpool,`zpool`>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1462
#, no-wrap
msgid "Creating and Destroying Datasets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1472
msgid ""
"Unlike traditional disks and volume managers, space in ZFS is _not_ "
"preallocated. With traditional file systems, after partitioning and "
"assigning the space, there is no way to add a new file system without adding "
"a new disk. With ZFS, creating new file systems is possible at any time. "
"Each <<zfs-term-dataset,_dataset_>> has properties including features like "
"compression, deduplication, caching, and quotas, as well as other useful "
"properties like readonly, case sensitivity, network file sharing, and a "
"mount point. Nesting datasets within each other is possible and child "
"datasets will inherit properties from their ancestors. <<zfs-zfs-allow,"
"Delegate>>, <<zfs-zfs-send,replicate>>, <<zfs-zfs-snapshot,snapshot>>, <<zfs-"
"zfs-jail,jail>> allows administering and destroying each dataset as a unit. "
"Creating a separate dataset for each different type or set of files has "
"advantages. The drawbacks to having a large number of datasets are that "
"some commands like `zfs list` will be slower, and that mounting of hundreds "
"or even thousands of datasets will slow the FreeBSD boot process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1474
msgid ""
"Create a new dataset and enable <<zfs-term-compression-lz4,LZ4 compression>> "
"on it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1509
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.20M 93.2G 608K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs create -o compress=lz4 mypool/usr/mydataset\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 704K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/mydataset 87.5K 93.2G 87.5K /usr/mydataset\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.20M 93.2G 610K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1512
msgid ""
"Destroying a dataset is much quicker than deleting the files on the dataset, "
"as it does not involve scanning the files and updating the corresponding "
"metadata."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1514
msgid "Destroy the created dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1549
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 880M 93.1G 144K none\n"
"mypool/ROOT 777M 93.1G 144K none\n"
"mypool/ROOT/default 777M 93.1G 777M /\n"
"mypool/tmp 176K 93.1G 176K /tmp\n"
"mypool/usr 101M 93.1G 144K /usr\n"
"mypool/usr/home 184K 93.1G 184K /usr/home\n"
"mypool/usr/mydataset 100M 93.1G 100M /usr/mydataset\n"
"mypool/usr/ports 144K 93.1G 144K /usr/ports\n"
"mypool/usr/src 144K 93.1G 144K /usr/src\n"
"mypool/var 1.20M 93.1G 610K /var\n"
"mypool/var/crash 148K 93.1G 148K /var/crash\n"
"mypool/var/log 178K 93.1G 178K /var/log\n"
"mypool/var/mail 144K 93.1G 144K /var/mail\n"
"mypool/var/tmp 152K 93.1G 152K /var/tmp\n"
"# zfs destroy mypool/usr/mydataset\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 781M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.21M 93.2G 612K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1557
msgid ""
"In modern versions of ZFS, `zfs destroy` is asynchronous, and the free space "
"might take minutes to appear in the pool. Use `zpool get freeing "
"_poolname_` to see the `freeing` property, that shows which datasets are "
"having their blocks freed in the background. If there are child datasets, "
"like <<zfs-term-snapshot,snapshots>> or other datasets, destroying the "
"parent is impossible. To destroy a dataset and its children, use `-r` to "
"recursively destroy the dataset and its children. Use `-n -v` to list "
"datasets and snapshots destroyed by this operation, without actually destroy "
"anything. Space reclaimed by destroying snapshots is also shown."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1559
#, no-wrap
msgid "Creating and Destroying Volumes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1564
msgid ""
"A volume is a special dataset type. Rather than mounting as a file system, "
"expose it as a block device under [.filename]#/dev/zvol/poolname/dataset#. "
"This allows using the volume for other file systems, to back the disks of a "
"virtual machine, or to make it available to other network hosts using "
"protocols like iSCSI or HAST."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1569
msgid ""
"Format a volume with any file system or without a file system to store raw "
"data. To the user, a volume appears to be a regular disk. Putting ordinary "
"file systems on these _zvols_ provides features that ordinary disks or file "
"systems do not have. For example, using the compression property on a 250 "
"MB volume allows creation of a compressed FAT file system."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1583
#, no-wrap
msgid ""
"# zfs create -V 250m -o compression=on tank/fat32\n"
"# zfs list tank\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"tank 258M 670M 31K /tank\n"
"# newfs_msdos -F32 /dev/zvol/tank/fat32\n"
"# mount -t msdosfs /dev/zvol/tank/fat32 /mnt\n"
"# df -h /mnt | grep fat32\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"/dev/zvol/tank/fat32 249M 24k 249M 0% /mnt\n"
"# mount | grep fat32\n"
"/dev/zvol/tank/fat32 on /mnt (msdosfs, local)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1587
msgid ""
"Destroying a volume is much the same as destroying a regular file system "
"dataset. The operation is nearly instantaneous, but it may take minutes to "
"reclaim the free space in the background."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1589
#, no-wrap
msgid "Renaming a Dataset"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1596
msgid ""
"To change the name of a dataset, use `zfs rename`. To change the parent of "
"a dataset, use this command as well. Renaming a dataset to have a different "
"parent dataset will change the value of those properties inherited from the "
"parent dataset. Renaming a dataset unmounts then remounts it in the new "
"location (inherited from the new parent dataset). To prevent this behavior, "
"use `-u`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1598
msgid "Rename a dataset and move it to be under a different parent dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1634
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 704K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/mydataset 87.5K 93.2G 87.5K /usr/mydataset\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.21M 93.2G 614K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs rename mypool/usr/mydataset mypool/var/newname\n"
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.29M 93.2G 614K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/newname 87.5K 93.2G 87.5K /var/newname\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1639
msgid ""
"Renaming snapshots uses the same command. Due to the nature of snapshots, "
"rename cannot change their parent dataset. To rename a recursive snapshot, "
"specify `-r`; this will also rename all snapshots with the same name in "
"child datasets."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1649
#, no-wrap
msgid ""
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/newname@first_snapshot 0 - 87.5K -\n"
"# zfs rename mypool/var/newname@first_snapshot new_snapshot_name\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1652
#, no-wrap
msgid "Setting Dataset Properties"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1662
msgid ""
"Each ZFS dataset has properties that control its behavior. Most properties "
"are automatically inherited from the parent dataset, but can be overridden "
"locally. Set a property on a dataset with `zfs set _property=value "
"dataset_`. Most properties have a limited set of valid values, `zfs get` "
"will display each possible property and valid values. Using `zfs inherit` "
"reverts most properties to their inherited values. User-defined properties "
"are also possible. They become part of the dataset configuration and "
"provide further information about the dataset or its contents. To "
"distinguish these custom properties from the ones supplied as part of ZFS, "
"use a colon (`:`) to create a custom namespace for the property."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1669
#, no-wrap
msgid ""
"# zfs set custom:costcenter=1234 tank\n"
"# zfs get custom:costcenter tank\n"
"NAME PROPERTY VALUE SOURCE\n"
"tank custom:costcenter 1234 local\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1673
msgid ""
"To remove a custom property, use `zfs inherit` with `-r`. If the custom "
"property is not defined in any of the parent datasets, this option removes "
"it (but the pool's history still records the change)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1682
#, no-wrap
msgid ""
"# zfs inherit -r custom:costcenter tank\n"
"# zfs get custom:costcenter tank\n"
"NAME PROPERTY VALUE SOURCE\n"
"tank custom:costcenter - -\n"
"# zfs get all tank | grep custom:costcenter\n"
"#\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1685
#, no-wrap
msgid "Getting and Setting Share Properties"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1691
msgid ""
"Two commonly used and useful dataset properties are the NFS and SMB share "
"options. Setting these defines if and how ZFS shares datasets on the "
"network. At present, FreeBSD supports setting NFS sharing alone. To get "
"the current status of a share, enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1700
#, no-wrap
msgid ""
"# zfs get sharenfs mypool/usr/home\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/usr/home sharenfs on local\n"
"# zfs get sharesmb mypool/usr/home\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/usr/home sharesmb off local\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1703
msgid "To enable sharing of a dataset, enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1707
#, no-wrap
msgid "# zfs set sharenfs=on mypool/usr/home\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1711
msgid ""
"Set other options for sharing datasets through NFS, such as `-alldirs`, `-"
"maproot` and `-network`. To set options on a dataset shared through NFS, "
"enter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1715
#, no-wrap
msgid "# zfs set sharenfs=\"-alldirs,-maproot=root,-network=192.168.1.0/24\" mypool/usr/home\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:1718
#, no-wrap
msgid "Managing Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1732
msgid ""
"<<zfs-term-snapshot,Snapshots>> are one of the most powerful features of "
"ZFS. A snapshot provides a read-only, point-in-time copy of the dataset. "
"With Copy-On-Write (COW), ZFS creates snapshots fast by preserving older "
"versions of the data on disk. If no snapshots exist, ZFS reclaims space for "
"future use when data is rewritten or deleted. Snapshots preserve disk space "
"by recording just the differences between the current dataset and a previous "
"version. Allowing snapshots on whole datasets, not on individual files or "
"directories. A snapshot from a dataset duplicates everything contained in "
"it. This includes the file system properties, files, directories, "
"permissions, and so on. Snapshots use no extra space when first created, "
"but consume space as the blocks they reference change. Recursive snapshots "
"taken with `-r` create snapshots with the same name on the dataset and its "
"children, providing a consistent moment-in-time snapshot of the file "
"systems. This can be important when an application has files on related "
"datasets or that depend upon each other. Without snapshots, a backup would "
"have copies of the files from different points in time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1741
msgid ""
"Snapshots in ZFS provide a variety of features that even other file systems "
"with snapshot functionality lack. A typical example of snapshot use is as a "
"quick way of backing up the current state of the file system when performing "
"a risky action like a software installation or a system upgrade. If the "
"action fails, rolling back to the snapshot returns the system to the same "
"state when creating the snapshot. If the upgrade was successful, delete the "
"snapshot to free up space. Without snapshots, a failed upgrade often "
"requires restoring backups, which is tedious, time consuming, and may "
"require downtime during which the system is unusable. Rolling back to "
"snapshots is fast, even while the system is running in normal operation, "
"with little or no downtime. The time savings are enormous with multi-"
"terabyte storage systems considering the time required to copy the data from "
"backup. Snapshots are not a replacement for a complete backup of a pool, "
"but offer a quick and easy way to store a dataset copy at a specific time."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1743
#, no-wrap
msgid "Creating Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1747
msgid ""
"To create snapshots, use `zfs snapshot _dataset_@_snapshotname_`. Adding `-"
"r` creates a snapshot recursively, with the same name on all child datasets."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1749
msgid "Create a recursive snapshot of the entire pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1787
#, no-wrap
msgid ""
"# zfs list -t all\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool 780M 93.2G 144K none\n"
"mypool/ROOT 777M 93.2G 144K none\n"
"mypool/ROOT/default 777M 93.2G 777M /\n"
"mypool/tmp 176K 93.2G 176K /tmp\n"
"mypool/usr 616K 93.2G 144K /usr\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/ports 144K 93.2G 144K /usr/ports\n"
"mypool/usr/src 144K 93.2G 144K /usr/src\n"
"mypool/var 1.29M 93.2G 616K /var\n"
"mypool/var/crash 148K 93.2G 148K /var/crash\n"
"mypool/var/log 178K 93.2G 178K /var/log\n"
"mypool/var/mail 144K 93.2G 144K /var/mail\n"
"mypool/var/newname 87.5K 93.2G 87.5K /var/newname\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
"mypool/var/tmp 152K 93.2G 152K /var/tmp\n"
"# zfs snapshot -r mypool@my_recursive_snapshot\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@my_recursive_snapshot 0 - 144K -\n"
"mypool/ROOT@my_recursive_snapshot 0 - 144K -\n"
"mypool/ROOT/default@my_recursive_snapshot 0 - 777M -\n"
"mypool/tmp@my_recursive_snapshot 0 - 176K -\n"
"mypool/usr@my_recursive_snapshot 0 - 144K -\n"
"mypool/usr/home@my_recursive_snapshot 0 - 184K -\n"
"mypool/usr/ports@my_recursive_snapshot 0 - 144K -\n"
"mypool/usr/src@my_recursive_snapshot 0 - 144K -\n"
"mypool/var@my_recursive_snapshot 0 - 616K -\n"
"mypool/var/crash@my_recursive_snapshot 0 - 148K -\n"
"mypool/var/log@my_recursive_snapshot 0 - 178K -\n"
"mypool/var/mail@my_recursive_snapshot 0 - 144K -\n"
"mypool/var/newname@new_snapshot_name 0 - 87.5K -\n"
"mypool/var/newname@my_recursive_snapshot 0 - 87.5K -\n"
"mypool/var/tmp@my_recursive_snapshot 0 - 152K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1792
msgid ""
"Snapshots are not shown by a normal `zfs list` operation. To list "
"snapshots, append `-t snapshot` to `zfs list`. `-t all` displays both file "
"systems and snapshots."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1796
msgid ""
"Snapshots are not mounted directly, showing no path in the `MOUNTPOINT` "
"column. ZFS does not mention available disk space in the `AVAIL` column, as "
"snapshots are read-only after their creation. Compare the snapshot to the "
"original dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1803
#, no-wrap
msgid ""
"# zfs list -rt all mypool/usr/home\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/usr/home 184K 93.2G 184K /usr/home\n"
"mypool/usr/home@my_recursive_snapshot 0 - 184K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1809
msgid ""
"Displaying both the dataset and the snapshot together reveals how snapshots "
"work in <<zfs-term-cow,COW>> fashion. They save the changes (_delta_) made "
"and not the complete file system contents all over again. This means that "
"snapshots take little space when making changes. Observe space usage even "
"more by copying a file to the dataset, then creating a second snapshot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1819
#, no-wrap
msgid ""
"# cp /etc/passwd /var/tmp\n"
"# zfs snapshot mypool/var/tmp@after_cp\n"
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 206K 93.2G 118K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 0 - 118K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1824
msgid ""
"The second snapshot contains the changes to the dataset after the copy "
"operation. This yields enormous space savings. Notice that the size of the "
"snapshot `_mypool/var/tmp@my_recursive_snapshot_` also changed in the `USED` "
"column to show the changes between itself and the snapshot taken afterwards."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1826
#, no-wrap
msgid "Comparing Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1832
msgid ""
"ZFS provides a built-in command to compare the differences in content "
"between two snapshots. This is helpful with a lot of snapshots taken over "
"time when the user wants to see how the file system has changed over time. "
"For example, `zfs diff` lets a user find the latest snapshot that still "
"contains a file deleted by accident. Doing this for the two snapshots "
"created in the previous section yields this output:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1843
#, no-wrap
msgid ""
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 206K 93.2G 118K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 0 - 118K -\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1847
msgid ""
"The command lists the changes between the specified snapshot (in this case "
"`_mypool/var/tmp@my_recursive_snapshot_`) and the live file system. The "
"first column shows the change type:"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1853
#, no-wrap
msgid "+"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1855
#, no-wrap
msgid "Adding the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1856
#, no-wrap
msgid "-"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1858
#, no-wrap
msgid "Deleting the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1859
#, no-wrap
msgid "M"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1861
#, no-wrap
msgid "Modifying the path or file."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1862
#, no-wrap
msgid "R"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:1863
#, no-wrap
msgid "Renaming the path or file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1868
msgid ""
"Comparing the output with the table, it becomes clear that ZFS added [."
"filename]#passwd# after creating the snapshot `_mypool/var/"
"tmp@my_recursive_snapshot_`. This also resulted in a modification to the "
"parent directory mounted at `_/var/tmp_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1870
msgid ""
"Comparing two snapshots is helpful when using the ZFS replication feature to "
"transfer a dataset to a different host for backup purposes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1872
msgid ""
"Compare two snapshots by providing the full dataset name and snapshot name "
"of both datasets:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1884
#, no-wrap
msgid ""
"# cp /var/tmp/passwd /var/tmp/passwd.copy\n"
"# zfs snapshot mypool/var/tmp@diff_snapshot\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot mypool/var/tmp@diff_snapshot\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
"+ /var/tmp/passwd.copy\n"
"# zfs diff mypool/var/tmp@my_recursive_snapshot mypool/var/tmp@after_cp\n"
"M /var/tmp/\n"
"+ /var/tmp/passwd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1888
msgid ""
"A backup administrator can compare two snapshots received from the sending "
"host and determine the actual changes in the dataset. See the <<zfs-zfs-"
"send,Replication>> section for more information."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1890
#, no-wrap
msgid "Snapshot Rollback"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1903
msgid ""
"When at least one snapshot is available, roll back to it at any time. Most "
"often this is the case when the current state of the dataset is no longer "
"and if preferring an older version. Scenarios such as local development "
"tests gone wrong, botched system updates hampering the system functionality, "
"or the need to restore deleted files or directories are all too common "
"occurrences. To roll back a snapshot, use `zfs rollback _snapshotname_`. "
"If a lot of changes are present, the operation will take a long time. "
"During that time, the dataset always remains in a consistent state, much "
"like a database that conforms to ACID principles is performing a rollback. "
"This is happening while the dataset is live and accessible without requiring "
"a downtime. Once the snapshot rolled back, the dataset has the same state "
"as it had when the snapshot was originally taken. Rolling back to a "
"snapshot discards all other data in that dataset not part of the snapshot. "
"Taking a snapshot of the current state of the dataset before rolling back to "
"a previous one is a good idea when requiring some data later. This way, the "
"user can roll back and forth between snapshots without losing data that is "
"still valuable."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1905
msgid ""
"In the first example, roll back a snapshot because of a careless `rm` "
"operation that removes too much data than intended."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1919
#, no-wrap
msgid ""
"# zfs list -rt all mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp 262K 93.2G 120K /var/tmp\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 53.5K - 118K -\n"
"mypool/var/tmp@diff_snapshot 0 - 120K -\n"
"# ls /var/tmp\n"
"passwd passwd.copy vi.recover\n"
"# rm /var/tmp/passwd*\n"
"# ls /var/tmp\n"
"vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1924
msgid ""
"At this point, the user notices the removal of extra files and wants them "
"back. ZFS provides an easy way to get them back using rollbacks, when "
"performing snapshots of important data on a regular basis. To get the files "
"back and start over from the last snapshot, issue the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1930
#, no-wrap
msgid ""
"# zfs rollback mypool/var/tmp@diff_snapshot\n"
"# ls /var/tmp\n"
"passwd passwd.copy vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1935
msgid ""
"The rollback operation restored the dataset to the state of the last "
"snapshot. Rolling back to a snapshot taken much earlier with other "
"snapshots taken afterwards is also possible. When trying to do this, ZFS "
"will issue this warning:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1948
#, no-wrap
msgid ""
"# zfs list -rt snapshot mypool/var/tmp\n"
"AME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp@my_recursive_snapshot 88K - 152K -\n"
"mypool/var/tmp@after_cp 53.5K - 118K -\n"
"mypool/var/tmp@diff_snapshot 0 - 120K -\n"
"# zfs rollback mypool/var/tmp@my_recursive_snapshot\n"
"cannot rollback to 'mypool/var/tmp@my_recursive_snapshot': more recent snapshots exist\n"
"use '-r' to force deletion of the following snapshots:\n"
"mypool/var/tmp@after_cp\n"
"mypool/var/tmp@diff_snapshot\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1955
msgid ""
"This warning means that snapshots exist between the current state of the "
"dataset and the snapshot to which the user wants to roll back. To complete "
"the rollback delete these snapshots. ZFS cannot track all the changes "
"between different states of the dataset, because snapshots are read-only. "
"ZFS will not delete the affected snapshots unless the user specifies `-r` to "
"confirm that this is the desired action. If that is the intention, and "
"understanding the consequences of losing all intermediate snapshots, issue "
"the command:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1964
#, no-wrap
msgid ""
"# zfs rollback -r mypool/var/tmp@my_recursive_snapshot\n"
"# zfs list -rt snapshot mypool/var/tmp\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool/var/tmp@my_recursive_snapshot 8K - 152K -\n"
"# ls /var/tmp\n"
"vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1967
msgid ""
"The output from `zfs list -t snapshot` confirms the removal of the "
"intermediate snapshots as a result of `zfs rollback -r`."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:1969
#, no-wrap
msgid "Restoring Individual Files from Snapshots"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1976
msgid ""
"Snapshots live in a hidden directory under the parent dataset: [.filename]#."
"zfs/snapshots/snapshotname#. By default, these directories will not show "
"even when executing a standard `ls -a` . Although the directory doesn't "
"show, access it like any normal directory. The property named `snapdir` "
"controls whether these hidden directories show up in a directory listing. "
"Setting the property to `visible` allows them to appear in the output of "
"`ls` and other commands that deal with directory contents."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:1987
#, no-wrap
msgid ""
"# zfs get snapdir mypool/var/tmp\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/var/tmp snapdir hidden default\n"
"# ls -a /var/tmp\n"
". .. passwd vi.recover\n"
"# zfs set snapdir=visible mypool/var/tmp\n"
"# ls -a /var/tmp\n"
". .. .zfs passwd vi.recover\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:1992
msgid ""
"Restore individual files to a previous state by copying them from the "
"snapshot back to the parent dataset. The directory structure below [."
"filename]#.zfs/snapshot# has a directory named like the snapshots taken "
"earlier to make it easier to identify them. The next example shows how to "
"restore a file from the hidden [.filename]#.zfs# directory by copying it "
"from the snapshot containing the latest version of the file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2003
#, no-wrap
msgid ""
"# rm /var/tmp/passwd\n"
"# ls -a /var/tmp\n"
". .. .zfs vi.recover\n"
"# ls /var/tmp/.zfs/snapshot\n"
"after_cp my_recursive_snapshot\n"
"# ls /var/tmp/.zfs/snapshot/after_cp\n"
"passwd vi.recover\n"
"# cp /var/tmp/.zfs/snapshot/after_cp/passwd /var/tmp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2010
msgid ""
"Even if the `snapdir` property is set to hidden, running `ls .zfs/snapshot` "
"will still list the contents of that directory. The administrator decides "
"whether to display these directories. This is a per-dataset setting. "
"Copying files or directories from this hidden [.filename]#.zfs/snapshot# is "
"simple enough. Trying it the other way around results in this error:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2015
#, no-wrap
msgid ""
"# cp /etc/rc.conf /var/tmp/.zfs/snapshot/after_cp/\n"
"cp: /var/tmp/.zfs/snapshot/after_cp/rc.conf: Read-only file system\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2019
msgid ""
"The error reminds the user that snapshots are read-only and cannot change "
"after creation. Copying files into and removing them from snapshot "
"directories are both disallowed because that would change the state of the "
"dataset they represent."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2022
msgid ""
"Snapshots consume space based on how much the parent file system has changed "
"since the time of the snapshot. The `written` property of a snapshot tracks "
"the space the snapshot uses."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2026
msgid ""
"To destroy snapshots and reclaim the space, use `zfs destroy "
"_dataset_@_snapshot_`. Adding `-r` recursively removes all snapshots with "
"the same name under the parent dataset. Adding `-n -v` to the command "
"displays a list of the snapshots to be deleted and an estimate of the space "
"it would reclaim without performing the actual destroy operation."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2028
#, no-wrap
msgid "Managing Clones"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2037
msgid ""
"A clone is a copy of a snapshot treated more like a regular dataset. Unlike "
"a snapshot, a clone is writeable and mountable, and has its own properties. "
"After creating a clone using `zfs clone`, destroying the originating "
"snapshot is impossible. To reverse the child/parent relationship between "
"the clone and the snapshot use `zfs promote`. Promoting a clone makes the "
"snapshot become a child of the clone, rather than of the original parent "
"dataset. This will change how ZFS accounts for the space, but not actually "
"change the amount of space consumed. Mounting the clone anywhere within the "
"ZFS file system hierarchy is possible, not only below the original location "
"of the snapshot."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2039
msgid "To show the clone feature use this example dataset:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2047
#, no-wrap
msgid ""
"# zfs list -rt all camino/home/joe\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"camino/home/joe 108K 1.3G 87K /usr/home/joe\n"
"camino/home/joe@plans 21K - 85.5K -\n"
"camino/home/joe@backup 0K - 87K -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2053
msgid ""
"A typical use for clones is to experiment with a specific dataset while "
"keeping the snapshot around to fall back to in case something goes wrong. "
"Since snapshots cannot change, create a read/write clone of a snapshot. "
"After achieving the desired result in the clone, promote the clone to a "
"dataset and remove the old file system. Removing the parent dataset is not "
"strictly necessary, as the clone and dataset can coexist without problems."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2060
#, no-wrap
msgid ""
"# zfs clone camino/home/joe@backup camino/home/joenew\n"
"# ls /usr/home/joe*\n"
"/usr/home/joe:\n"
"backup.txz plans.txt\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2067
#, no-wrap
msgid ""
"/usr/home/joenew:\n"
"backup.txz plans.txt\n"
"# df -h /usr/home\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"usr/home/joe 1.3G 31k 1.3G 0% /usr/home/joe\n"
"usr/home/joenew 1.3G 31k 1.3G 0% /usr/home/joenew\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2076
msgid ""
"Creating a clone makes it an exact copy of the state the dataset as it was "
"when taking the snapshot. Changing the clone independently from its "
"originating dataset is possible now. The connection between the two is the "
"snapshot. ZFS records this connection in the property `origin`. Promoting "
"the clone with `zfs promote` makes the clone an independent dataset. This "
"removes the value of the `origin` property and disconnects the newly "
"independent dataset from the snapshot. This example shows it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2086
#, no-wrap
msgid ""
"# zfs get origin camino/home/joenew\n"
"NAME PROPERTY VALUE SOURCE\n"
"camino/home/joenew origin camino/home/joe@backup -\n"
"# zfs promote camino/home/joenew\n"
"# zfs get origin camino/home/joenew\n"
"NAME PROPERTY VALUE SOURCE\n"
"camino/home/joenew origin - -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2091
msgid ""
"After making some changes like copying [.filename]#loader.conf# to the "
"promoted clone, for example, the old directory becomes obsolete in this "
"case. Instead, the promoted clone can replace it. To do this, `zfs "
"destroy` the old dataset first and then `zfs rename` the clone to the old "
"dataset name (or to an entirely different name)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2102
#, no-wrap
msgid ""
"# cp /boot/defaults/loader.conf /usr/home/joenew\n"
"# zfs destroy -f camino/home/joe\n"
"# zfs rename camino/home/joenew camino/home/joe\n"
"# ls /usr/home/joe\n"
"backup.txz loader.conf plans.txt\n"
"# df -h /usr/home\n"
"Filesystem Size Used Avail Capacity Mounted on\n"
"usr/home/joe 1.3G 128k 1.3G 0% /usr/home/joe\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2111
msgid ""
"The cloned snapshot is now an ordinary dataset. It contains all the data "
"from the original snapshot plus the files added to it like [."
"filename]#loader.conf#. Clones provide useful features to ZFS users in "
"different scenarios. For example, provide jails as snapshots containing "
"different sets of installed applications. Users can clone these snapshots "
"and add their own applications as they see fit. Once satisfied with the "
"changes, promote the clones to full datasets and provide them to end users "
"to work with like they would with a real dataset. This saves time and "
"administrative overhead when providing these jails."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2113
#, no-wrap
msgid "Replication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2121
msgid ""
"Keeping data on a single pool in one location exposes it to risks like theft "
"and natural or human disasters. Making regular backups of the entire pool "
"is vital. ZFS provides a built-in serialization feature that can send a "
"stream representation of the data to standard output. Using this feature, "
"storing this data on another pool connected to the local system is possible, "
"as is sending it over a network to another system. Snapshots are the basis "
"for this replication (see the section on <<zfs-zfs-snapshot,ZFS "
"snapshots>>). The commands used for replicating data are `zfs send` and "
"`zfs receive`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2123
msgid "These examples show ZFS replication with these two pools:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2130
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 77K 896M - - 0% 0% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2138
msgid ""
"The pool named _mypool_ is the primary pool where writing and reading data "
"happens on a regular basis. Using a second standby pool _backup_ in case "
"the primary pool becomes unavailable. Note that this fail-over is not done "
"automatically by ZFS, but must be manually done by a system administrator "
"when needed. Use a snapshot to provide a consistent file system version to "
"replicate. After creating a snapshot of _mypool_, copy it to the _backup_ "
"pool by replicating snapshots. This does not include changes made since the "
"most recent snapshot."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2145
#, no-wrap
msgid ""
"# zfs snapshot mypool@backup1\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@backup1 0 - 43.6M -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2150
msgid ""
"Now that a snapshot exists, use `zfs send` to create a stream representing "
"the contents of the snapshot. Store this stream as a file or receive it on "
"another pool. Write the stream to standard output, but redirect to a file "
"or pipe or an error appears:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2156
#, no-wrap
msgid ""
"# zfs send mypool@backup1\n"
"Error: Stream can not be written to a terminal.\n"
"You must redirect standard output.\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2160
msgid ""
"To back up a dataset with `zfs send`, redirect to a file located on the "
"mounted backup pool. Ensure that the pool has enough free space to "
"accommodate the size of the sent snapshot, which means the data contained in "
"the snapshot, not the changes from the previous snapshot."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2168
#, no-wrap
msgid ""
"# zfs send mypool@backup1 > /backup/backup1\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 63.7M 896M - - 0% 6% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2172
msgid ""
"The `zfs send` transferred all the data in the snapshot called _backup1_ to "
"the pool named _backup_. To create and send these snapshots automatically, "
"use a man:cron[8] job."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2178
msgid ""
"Instead of storing the backups as archive files, ZFS can receive them as a "
"live file system, allowing direct access to the backed up data. To get to "
"the actual data contained in those streams, use `zfs receive` to transform "
"the streams back into files and directories. The example below combines "
"`zfs send` and `zfs receive` using a pipe to copy the data from one pool to "
"another. Use the data directly on the receiving pool after the transfer is "
"complete. It is only possible to replicate a dataset to an empty dataset."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2186
#, no-wrap
msgid ""
"# zfs snapshot mypool@replica1\n"
"# zfs send -v mypool@replica1 | zfs receive backup/mypool\n"
"send from @ to mypool@replica1 estimated size is 50.1M\n"
"total estimated size is 50.1M\n"
"TIME SENT SNAPSHOT\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2191
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 63.7M 896M - - 0% 6% 1.00x ONLINE -\n"
"mypool 984M 43.7M 940M - - 0% 4% 1.00x ONLINE -\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2194
#, no-wrap
msgid "Incremental Backups"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2199
msgid ""
"`zfs send` can also determine the difference between two snapshots and send "
"individual differences between the two. This saves disk space and transfer "
"time. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2211
#, no-wrap
msgid ""
"# zfs snapshot mypool@replica2\n"
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"mypool@replica1 5.72M - 43.6M -\n"
"mypool@replica2 0 - 44.1M -\n"
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 61.7M 898M - - 0% 6% 1.00x ONLINE -\n"
"mypool 960M 50.2M 910M - - 0% 5% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2217
msgid ""
"Create a second snapshot called _replica2_. This second snapshot contains "
"changes made to the file system between now and the previous snapshot, "
"_replica1_. Using `zfs send -i` and indicating the pair of snapshots "
"generates an incremental replica stream containing the changed data. This "
"succeeds if the initial snapshot already exists on the receiving side."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2224
#, no-wrap
msgid ""
"# zfs send -v -i mypool@replica1 mypool@replica2 | zfs receive /backup/mypool\n"
"send from @replica1 to mypool@replica2 estimated size is 5.02M\n"
"total estimated size is 5.02M\n"
"TIME SENT SNAPSHOT\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2229
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"backup 960M 80.8M 879M - - 0% 8% 1.00x ONLINE -\n"
"mypool 960M 50.2M 910M - - 0% 5% 1.00x ONLINE -\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2235
#, no-wrap
msgid ""
"# zfs list\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"backup 55.4M 240G 152K /backup\n"
"backup/mypool 55.3M 240G 55.2M /backup/mypool\n"
"mypool 55.6M 11.6G 55.0M /mypool\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2242
#, no-wrap
msgid ""
"# zfs list -t snapshot\n"
"NAME USED AVAIL REFER MOUNTPOINT\n"
"backup/mypool@replica1 104K - 50.2M -\n"
"backup/mypool@replica2 0 - 55.2M -\n"
"mypool@replica1 29.9K - 50.0M -\n"
"mypool@replica2 0 - 55.0M -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2247
msgid ""
"The incremental stream replicated the changed data rather than the entirety "
"of _replica1_. Sending the differences alone took much less time to "
"transfer and saved disk space by not copying the whole pool each time. This "
"is useful when replicating over a slow network or one charging per "
"transferred byte."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2252
msgid ""
"A new file system, _backup/mypool_, is available with the files and data "
"from the pool _mypool_. Specifying `-p` copies the dataset properties "
"including compression settings, quotas, and mount points. Specifying `-R` "
"copies all child datasets of the dataset along with their properties. "
"Automate sending and receiving to create regular backups on the second pool."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2254
#, no-wrap
msgid "Sending Encrypted Backups over SSH"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2262
msgid ""
"Sending streams over the network is a good way to keep a remote backup, but "
"it does come with a drawback. Data sent over the network link is not "
"encrypted, allowing anyone to intercept and transform the streams back into "
"data without the knowledge of the sending user. This is undesirable when "
"sending the streams over the internet to a remote host. Use SSH to securely "
"encrypt data sent over a network connection. Since ZFS requires redirecting "
"the stream from standard output, piping it through SSH is easy. To keep the "
"contents of the file system encrypted in transit and on the remote system, "
"consider using https://wiki.freebsd.org/PEFS[PEFS]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2265
msgid ""
"Change some settings and take security precautions first. This describes "
"the necessary steps required for the `zfs send` operation; for more "
"information on SSH, see crossref:security[openssh,\"OpenSSH\"]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2267
msgid "Change the configuration as follows:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2269
msgid ""
"Passwordless SSH access between sending and receiving host using SSH keys"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2270
msgid ""
"ZFS requires the privileges of the `root` user to send and receive streams. "
"This requires logging in to the receiving system as `root`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2271
msgid "Security reasons prevent `root` from logging in by default."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2273
msgid ""
"Use the <<zfs-zfs-allow,ZFS Delegation>> system to allow a non-`root` user "
"on each system to perform the respective send and receive operations. On "
"the sending system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2277
#, no-wrap
msgid "# zfs allow -u someuser send,snapshot mypool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2280
msgid ""
"To mount the pool, the unprivileged user must own the directory, and regular "
"users need permission to mount file systems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2282
msgid "On the receiving system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2291
#, no-wrap
msgid ""
"# sysctl vfs.usermount=1\n"
"vfs.usermount: 0 -> 1\n"
"# echo vfs.usermount=1 >> /etc/sysctl.conf\n"
"# zfs create recvpool/backup\n"
"# zfs allow -u someuser create,mount,receive recvpool/backup\n"
"# chown someuser /recvpool/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2294
msgid ""
"The unprivileged user can receive and mount datasets now, and replicates the "
"_home_ dataset to the remote system:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2299
#, no-wrap
msgid ""
"% zfs snapshot -r mypool/home@monday\n"
"% zfs send -R mypool/home@monday | ssh someuser@backuphost zfs recv -dvu recvpool/backup\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2309
msgid ""
"Create a recursive snapshot called _monday_ of the file system dataset "
"_home_ on the pool _mypool_. Then `zfs send -R` includes the dataset, all "
"child datasets, snapshots, clones, and settings in the stream. Pipe the "
"output through SSH to the waiting `zfs receive` on the remote host "
"_backuphost_. Using an IP address or fully qualified domain name is good "
"practice. The receiving machine writes the data to the _backup_ dataset on "
"the _recvpool_ pool. Adding `-d` to `zfs recv` overwrites the name of the "
"pool on the receiving side with the name of the snapshot. `-u` causes the "
"file systems to not mount on the receiving side. Using `-v` shows more "
"details about the transfer, including the elapsed time and the amount of "
"data transferred."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2311
#, no-wrap
msgid "Dataset, User, and Group Quotas"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2316
msgid ""
"Use <<zfs-term-quota,Dataset quotas>> to restrict the amount of space "
"consumed by a particular dataset. <<zfs-term-refquota,Reference Quotas>> "
"work in much the same way, but count the space used by the dataset itself, "
"excluding snapshots and child datasets. Similarly, use <<zfs-term-userquota,"
"user>> and <<zfs-term-groupquota,group>> quotas to prevent users or groups "
"from using up all the space in the pool or dataset."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2321
msgid ""
"The following examples assume that the users already exist in the system. "
"Before adding a user to the system, make sure to create their home dataset "
"first and set the `mountpoint` to `/home/_bob_`. Then, create the user and "
"make the home directory point to the dataset's `mountpoint` location. This "
"will properly set owner and group permissions without shadowing any pre-"
"existing home directory paths that might exist."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2323
msgid "To enforce a dataset quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2327
#, no-wrap
msgid "# zfs set quota=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2330
msgid ""
"To enforce a reference quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2334
#, no-wrap
msgid "# zfs set refquota=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2337
msgid "To remove a quota of 10 GB for [.filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2341
#, no-wrap
msgid "# zfs set quota=none storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2344
msgid ""
"The general format is `userquota@_user_=_size_`, and the user's name must be "
"in one of these formats:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2346
msgid "POSIX compatible name such as _joe_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2347
msgid "POSIX numeric ID such as _789_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2348
msgid "SID name such as _joe.bloggs@example.com_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2349
msgid "SID numeric ID such as _S-1-123-456-789_."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2351
msgid "For example, to enforce a user quota of 50 GB for the user named _joe_:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2355
#, no-wrap
msgid "# zfs set userquota@joe=50G\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2358
msgid "To remove any quota:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2362
#, no-wrap
msgid "# zfs set userquota@joe=none\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2369
msgid ""
"User quota properties are not displayed by `zfs get all`. Non-`root` users "
"can't see other's quotas unless granted the `userquota` privilege. Users "
"with this privilege are able to view and set everyone's quota."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2372
msgid ""
"The general format for setting a group quota is: `groupquota@_group_=_size_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2374
msgid "To set the quota for the group _firstgroup_ to 50 GB, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2378
#, no-wrap
msgid "# zfs set groupquota@firstgroup=50G\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2381
msgid ""
"To remove the quota for the group _firstgroup_, or to make sure that one is "
"not set, instead use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2385
#, no-wrap
msgid "# zfs set groupquota@firstgroup=none\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2389
msgid ""
"As with the user quota property, non-`root` users can see the quotas "
"associated with the groups to which they belong. A user with the "
"`groupquota` privilege or `root` can view and set all quotas for all groups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2393
msgid ""
"To display the amount of space used by each user on a file system or "
"snapshot along with any quotas, use `zfs userspace`. For group information, "
"use `zfs groupspace`. For more information about supported options or how "
"to display specific options alone, refer to man:zfs[1]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2395
msgid ""
"Privileged users and `root` can list the quota for [.filename]#storage/home/"
"bob# using:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2399
#, no-wrap
msgid "# zfs get quota storage/home/bob\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2402
#, no-wrap
msgid "Reservations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2407
msgid ""
"<<zfs-term-reservation,Reservations>> guarantee an always-available amount "
"of space on a dataset. The reserved space will not be available to any "
"other dataset. This useful feature ensures that free space is available for "
"an important dataset or log files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2409
msgid ""
"The general format of the `reservation` property is `reservation=_size_`, so "
"to set a reservation of 10 GB on [.filename]#storage/home/bob#, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2413
#, no-wrap
msgid "# zfs set reservation=10G storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2416
msgid "To clear any reservation:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2420
#, no-wrap
msgid "# zfs set reservation=none storage/home/bob\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2423
msgid ""
"The same principle applies to the `refreservation` property for setting a "
"<<zfs-term-refreservation,Reference Reservation>>, with the general format "
"`refreservation=_size_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2425
msgid ""
"This command shows any reservations or refreservations that exist on [."
"filename]#storage/home/bob#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2430
#, no-wrap
msgid ""
"# zfs get reservation storage/home/bob\n"
"# zfs get refreservation storage/home/bob\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2433
#, no-wrap
msgid "Compression"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2439
msgid ""
"ZFS provides transparent compression. Compressing data written at the block "
"level saves space and also increases disk throughput. If data compresses by "
"25% the compressed data writes to the disk at the same rate as the "
"uncompressed version, resulting in an effective write speed of 125%. "
"Compression can also be a great alternative to <<zfs-zfs-deduplication,"
"Deduplication>> because it does not require extra memory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2445
msgid ""
"ZFS offers different compression algorithms, each with different trade-"
"offs. The introduction of LZ4 compression in ZFS v5000 enables compressing "
"the entire pool without the large performance trade-off of other "
"algorithms. The biggest advantage to LZ4 is the _early abort_ feature. If "
"LZ4 does not achieve at least 12.5% compression in the header part of the "
"data, ZFS writes the block uncompressed to avoid wasting CPU cycles trying "
"to compress data that is either already compressed or uncompressible. For "
"details about the different compression algorithms available in ZFS, see the "
"<<zfs-term-compression,Compression>> entry in the terminology section."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2447
msgid ""
"The administrator can see the effectiveness of compression using dataset "
"properties."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2456
#, no-wrap
msgid ""
"# zfs get used,compressratio,compression,logicalused mypool/compressed_dataset\n"
"NAME PROPERTY VALUE SOURCE\n"
"mypool/compressed_dataset used 449G -\n"
"mypool/compressed_dataset compressratio 1.11x -\n"
"mypool/compressed_dataset compression lz4 local\n"
"mypool/compressed_dataset logicalused 496G -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2461
msgid ""
"The dataset is using 449 GB of space (the used property). Without "
"compression, it would have taken 496 GB of space (the `logicalused` "
"property). This results in a 1.11:1 compression ratio."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2467
msgid ""
"Compression can have an unexpected side effect when combined with <<zfs-term-"
"userquota,User Quotas>>. User quotas restrict how much actual space a user "
"consumes on a dataset _after compression_. If a user has a quota of 10 GB, "
"and writes 10 GB of compressible data, they will still be able to store more "
"data. If they later update a file, say a database, with more or less "
"compressible data, the amount of space available to them will change. This "
"can result in the odd situation where a user did not increase the actual "
"amount of data (the `logicalused` property), but the change in compression "
"caused them to reach their quota limit."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2471
msgid ""
"Compression can have a similar unexpected interaction with backups. Quotas "
"are often used to limit data storage to ensure there is enough backup space "
"available. Since quotas do not consider compression ZFS may write more data "
"than would fit with uncompressed backups."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2473
#, no-wrap
msgid "Zstandard Compression"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2477
msgid ""
"OpenZFS 2.0 added a new compression algorithm. Zstandard (Zstd) offers "
"higher compression ratios than the default LZ4 while offering much greater "
"speeds than the alternative, gzip. OpenZFS 2.0 is available starting with "
"FreeBSD 12.1-RELEASE via package:sysutils/openzfs[] and has been the default "
"in since FreeBSD 13.0-RELEASE."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2481
msgid ""
"Zstd provides a large selection of compression levels, providing fine-"
"grained control over performance versus compression ratio. One of the main "
"advantages of Zstd is that the decompression speed is independent of the "
"compression level. For data written once but read often, Zstd allows the "
"use of the highest compression levels without a read performance penalty."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2486
msgid ""
"Even with frequent data updates, enabling compression often provides higher "
"performance. One of the biggest advantages comes from the compressed ARC "
"feature. ZFS's Adaptive Replacement Cache (ARC) caches the compressed "
"version of the data in RAM, decompressing it each time. This allows the "
"same amount of RAM to store more data and metadata, increasing the cache hit "
"ratio."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2492
msgid ""
"ZFS offers 19 levels of Zstd compression, each offering incrementally more "
"space savings in exchange for slower compression. The default level is "
"`zstd-3` and offers greater compression than LZ4 without being much slower. "
"Levels above 10 require large amounts of memory to compress each block and "
"systems with less than 16 GB of RAM should not use them. ZFS uses a "
"selection of the Zstd_fast_ levels also, which get correspondingly faster "
"but supports lower compression ratios. ZFS supports `zstd-fast-1` through "
"`zstd-fast-10`, `zstd-fast-20` through `zstd-fast-100` in increments of 10, "
"and `zstd-fast-500` and `zstd-fast-1000` which provide minimal compression, "
"but offer high performance."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2496
msgid ""
"If ZFS is not able to get the required memory to compress a block with Zstd, "
"it will fall back to storing the block uncompressed. This is unlikely to "
"happen except at the highest levels of Zstd on memory constrained systems. "
"ZFS counts how often this has occurred since loading the ZFS module with "
"`kstat.zfs.misc.zstd.compress_alloc_fail`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2498
#, no-wrap
msgid "Deduplication"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2504
msgid ""
"When enabled, <<zfs-term-deduplication,deduplication>> uses the checksum of "
"each block to detect duplicate blocks. When a new block is a duplicate of "
"an existing block, ZFS writes a new reference to the existing data instead "
"of the whole duplicate block. Tremendous space savings are possible if the "
"data contains a lot of duplicated files or repeated information. Warning: "
"deduplication requires a large amount of memory, and enabling compression "
"instead provides most of the space savings without the extra cost."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2506
msgid "To activate deduplication, set the `dedup` property on the target pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2510
#, no-wrap
msgid "# zfs set dedup=on pool\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2515
msgid ""
"Deduplicating only affects new data written to the pool. Merely activating "
"this option will not deduplicate data already written to the pool. A pool "
"with a freshly activated deduplication property will look like this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2521
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"pool 2.84G 2.19M 2.83G - - 0% 0% 1.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2526
msgid ""
"The `DEDUP` column shows the actual rate of deduplication for the pool. A "
"value of `1.00x` shows that data has not deduplicated yet. The next example "
"copies some system binaries three times into different directories on the "
"deduplicated pool created above."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2532
#, no-wrap
msgid ""
"# for d in dir1 dir2 dir3; do\n"
"> mkdir $d && cp -R /usr/bin $d &\n"
"> done\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2535
msgid "To observe deduplicating of redundant data, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2541
#, no-wrap
msgid ""
"# zpool list\n"
"NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT\n"
"pool 2.84G 20.9M 2.82G - - 0% 0% 3.00x ONLINE -\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2546
msgid ""
"The `DEDUP` column shows a factor of `3.00x`. Detecting and deduplicating "
"copies of the data uses a third of the space. The potential for space "
"savings can be enormous, but comes at the cost of having enough memory to "
"keep track of the deduplicated blocks."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2549
msgid ""
"Deduplication is not always beneficial when the data in a pool is not "
"redundant. ZFS can show potential space savings by simulating deduplication "
"on an existing pool:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2554
#, no-wrap
msgid ""
"# zdb -S pool\n"
"Simulated DDT histogram:\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2570
#, no-wrap
msgid ""
"bucket allocated referenced\n"
"______ ______________________________ ______________________________\n"
"refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE\n"
"------ ------ ----- ----- ----- ------ ----- ----- -----\n"
" 1 2.58M 289G 264G 264G 2.58M 289G 264G 264G\n"
" 2 206K 12.6G 10.4G 10.4G 430K 26.4G 21.6G 21.6G\n"
" 4 37.6K 692M 276M 276M 170K 3.04G 1.26G 1.26G\n"
" 8 2.18K 45.2M 19.4M 19.4M 20.0K 425M 176M 176M\n"
" 16 174 2.83M 1.20M 1.20M 3.33K 48.4M 20.4M 20.4M\n"
" 32 40 2.17M 222K 222K 1.70K 97.2M 9.91M 9.91M\n"
" 64 9 56K 10.5K 10.5K 865 4.96M 948K 948K\n"
" 128 2 9.50K 2K 2K 419 2.11M 438K 438K\n"
" 256 5 61.5K 12K 12K 1.90K 23.0M 4.47M 4.47M\n"
" 1K 2 1K 1K 1K 2.98K 1.49M 1.49M 1.49M\n"
" Total 2.82M 303G 275G 275G 3.20M 319G 287G 287G\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2572
#, no-wrap
msgid "dedup = 1.05, compress = 1.11, copies = 1.00, dedup * compress / copies = 1.16\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2581
msgid ""
"After `zdb -S` finishes analyzing the pool, it shows the space reduction "
"ratio that activating deduplication would achieve. In this case, `1.16` is "
"a poor space saving ratio mainly provided by compression. Activating "
"deduplication on this pool would not save any amount of space, and is not "
"worth the amount of memory required to enable deduplication. Using the "
"formula _ratio = dedup * compress / copies_, system administrators can plan "
"the storage allocation, deciding whether the workload will contain enough "
"duplicate blocks to justify the memory requirements. If the data is "
"reasonably compressible, the space savings may be good. Good practice is to "
"enable compression first as compression also provides greatly increased "
"performance. Enable deduplication in cases where savings are considerable "
"and with enough available memory for the <<zfs-term-deduplication,DDT>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2583
#, no-wrap
msgid "ZFS and Jails"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2589
msgid ""
"Use `zfs jail` and the corresponding `jailed` property to delegate a ZFS "
"dataset to a crossref:jails[jails,Jail]. `zfs jail _jailid_` attaches a "
"dataset to the specified jail, and `zfs unjail` detaches it. To control the "
"dataset from within a jail, set the `jailed` property. ZFS forbids mounting "
"a jailed dataset on the host because it may have mount points that would "
"compromise the security of the host."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2591
#, no-wrap
msgid "Delegated Administration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2599
msgid ""
"A comprehensive permission delegation system allows unprivileged users to "
"perform ZFS administration functions. For example, if each user's home "
"directory is a dataset, users need permission to create and destroy "
"snapshots of their home directories. A user performing backups can get "
"permission to use replication features. ZFS allows a usage statistics "
"script to run with access to only the space usage data for all users. "
"Delegating the ability to delegate permissions is also possible. Permission "
"delegation is possible for each subcommand and most properties."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2601
#, no-wrap
msgid "Delegating Dataset Creation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2607
msgid ""
"`zfs allow _someuser_ create _mydataset_` gives the specified user "
"permission to create child datasets under the selected parent dataset. A "
"caveat: creating a new dataset involves mounting it. That requires setting "
"the FreeBSD `vfs.usermount` man:sysctl[8] to `1` to allow non-root users to "
"mount a file system. Another restriction aimed at preventing abuse: non-"
"`root` users must own the mountpoint where mounting the file system."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2609
#, no-wrap
msgid "Delegating Permission Delegation"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2613
msgid ""
"`zfs allow _someuser_ allow _mydataset_` gives the specified user the "
"ability to assign any permission they have on the target dataset, or its "
"children, to other users. If a user has the `snapshot` permission and the "
"`allow` permission, that user can then grant the `snapshot` permission to "
"other users."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2615
#, no-wrap
msgid "Advanced Topics"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2618
#, no-wrap
msgid "Tuning"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2621
msgid "Adjust tunables to make ZFS perform best for different workloads."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2623
msgid ""
-"[[zfs-advanced-tuning-arc_max]] `_vfs.zfs.arc_max_` - Upper size of the "
-"<<zfs-term-arc,ARC>>. The default is all RAM but 1 GB, or 5/8 of all RAM, "
-"whichever is more. Use a lower value if the system runs any other daemons or "
-"processes that may require memory. Adjust this value at runtime with man:"
-"sysctl[8] and set it in [.filename]#/boot/loader.conf# or [.filename]#/etc/"
-"sysctl.conf#."
+"[[zfs-advanced-tuning-arc_max]] `_vfs.zfs.arc.max_` starting with 13.x "
+"(`_vfs.zfs.arc_max` for 12.x) - Upper size of the <<zfs-term-arc,ARC>>. The "
+"default is all RAM but 1 GB, or 5/8 of all RAM, whichever is more. Use a "
+"lower value if the system runs any other daemons or processes that may "
+"require memory. Adjust this value at runtime with man:sysctl[8] and set it "
+"in [.filename]#/boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2624
msgid ""
-"[[zfs-advanced-tuning-arc_meta_limit]] `_vfs.zfs.arc_meta_limit_` - Limit "
-"the amount of the <<zfs-term-arc,ARC>> used to store metadata. The default "
-"is one fourth of `vfs.zfs.arc_max`. Increasing this value will improve "
-"performance if the workload involves operations on a large number of files "
-"and directories, or frequent metadata operations, at the cost of less file "
-"data fitting in the <<zfs-term-arc,ARC>>. Adjust this value at runtime with "
-"man:sysctl[8] in [.filename]#/boot/loader.conf# or [.filename]#/etc/sysctl."
-"conf#."
+"[[zfs-advanced-tuning-arc_meta_limit]] `_vfs.zfs.arc.meta_limit_` starting "
+"with 13.x (`_vfs.zfs.arc_meta_limit` for 12.x)` - Limit the amount of the "
+"<<zfs-term-arc,ARC>> used to store metadata. The default is one fourth of "
+"`vfs.zfs.arc.max`. Increasing this value will improve performance if the "
+"workload involves operations on a large number of files and directories, or "
+"frequent metadata operations, at the cost of less file data fitting in the "
+"<<zfs-term-arc,ARC>>. Adjust this value at runtime with man:sysctl[8] in [."
+"filename]#/boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2625
msgid ""
-"[[zfs-advanced-tuning-arc_min]] `_vfs.zfs.arc_min_` - Lower size of the "
-"<<zfs-term-arc,ARC>>. The default is one half of `vfs.zfs.arc_meta_limit`. "
-"Adjust this value to prevent other applications from pressuring out the "
-"entire <<zfs-term-arc,ARC>>. Adjust this value at runtime with man:sysctl[8] "
-"and in [.filename]#/boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
+"[[zfs-advanced-tuning-arc_min]] `_vfs.zfs.arc.min_` starting with 13.x "
+"(`_vfs.zfs.arc_min` for 12.x) - Lower size of the <<zfs-term-arc,ARC>>. The "
+"default is one half of `vfs.zfs.arc.meta_limit`. Adjust this value to "
+"prevent other applications from pressuring out the entire <<zfs-term-arc,"
+"ARC>>. Adjust this value at runtime with man:sysctl[8] and in [.filename]#/"
+"boot/loader.conf# or [.filename]#/etc/sysctl.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2626
msgid ""
"[[zfs-advanced-tuning-vdev-cache-size]] `_vfs.zfs.vdev.cache.size_` - A "
"preallocated amount of memory reserved as a cache for each device in the "
"pool. The total amount of memory used will be this value multiplied by the "
"number of devices. Set this value at boot time and in [.filename]#/boot/"
"loader.conf#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2627
msgid ""
"[[zfs-advanced-tuning-min-auto-ashift]] `_vfs.zfs.min_auto_ashift_` - Lower "
"`ashift` (sector size) used automatically at pool creation time. The value "
"is a power of two. The default value of `9` represents `2^9 = 512`, a sector "
"size of 512 bytes. To avoid _write amplification_ and get the best "
"performance, set this value to the largest sector size used by a device in "
"the pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2633
msgid ""
"Common drives have 4 KB sectors. Using the default `ashift` of `9` with "
"these drives results in write amplification on these devices. Data "
"contained in a single 4 KB write is instead written in eight 512-byte "
"writes. ZFS tries to read the native sector size from all devices when "
"creating a pool, but drives with 4 KB sectors report that their sectors are "
"512 bytes for compatibility. Setting `vfs.zfs.min_auto_ashift` to `12` "
"(`2^12 = 4096`) before creating a pool forces ZFS to use 4 KB blocks for "
"best performance on these drives."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2636
msgid ""
"Forcing 4 KB blocks is also useful on pools with planned disk upgrades. "
"Future disks use 4 KB sectors, and `ashift` values cannot change after "
"creating a pool."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2640
msgid ""
"In some specific cases, the smaller 512-byte block size might be "
"preferable. When used with 512-byte disks for databases or as storage for "
"virtual machines, less data transfers during small random reads. This can "
"provide better performance when using a smaller ZFS record size."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2641
msgid ""
"[[zfs-advanced-tuning-prefetch_disable]] `_vfs.zfs.prefetch_disable_` - "
"Disable prefetch. A value of `0` enables and `1` disables it. The default is "
"`0`, unless the system has less than 4 GB of RAM. Prefetch works by reading "
"larger blocks than requested into the <<zfs-term-arc,ARC>> in hopes to soon "
"need the data. If the workload has a large number of random reads, disabling "
"prefetch may actually improve performance by reducing unnecessary reads. "
"Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2642
msgid ""
"[[zfs-advanced-tuning-vdev-trim_on_init]] `_vfs.zfs.vdev.trim_on_init_` - "
"Control whether new devices added to the pool have the `TRIM` command run on "
"them. This ensures the best performance and longevity for SSDs, but takes "
"extra time. If the device has already been secure erased, disabling this "
"setting will make the addition of the new device faster. Adjust this value "
"at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2643
msgid ""
"[[zfs-advanced-tuning-vdev-max_pending]] `_vfs.zfs.vdev.max_pending_` - "
"Limit the number of pending I/O requests per device. A higher value will "
"keep the device command queue full and may give higher throughput. A lower "
"value will reduce latency. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2644
msgid ""
"[[zfs-advanced-tuning-top_maxinflight]] `_vfs.zfs.top_maxinflight_` - Upper "
"number of outstanding I/Os per top-level <<zfs-term-vdev,vdev>>. Limits the "
"depth of the command queue to prevent high latency. The limit is per top-"
"level vdev, meaning the limit applies to each <<zfs-term-vdev-mirror,"
"mirror>>, <<zfs-term-vdev-raidz,RAID-Z>>, or other vdev independently. "
"Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2645
msgid ""
"[[zfs-advanced-tuning-l2arc_write_max]] `_vfs.zfs.l2arc_write_max_` - Limit "
"the amount of data written to the <<zfs-term-l2arc,L2ARC>> per second. This "
"tunable extends the longevity of SSDs by limiting the amount of data written "
"to the device. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2646
msgid ""
"[[zfs-advanced-tuning-l2arc_write_boost]] `_vfs.zfs.l2arc_write_boost_` - "
"Adds the value of this tunable to <<zfs-advanced-tuning-l2arc_write_max,`vfs."
"zfs.l2arc_write_max`>> and increases the write speed to the SSD until "
"evicting the first block from the <<zfs-term-l2arc,L2ARC>>. This \"Turbo "
"Warmup Phase\" reduces the performance loss from an empty <<zfs-term-l2arc,"
"L2ARC>> after a reboot. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2647
msgid ""
"[[zfs-advanced-tuning-scrub_delay]]`_vfs.zfs.scrub_delay_` - Number of ticks "
"to delay between each I/O during a <<zfs-term-scrub,`scrub`>>. To ensure "
"that a `scrub` does not interfere with the normal operation of the pool, if "
"any other I/O is happening the `scrub` will delay between each command. This "
"value controls the limit on the total IOPS (I/Os Per Second) generated by "
"the `scrub`. The granularity of the setting is determined by the value of "
"`kern.hz` which defaults to 1000 ticks per second. Changing this setting "
"results in a different effective IOPS limit. The default value is `4`, "
"resulting in a limit of: 1000 ticks/sec / 4 = 250 IOPS. Using a value of "
"_20_ would give a limit of: 1000 ticks/sec / 20 = 50 IOPS. Recent activity "
"on the pool limits the speed of `scrub`, as determined by <<zfs-advanced-"
"tuning-scan_idle,`vfs.zfs.scan_idle`>>. Adjust this value at any time with "
"man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2648
msgid ""
"[[zfs-advanced-tuning-resilver_delay]] `_vfs.zfs.resilver_delay_` - Number "
"of milliseconds of delay inserted between each I/O during a <<zfs-term-"
"resilver,resilver>>. To ensure that a resilver does not interfere with the "
"normal operation of the pool, if any other I/O is happening the resilver "
"will delay between each command. This value controls the limit of total IOPS "
"(I/Os Per Second) generated by the resilver. ZFS determins the granularity "
"of the setting by the value of `kern.hz` which defaults to 1000 ticks per "
"second. Changing this setting results in a different effective IOPS limit. "
"The default value is 2, resulting in a limit of: 1000 ticks/sec / 2 = 500 "
"IOPS. Returning the pool to an <<zfs-term-online,Online>> state may be more "
"important if another device failing could <<zfs-term-faulted,Fault>> the "
"pool, causing data loss. A value of 0 will give the resilver operation the "
"same priority as other operations, speeding the healing process. Other "
"recent activity on the pool limits the speed of resilver, as determined by "
"<<zfs-advanced-tuning-scan_idle,`vfs.zfs.scan_idle`>>. Adjust this value at "
"any time with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2649
msgid ""
"[[zfs-advanced-tuning-scan_idle]] `_vfs.zfs.scan_idle_` - Number of "
"milliseconds since the last operation before considering the pool is idle. "
"ZFS disables the rate limiting for <<zfs-term-scrub,`scrub`>> and <<zfs-term-"
"resilver,resilver>> when the pool is idle. Adjust this value at any time "
"with man:sysctl[8]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2650
msgid ""
"[[zfs-advanced-tuning-txg-timeout]] `_vfs.zfs.txg.timeout_` - Upper number "
"of seconds between <<zfs-term-txg,transaction group>>s. The current "
"transaction group writes to the pool and a fresh transaction group starts if "
"this amount of time elapsed since the previous transaction group. A "
"transaction group may trigger earlier if writing enough data. The default "
"value is 5 seconds. A larger value may improve read performance by delaying "
"asynchronous writes, but this may cause uneven performance when writing the "
"transaction group. Adjust this value at any time with man:sysctl[8]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/handbook/zfs/_index.adoc:2652
#, no-wrap
msgid "ZFS on i386"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2655
msgid ""
"Some of the features provided by ZFS are memory intensive, and may require "
"tuning for upper efficiency on systems with limited RAM."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2656
#, no-wrap
msgid "Memory"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2664
msgid ""
"As a lower value, the total system memory should be at least one gigabyte. "
"The amount of recommended RAM depends upon the size of the pool and which "
"features ZFS uses. A general rule of thumb is 1 GB of RAM for every 1 TB of "
"storage. If using the deduplication feature, a general rule of thumb is 5 "
"GB of RAM per TB of storage to deduplicate. While some users use ZFS with "
"less RAM, systems under heavy load may panic due to memory exhaustion. ZFS "
"may require further tuning for systems with less than the recommended RAM "
"requirements."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2665
#, no-wrap
msgid "Kernel Configuration"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2668
msgid ""
"Due to the address space limitations of the i386(TM) platform, ZFS users on "
"the i386(TM) architecture must add this option to a custom kernel "
"configuration file, rebuild the kernel, and reboot:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2672
#, no-wrap
msgid "options KVA_PAGES=512\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2677
msgid ""
"This expands the kernel address space, allowing the `vm.kvm_size` tunable to "
"push beyond the imposed limit of 1 GB, or the limit of 2 GB for PAE. To "
"find the most suitable value for this option, divide the desired address "
"space in megabytes by four. In this example `512` for 2 GB."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/handbook/zfs/_index.adoc:2678
#, no-wrap
msgid "Loader Tunables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2682
msgid ""
"Increases the [.filename]#kmem# address space on all FreeBSD architectures. "
"A test system with 1 GB of physical memory benefitted from adding these "
"options to [.filename]#/boot/loader.conf# and then restarting:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/handbook/zfs/_index.adoc:2689
#, no-wrap
msgid ""
"vm.kmem_size=\"330M\"\n"
"vm.kmem_size_max=\"330M\"\n"
-"vfs.zfs.arc_max=\"40M\"\n"
+"vfs.zfs.arc.max=\"40M\"\n"
"vfs.zfs.vdev.cache.size=\"5M\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2692
msgid ""
"For a more detailed list of recommendations for ZFS-related tuning, see "
"https://wiki.freebsd.org/ZFSTuningGuide[]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2694
#, no-wrap
msgid "Further Resources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2697
msgid "https://openzfs.org/[OpenZFS]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2698
msgid "https://wiki.freebsd.org/ZFSTuningGuide[FreeBSD Wiki - ZFS Tuning]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2699
msgid ""
"https://calomel.org/zfs_raid_speed_capacity.html[Calomel Blog - ZFS Raidz "
"Performance, Capacity and Integrity]"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/handbook/zfs/_index.adoc:2701
#, no-wrap
msgid "ZFS Features and Terminology"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/handbook/zfs/_index.adoc:2710
msgid ""
"More than a file system, ZFS is fundamentally different. ZFS combines the "
"roles of file system and volume manager, enabling new storage devices to add "
"to a live system and having the new space available on the existing file "
"systems in that pool at once. By combining the traditionally separate "
"roles, ZFS is able to overcome previous limitations that prevented RAID "
"groups being able to grow. A _vdev_ is a top level device in a pool and can "
"be a simple disk or a RAID transformation such as a mirror or RAID-Z array. "
"ZFS file systems (called _datasets_) each have access to the combined free "
"space of the entire pool. Used blocks from the pool decrease the space "
"available to each file system. This approach avoids the common pitfall with "
"extensive partitioning where free space becomes fragmented across the "
"partitions."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2716
#, no-wrap
msgid "[[zfs-term-pool]]pool"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2719
#, no-wrap
msgid ""
"A storage _pool_ is the most basic building block of ZFS. A pool consists of one or more vdevs, the underlying devices that store the data. A pool is then used to create one or more file systems (datasets) or block devices (volumes).\n"
"These datasets and volumes share the pool of remaining free space. Each pool is uniquely identified by a name and a GUID. The ZFS version number on the pool determines the features available."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2720
#, no-wrap
msgid "[[zfs-term-vdev]]vdev Types"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2750
#, no-wrap
msgid ""
"A pool consists of one or more vdevs, which themselves are a single disk or a group of disks, transformed to a RAID. When using a lot of vdevs, ZFS spreads data across the vdevs to increase performance and maximize usable space. All vdevs must be at least 128 MB in size. \n"
"\n"
"* [[zfs-term-vdev-disk]] _Disk_ - The most basic vdev type is a standard block device. This can be an entire disk (such as [.filename]#/dev/ada0# or [.filename]#/dev/da0#) or a partition ([.filename]#/dev/ada0p3#). On FreeBSD, there is no performance penalty for using a partition rather than the entire disk. This differs from recommendations made by the Solaris documentation.\n"
"+\n"
"[CAUTION]\n"
"====\n"
"Using an entire disk as part of a bootable pool is strongly discouraged, as this may render the pool unbootable.\n"
"Likewise, you should not use an entire disk as part of a mirror or RAID-Z vdev.\n"
"Reliably determining the size of an unpartitioned disk at boot time is impossible and there's no place to put in boot code.\n"
"====\n"
"\n"
"* [[zfs-term-vdev-file]] _File_ - Regular files may make up ZFS pools, which is useful for testing and experimentation. Use the full path to the file as the device path in `zpool create`.\n"
"* [[zfs-term-vdev-mirror]] _Mirror_ - When creating a mirror, specify the `mirror` keyword followed by the list of member devices for the mirror. A mirror consists of two or more devices, writing all data to all member devices. A mirror vdev will hold as much data as its smallest member. A mirror vdev can withstand the failure of all but one of its members without losing any data.\n"
"+\n"
"[NOTE]\n"
"====\n"
"To upgrade a regular single disk vdev to a mirror vdev at any time, use `zpool <<zfs-zpool-attach,attach>>`.\n"
"====\n"
"\n"
"* [[zfs-term-vdev-raidz]] _RAID-Z_ - ZFS uses RAID-Z, a variation on standard RAID-5 that offers better distribution of parity and eliminates the \"RAID-5 write hole\" in which the data and parity information become inconsistent after an unexpected restart. ZFS supports three levels of RAID-Z which provide varying levels of redundancy in exchange for decreasing levels of usable storage. ZFS uses RAID-Z1 through RAID-Z3 based on the number of parity devices in the array and the number of disks which can fail before the pool stops being operational.\n"
"+\n"
"In a RAID-Z1 configuration with four disks, each 1 TB, usable storage is 3 TB and the pool will still be able to operate in degraded mode with one faulted disk. If another disk goes offline before replacing and resilvering the faulted disk would result in losing all pool data.\n"
"+\n"
"In a RAID-Z3 configuration with eight disks of 1 TB, the volume will provide 5 TB of usable space and still be able to operate with three faulted disks. Sun(TM) recommends no more than nine disks in a single vdev. If more disks make up the configuration, the recommendation is to divide them into separate vdevs and stripe the pool data across them.\n"
"+\n"
"A configuration of two RAID-Z2 vdevs consisting of 8 disks each would create something like a RAID-60 array. A RAID-Z group's storage capacity is about the size of the smallest disk multiplied by the number of non-parity disks. Four 1 TB disks in RAID-Z1 has an effective size of about 3 TB, and an array of eight 1 TB disks in RAID-Z3 will yield 5 TB of usable space.\n"
"* [[zfs-term-vdev-spare]] _Spare_ - ZFS has a special pseudo-vdev type for keeping track of available hot spares. Note that installed hot spares are not deployed automatically; manually configure them to replace the failed device using `zfs replace`.\n"
"* [[zfs-term-vdev-log]] _Log_ - ZFS Log Devices, also known as ZFS Intent Log (<<zfs-term-zil,ZIL>>) move the intent log from the regular pool devices to a dedicated device, typically an SSD. Having a dedicated log device improves the performance of applications with a high volume of synchronous writes like databases. Mirroring of log devices is possible, but RAID-Z is not supported. If using a lot of log devices, writes will be load-balanced across them.\n"
"* [[zfs-term-vdev-cache]] _Cache_ - Adding a cache vdev to a pool will add the storage of the cache to the <<zfs-term-l2arc,L2ARC>>. Mirroring cache devices is impossible. Since a cache device stores only new copies of existing data, there is no risk of data loss."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2751
#, no-wrap
msgid "[[zfs-term-txg]] Transaction Group (TXG)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2757
#, no-wrap
msgid ""
"Transaction Groups are the way ZFS groups blocks changes together and writes them to the pool. Transaction groups are the atomic unit that ZFS uses to ensure consistency. ZFS assigns each transaction group a unique 64-bit consecutive identifier. There can be up to three active transaction groups at a time, one in each of these three states: \n"
"\n"
"* _Open_ - A new transaction group begins in the open state and accepts new writes. There is always a transaction group in the open state, but the transaction group may refuse new writes if it has reached a limit. Once the open transaction group has reached a limit, or reaching the <<zfs-advanced-tuning-txg-timeout,`vfs.zfs.txg.timeout`>>, the transaction group advances to the next state.\n"
"* _Quiescing_ - A short state that allows any pending operations to finish without blocking the creation of a new open transaction group. Once all the transactions in the group have completed, the transaction group advances to the final state.\n"
"* _Syncing_ - Write all the data in the transaction group to stable storage. This process will in turn change other data, such as metadata and space maps, that ZFS will also write to stable storage. The process of syncing involves several passes. On the first and biggest, all the changed data blocks; next come the metadata, which may take several passes to complete. Since allocating space for the data blocks generates new metadata, the syncing state cannot finish until a pass completes that does not use any new space. The syncing state is also where _synctasks_ complete. Synctasks are administrative operations such as creating or destroying snapshots and datasets that complete the uberblock change. Once the sync state completes the transaction group in the quiescing state advances to the syncing state. All administrative functions, such as <<zfs-term-snapshot,`snapshot`>> write as part of the transaction group. ZFS adds a created synctask to the open transaction group, and that group advances as fast as possible to the syncing state to reduce the latency of administrative commands."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2758
#, no-wrap
msgid "[[zfs-term-arc]]Adaptive Replacement Cache (ARC)"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2760
#, no-wrap
msgid "ZFS uses an Adaptive Replacement Cache (ARC), rather than a more traditional Least Recently Used (LRU) cache. An LRU cache is a simple list of items in the cache, sorted by how recently object was used, adding new items to the head of the list. When the cache is full, evicting items from the tail of the list makes room for more active objects. An ARC consists of four lists; the Most Recently Used (MRU) and Most Frequently Used (MFU) objects, plus a ghost list for each. These ghost lists track evicted objects to prevent adding them back to the cache. This increases the cache hit ratio by avoiding objects that have a history of occasional use. Another advantage of using both an MRU and MFU is that scanning an entire file system would evict all data from an MRU or LRU cache in favor of this freshly accessed content. With ZFS, there is also an MFU that tracks the most frequently used objects, and the cache of the most commonly accessed blocks remains."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2761
#, no-wrap
msgid "[[zfs-term-l2arc]]L2ARC"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2763
#, no-wrap
msgid "L2ARC is the second level of the ZFS caching system. RAM stores the primary ARC. Since the amount of available RAM is often limited, ZFS can also use <<zfs-term-vdev-cache,cache vdevs>>. Solid State Disks (SSDs) are often used as these cache devices due to their higher speed and lower latency compared to traditional spinning disks. L2ARC is entirely optional, but having one will increase read speeds for cached files on the SSD instead of having to read from the regular disks. L2ARC can also speed up <<zfs-term-deduplication,deduplication>> because a deduplication table (DDT) that does not fit in RAM but does fit in the L2ARC will be much faster than a DDT that must read from disk. Limits on the data rate added to the cache devices prevents prematurely wearing out SSDs with extra writes. Until the cache is full (the first block evicted to make room), writes to the L2ARC limit to the sum of the write limit and the boost limit, and afterwards limit to the write limit. A pair of man:sysctl[8] values control these rate limits. <<zfs-advanced-tuning-l2arc_write_max,`vfs.zfs.l2arc_write_max`>> controls the number of bytes written to the cache per second, while <<zfs-advanced-tuning-l2arc_write_boost,`vfs.zfs.l2arc_write_boost`>> adds to this limit during the \"Turbo Warmup Phase\" (Write Boost)."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2764
#, no-wrap
msgid "[[zfs-term-zil]]ZIL"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2766
#, no-wrap
msgid "ZIL accelerates synchronous transactions by using storage devices like SSDs that are faster than those used in the main storage pool. When an application requests a synchronous write (a guarantee that the data is stored to disk rather than merely cached for later writes), writing the data to the faster ZIL storage then later flushing it out to the regular disks greatly reduces latency and improves performance. Synchronous workloads like databases will profit from a ZIL alone. Regular asynchronous writes such as copying files will not use the ZIL at all."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2767
#, no-wrap
msgid "[[zfs-term-cow]]Copy-On-Write"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2769
#, no-wrap
msgid "Unlike a traditional file system, ZFS writes a different block rather than overwriting the old data in place. When completing this write the metadata updates to point to the new location. When a shorn write (a system crash or power loss in the middle of writing a file) occurs, the entire original contents of the file are still available and ZFS discards the incomplete write. This also means that ZFS does not require a man:fsck[8] after an unexpected shutdown."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2770
#, no-wrap
msgid "[[zfs-term-dataset]]Dataset"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2772
#, no-wrap
msgid "_Dataset_ is the generic term for a ZFS file system, volume, snapshot or clone. Each dataset has a unique name in the format _poolname/path@snapshot_. The root of the pool is a dataset as well. Child datasets have hierarchical names like directories. For example, _mypool/home_, the home dataset, is a child of _mypool_ and inherits properties from it. Expand this further by creating _mypool/home/user_. This grandchild dataset will inherit properties from the parent and grandparent. Set properties on a child to override the defaults inherited from the parent and grandparent. Administration of datasets and their children can be <<zfs-zfs-allow,delegated>>."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2773
#, no-wrap
msgid "[[zfs-term-filesystem]]File system"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2775
#, no-wrap
msgid "A ZFS dataset is most often used as a file system. Like most other file systems, a ZFS file system mounts somewhere in the systems directory hierarchy and contains files and directories of its own with permissions, flags, and other metadata."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2776
#, no-wrap
msgid "[[zfs-term-volume]]Volume"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2778
#, no-wrap
msgid "ZFS can also create volumes, which appear as disk devices. Volumes have a lot of the same features as datasets, including copy-on-write, snapshots, clones, and checksumming. Volumes can be useful for running other file system formats on top of ZFS, such as UFS virtualization, or exporting iSCSI extents."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2779
#, no-wrap
msgid "[[zfs-term-snapshot]]Snapshot"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2781
#, no-wrap
msgid "The <<zfs-term-cow,copy-on-write>> (COW) design of ZFS allows for nearly instantaneous, consistent snapshots with arbitrary names. After taking a snapshot of a dataset, or a recursive snapshot of a parent dataset that will include all child datasets, new data goes to new blocks, but without reclaiming the old blocks as free space. The snapshot contains the original file system version and the live file system contains any changes made since taking the snapshot using no other space. New data written to the live file system uses new blocks to store this data. The snapshot will grow as the blocks are no longer used in the live file system, but in the snapshot alone. Mount these snapshots read-only allows recovering of previous file versions. A <<zfs-zfs-snapshot,rollback>> of a live file system to a specific snapshot is possible, undoing any changes that took place after taking the snapshot. Each block in the pool has a reference counter which keeps track of the snapshots, clones, datasets, or volumes use that block. As files and snapshots get deleted, the reference count decreases, reclaiming the free space when no longer referencing a block. Marking snapshots with a <<zfs-zfs-snapshot,hold>> results in any attempt to destroy it will returns an `EBUSY` error. Each snapshot can have holds with a unique name each. The <<zfs-zfs-snapshot,release>> command removes the hold so the snapshot can deleted. Snapshots, cloning, and rolling back works on volumes, but independently mounting does not."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2782
#, no-wrap
msgid "[[zfs-term-clone]]Clone"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2784
#, no-wrap
msgid "Cloning a snapshot is also possible. A clone is a writable version of a snapshot, allowing the file system to fork as a new dataset. As with a snapshot, a clone initially consumes no new space. As new data written to a clone uses new blocks, the size of the clone grows. When blocks are overwritten in the cloned file system or volume, the reference count on the previous block decreases. Removing the snapshot upon which a clone bases is impossible because the clone depends on it. The snapshot is the parent, and the clone is the child. Clones can be _promoted_, reversing this dependency and making the clone the parent and the previous parent the child. This operation requires no new space. Since the amount of space used by the parent and child reverses, it may affect existing quotas and reservations."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2785
#, no-wrap
msgid "[[zfs-term-checksum]]Checksum"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2792
#, no-wrap
msgid ""
"Every block is also checksummed. The checksum algorithm used is a per-dataset property, see <<zfs-zfs-set,`set`>>. The checksum of each block is transparently validated when read, allowing ZFS to detect silent corruption. If the data read does not match the expected checksum, ZFS will attempt to recover the data from any available redundancy, like mirrors or RAID-Z. Triggering a validation of all checksums with <<zfs-term-scrub,`scrub`>>. Checksum algorithms include:\n"
"\n"
"* `fletcher2`\n"
"* `fletcher4`\n"
"* `sha256`\n"
" The `fletcher` algorithms are faster, but `sha256` is a strong cryptographic hash and has a much lower chance of collisions at the cost of some performance. Deactivating checksums is possible, but strongly discouraged."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2793
#, no-wrap
msgid "[[zfs-term-compression]]Compression"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2807
#, no-wrap
msgid ""
"Each dataset has a compression property, which defaults to off. Set this property to an available compression algorithm. This causes compression of all new data written to the dataset. Beyond a reduction in space used, read and write throughput often increases because fewer blocks need reading or writing. \n"
"\n"
"[[zfs-term-compression-lz4]]\n"
"* _LZ4_ - Added in ZFS pool version 5000 (feature flags), LZ4 is now the recommended compression algorithm. LZ4 works about 50% faster than LZJB when operating on compressible data, and is over three times faster when operating on uncompressible data. LZ4 also decompresses about 80% faster than LZJB. On modern CPUs, LZ4 can often compress at over 500 MB/s, and decompress at over 1.5 GB/s (per single CPU core).\n"
"\n"
"[[zfs-term-compression-lzjb]]\n"
"* _LZJB_ - The default compression algorithm. Created by Jeff Bonwick (one of the original creators of ZFS). LZJB offers good compression with less CPU overhead compared to GZIP. In the future, the default compression algorithm will change to LZ4.\n"
"\n"
"[[zfs-term-compression-gzip]]\n"
"* _GZIP_ - A popular stream compression algorithm available in ZFS. One of the main advantages of using GZIP is its configurable level of compression. When setting the `compress` property, the administrator can choose the level of compression, ranging from `gzip1`, the lowest level of compression, to `gzip9`, the highest level of compression. This gives the administrator control over how much CPU time to trade for saved disk space.\n"
"\n"
"[[zfs-term-compression-zle]]\n"
"* _ZLE_ - Zero Length Encoding is a special compression algorithm that compresses continuous runs of zeros alone. This compression algorithm is useful when the dataset contains large blocks of zeros."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2808
#, no-wrap
msgid "[[zfs-term-copies]]Copies"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2810
#, no-wrap
msgid "When set to a value greater than 1, the `copies` property instructs ZFS to maintain copies of each block in the <<zfs-term-filesystem,file system>> or <<zfs-term-volume,volume>>. Setting this property on important datasets provides added redundancy from which to recover a block that does not match its checksum. In pools without redundancy, the copies feature is the single form of redundancy. The copies feature can recover from a single bad sector or other forms of minor corruption, but it does not protect the pool from the loss of an entire disk."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2811
#, no-wrap
msgid "[[zfs-term-deduplication]]Deduplication"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2813
#, no-wrap
msgid "Checksums make it possible to detect duplicate blocks when writing data. With deduplication, the reference count of an existing, identical block increases, saving storage space. ZFS keeps a deduplication table (DDT) in memory to detect duplicate blocks. The table contains a list of unique checksums, the location of those blocks, and a reference count. When writing new data, ZFS calculates checksums and compares them to the list. When finding a match it uses the existing block. Using the SHA256 checksum algorithm with deduplication provides a secure cryptographic hash. Deduplication is tunable. If `dedup` is `on`, then a matching checksum means that the data is identical. Setting `dedup` to `verify`, ZFS performs a byte-for-byte check on the data ensuring they are actually identical. If the data is not identical, ZFS will note the hash collision and store the two blocks separately. As the DDT must store the hash of each unique block, it consumes a large amount of memory. A general rule of thumb is 5-6 GB of ram per 1 TB of deduplicated data). In situations not practical to have enough RAM to keep the entire DDT in memory, performance will suffer greatly as the DDT must read from disk before writing each new block. Deduplication can use L2ARC to store the DDT, providing a middle ground between fast system memory and slower disks. Consider using compression instead, which often provides nearly as much space savings without the increased memory."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2814
#, no-wrap
msgid "[[zfs-term-scrub]]Scrub"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2816
#, no-wrap
msgid "Instead of a consistency check like man:fsck[8], ZFS has `scrub`. `scrub` reads all data blocks stored on the pool and verifies their checksums against the known good checksums stored in the metadata. A periodic check of all the data stored on the pool ensures the recovery of any corrupted blocks before needing them. A scrub is not required after an unclean shutdown, but good practice is at least once every three months. ZFS verifies the checksum of each block during normal use, but a scrub makes certain to check even infrequently used blocks for silent corruption. ZFS improves data security in archival storage situations. Adjust the relative priority of `scrub` with <<zfs-advanced-tuning-scrub_delay,`vfs.zfs.scrub_delay`>> to prevent the scrub from degrading the performance of other workloads on the pool."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2817
#, no-wrap
msgid "[[zfs-term-quota]]Dataset Quota"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2828
#, no-wrap
msgid ""
"ZFS provides fast and accurate dataset, user, and group space accounting as well as quotas and space reservations. This gives the administrator fine grained control over space allocation and allows reserving space for critical file systems. \n"
"\n"
"ZFS supports different types of quotas: the dataset quota, the <<zfs-term-refquota,reference quota (refquota)>>, the <<zfs-term-userquota,user quota>>, and the <<zfs-term-groupquota,group quota>>.\n"
"\n"
"Quotas limit the total size of a dataset and its descendants, including snapshots of the dataset, child datasets, and the snapshots of those datasets.\n"
"\n"
"[NOTE]\n"
"====\n"
"Volumes do not support quotas, as the `volsize` property acts as an implicit quota.\n"
"===="
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2829
#, no-wrap
msgid "[[zfs-term-refquota]]Reference Quota"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2831
#, no-wrap
msgid "A reference quota limits the amount of space a dataset can consume by enforcing a hard limit. This hard limit includes space referenced by the dataset alone and does not include space used by descendants, such as file systems or snapshots."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2832
#, no-wrap
msgid "[[zfs-term-userquota]]User Quota"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2834
#, no-wrap
msgid "User quotas are useful to limit the amount of space used by the specified user."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2835
#, no-wrap
msgid "[[zfs-term-groupquota]]Group Quota"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2837
#, no-wrap
msgid "The group quota limits the amount of space that a specified group can consume."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2838
#, no-wrap
msgid "[[zfs-term-reservation]]Dataset Reservation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2842
#, no-wrap
msgid ""
"The `reservation` property makes it possible to guarantee an amount of space for a specific dataset and its descendants. This means that setting a 10 GB reservation on [.filename]#storage/home/bob# prevents other datasets from using up all free space, reserving at least 10 GB of space for this dataset. Unlike a regular <<zfs-term-refreservation,`refreservation`>>, space used by snapshots and descendants is not counted against the reservation. For example, if taking a snapshot of [.filename]#storage/home/bob#, enough disk space other than the `refreservation` amount must exist for the operation to succeed. Descendants of the main data set are not counted in the `refreservation` amount and so do not encroach on the space set.\n"
"\n"
"Reservations of any sort are useful in situations such as planning and testing the suitability of disk space allocation in a new system, or ensuring that enough space is available on file systems for audio logs or system recovery procedures and files."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2843
#, no-wrap
msgid "[[zfs-term-refreservation]]Reference Reservation"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2845
#, no-wrap
msgid "The `refreservation` property makes it possible to guarantee an amount of space for the use of a specific dataset _excluding_ its descendants. This means that setting a 10 GB reservation on [.filename]#storage/home/bob#, and another dataset tries to use the free space, reserving at least 10 GB of space for this dataset. In contrast to a regular <<zfs-term-reservation,reservation>>, space used by snapshots and descendant datasets is not counted against the reservation. For example, if taking a snapshot of [.filename]#storage/home/bob#, enough disk space other than the `refreservation` amount must exist for the operation to succeed. Descendants of the main data set are not counted in the `refreservation` amount and so do not encroach on the space set."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2846
#, no-wrap
msgid "[[zfs-term-resilver]]Resilver"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2847
#, no-wrap
msgid "When replacing a failed disk, ZFS must fill the new disk with the lost data. _Resilvering_ is the process of using the parity information distributed across the remaining drives to calculate and write the missing data to the new drive."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2848
#, no-wrap
msgid "[[zfs-term-online]]Online"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2850
#, no-wrap
msgid "A pool or vdev in the `Online` state has its member devices connected and fully operational. Individual devices in the `Online` state are functioning."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2851
#, no-wrap
msgid "[[zfs-term-offline]]Offline"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2853
#, no-wrap
msgid "The administrator puts individual devices in an `Offline` state if enough redundancy exists to avoid putting the pool or vdev into a <<zfs-term-faulted,Faulted>> state. An administrator may choose to offline a disk in preparation for replacing it, or to make it easier to identify."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2854
#, no-wrap
msgid "[[zfs-term-degraded]]Degraded"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2856
#, no-wrap
msgid "A pool or vdev in the `Degraded` state has one or more disks that disappeared or failed. The pool is still usable, but if other devices fail, the pool may become unrecoverable. Reconnecting the missing devices or replacing the failed disks will return the pool to an <<zfs-term-online,Online>> state after the reconnected or new device has completed the <<zfs-term-resilver,Resilver>> process."
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2857
#, no-wrap
msgid "[[zfs-term-faulted]]Faulted"
msgstr ""
#. type: Table
#: documentation/content/en/books/handbook/zfs/_index.adoc:2858
#, no-wrap
msgid "A pool or vdev in the `Faulted` state is no longer operational. Accessing the data is no longer possible. A pool or vdev enters the `Faulted` state when the number of missing or failed devices exceeds the level of redundancy in the vdev. If reconnecting missing devices the pool will return to an <<zfs-term-online,Online>> state. Insufficient redundancy to compensate for the number of failed disks loses the pool contents and requires restoring from backups."
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/makefiles/_index.po b/documentation/content/en/books/porters-handbook/makefiles/_index.po
index 5c163d26bd..129074bae6 100644
--- a/documentation/content/en/books/porters-handbook/makefiles/_index.po
+++ b/documentation/content/en/books/porters-handbook/makefiles/_index.po
@@ -1,11624 +1,11623 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1
#, no-wrap
msgid "Configuring the Makefile for FreeBSD Ports"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1
#, no-wrap
msgid "Chapter 5. Configuring the Makefile"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:13
#, no-wrap
msgid "Configuring the Makefile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:54
msgid ""
"Configuring the [.filename]#Makefile# is pretty simple, and again we suggest "
"looking at existing examples before starting. Also, there is a crossref:"
"porting-samplem[porting-samplem,sample Makefile] in this handbook, so take a "
"look and please follow the ordering of variables and sections in that "
"template to make the port easier for others to read."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:56
msgid ""
"Consider these problems in sequence during the design of the new [."
"filename]#Makefile#:"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:58
#, no-wrap
msgid "The Original Source"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:62
msgid ""
"Does it live in `DISTDIR` as a standard ``gzip``ped tarball named something "
"like [.filename]#foozolix-1.2.tar.gz#? If so, go on to the next step. If "
"not, the distribution file format might require overriding one or more of "
"`DISTVERSION`, `DISTNAME`, `EXTRACT_CMD`, `EXTRACT_BEFORE_ARGS`, "
"`EXTRACT_AFTER_ARGS`, `EXTRACT_SUFX`, or `DISTFILES`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:65
msgid ""
"In the worst case, create a custom `do-extract` target to override the "
"default. This is rarely, if ever, necessary."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:67
#, no-wrap
msgid "Naming"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:70
msgid ""
"The first part of the port's [.filename]#Makefile# names the port, describes "
"its version number, and lists it in the correct category."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:72
#, no-wrap
msgid "`PORTNAME`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:76
msgid ""
"Set `PORTNAME` to the base name of the software. It is used as the base for "
"the FreeBSD package, and for <<makefile-distname,`DISTNAME`>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:82
msgid ""
"The package name must be unique across the entire ports tree. Make sure "
"that the `PORTNAME` is not already in use by an existing port, and that no "
"other port already has the same `PKGBASE`. If the name has already been "
"used, add either <<porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or "
"`PKGNAMESUFFIX`>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:85
#, no-wrap
msgid "Versions, `DISTVERSION` _or_ `PORTVERSION`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:88
msgid "Set `DISTVERSION` to the version number of the software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:92
msgid ""
"`PORTVERSION` is the version used for the FreeBSD package. It will be "
"automatically derived from `DISTVERSION` to be compatible with FreeBSD's "
"package versioning scheme. If the version contains _letters_, it might be "
"needed to set `PORTVERSION` and not `DISTVERSION`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:96
msgid "Only one of `PORTVERSION` and `DISTVERSION` can be set at a time."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:99
msgid ""
"From time to time, some software will use a version scheme that is not "
"compatible with how `DISTVERSION` translates in `PORTVERSION`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:104
msgid ""
"When updating a port, it is possible to use man:pkg-version[8]'s `-t` "
"argument to check if the new version is greater or lesser than before. See "
"<<makefile-versions-ex-pkg-version>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:107
#, no-wrap
msgid "Using man:pkg-version[8] to Compare Versions"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:111
msgid ""
"`pkg version -t` takes two versions as arguments, it will respond with `<`, "
"`=` or `>` if the first version is less, equal, or more than the second "
"version, respectively."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:117
#, no-wrap
msgid ""
"% pkg version -t 1.2 1.3\n"
"< <.>\n"
"% pkg version -t 1.2 1.2\n"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:117
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:119
#, no-wrap
msgid "<.>"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:119
msgid "% pkg version -t 1.2 1.2.0"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:126
msgid ""
"% pkg version -t 1.2 1.2.p1 > <.> % pkg version -t 1.2.a1 1.2.b1 < <.> % pkg "
"version -t 1.2 1.2p1 < <.>"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:129
msgid "`1.2` is before `1.3`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:130
msgid "`1.2` and `1.2` are equal as they have the same version."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:131
msgid "`1.2` and `1.2.0` are equal as nothing equals zero."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:132
msgid "`1.2` is after `1.2.p1` as `.p1`, think \"pre-release 1\"."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:133
msgid ""
"`1.2.a1` is before `1.2.b1`, think \"alpha\" and \"beta\", and `a` is before "
"`b`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:134
msgid ""
"`1.2` is before `1.2p1` as `2p1`, think \"2, patch level 1\" which is a "
"version after any `2.X` but before `3`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:139
msgid ""
"In here, the `a`, `b`, and `p` are used as if meaning \"alpha\", \"beta\" or "
"\"pre-release\" and \"patch level\", but they are only letters and are "
"sorted alphabetically, so any letter can be used, and they will be sorted "
"appropriately."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:143
#, no-wrap
msgid "Examples of `DISTVERSION` and the Derived `PORTVERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:147
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:490
#, no-wrap
msgid "DISTVERSION"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:149
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:491
#, no-wrap
msgid "PORTVERSION"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:150
#, no-wrap
msgid "0.7.1d"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:152
#, no-wrap
msgid "0.7.1.d"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:153
#, no-wrap
msgid "10Alpha3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:155
#, no-wrap
msgid "10.a3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:156
#, no-wrap
msgid "3Beta7-pre2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:158
#, no-wrap
msgid "3.b7.p2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:159
#, no-wrap
msgid "8:f_17"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:160
#, no-wrap
msgid "8f.17"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:163
#, no-wrap
msgid "Using `DISTVERSION`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:167
msgid ""
"When the version only contains numbers separated by dots, dashes or "
"underscores, use `DISTVERSION`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:172
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSION=\t1.2-4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:175
msgid "It will generate a `PORTVERSION` of `1.2.4`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:178
#, no-wrap
msgid "Using `DISTVERSION` When the Version Starts with a Letter or a Prefix"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:182
msgid ""
"When the version starts or ends with a letter, or a prefix or a suffix that "
"is not part of the version, use `DISTVERSIONPREFIX`, `DISTVERSION`, and "
"`DISTVERSIONSUFFIX`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:184
msgid "If the version is `v1.2-4`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:190
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSIONPREFIX= v\n"
"DISTVERSION=\t1_2_4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:194
msgid ""
"Some of the time, projects using GitHub will use their name in their "
"versions. For example, the version could be `nekoto-1.2-4`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:200
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSIONPREFIX= nekoto-\n"
"DISTVERSION=\t1.2_4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:203
msgid ""
"Those projects also sometimes use some string at the end of the version, for "
"example, `1.2-4_RELEASE`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:209
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSION=\t1.2-4\n"
"DISTVERSIONSUFFIX= _RELEASE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:212
msgid "Or they do both, for example, `nekoto-1.2-4_RELEASE`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:219
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSIONPREFIX= nekoto-\n"
"DISTVERSION=\t1.2-4\n"
"DISTVERSIONSUFFIX= _RELEASE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:222
msgid ""
"`DISTVERSIONPREFIX` and `DISTVERSIONSUFFIX` will not be used while "
"constructing `PORTVERSION`, but only used in `DISTNAME`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:224
msgid "All will generate a `PORTVERSION` of `1.2.4`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:227
#, no-wrap
msgid "Using `DISTVERSION` When the Version Contains Letters Meaning \"alpha\", \"beta\", or \"pre-release\""
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:231
msgid ""
"When the version contains numbers separated by dots, dashes or underscores, "
"and letters are used to mean \"alpha\", \"beta\" or \"pre-release\", which "
"is, before the version without the letters, use `DISTVERSION`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:236
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSION=\t1.2-pre4\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:242
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"DISTVERSION=\t1.2p4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:245
msgid ""
"Both will generate a `PORTVERSION` of `1.2.p4` which is before than 1.2. man:"
"pkg-version[8] can be used to check that fact:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:250
#, no-wrap
msgid ""
"% pkg version -t 1.2.p4 1.2\n"
"<\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:255
#, no-wrap
msgid "Not Using `DISTVERSION` When the Version Contains Letters Meaning \"Patch Level\""
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:259
msgid ""
"When the version contains letters that are not meant as \"alpha\", \"beta\", "
"or \"pre\", but more in a \"patch level\", and meaning after the version "
"without the letters, use `PORTVERSION`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:264
#, no-wrap
msgid ""
"PORTNAME= nekoto\n"
"PORTVERSION=\t1.2p4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:268
msgid ""
"In this case, using `DISTVERSION` is not possible because it would generate "
"a version of `1.2.p4` which would be before `1.2` and not after. man:pkg-"
"version[8] will verify this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:275
#, no-wrap
msgid ""
"% pkg version -t 1.2 1.2.p4\n"
"> <.>\n"
"% pkg version -t 1.2 1.2p4\n"
"< <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:278
msgid "`1.2` is after `1.2.p4`, which is _wrong_ in this case."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:279
msgid "`1.2` is before `1.2p4`, which is what was needed."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:282
msgid ""
"For some more advanced examples of setting `PORTVERSION`, when the "
"software's versioning is really not compatible with FreeBSD's, or `DISTNAME` "
"when the distribution file does not contain the version itself, see "
"<<makefile-distname>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:284
#, no-wrap
msgid "`PORTREVISION` and `PORTEPOCH`"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:287
#, no-wrap
msgid "`PORTREVISION`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:291
msgid ""
"`PORTREVISION` is a monotonically increasing value which is reset to 0 with "
"every increase of `DISTVERSION`, typically every time there is a new "
"official vendor release. If `PORTREVISION` is non-zero, the value is "
"appended to the package name. Changes to `PORTREVISION` are used by "
"automated tools like man:pkg-version[8] to determine that a new package is "
"available."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:294
msgid ""
"`PORTREVISION` must be increased each time a change is made to the port that "
"changes the generated package in any way. That includes changes that only "
"affect a package built with non-default <<makefile-options,options>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:296
msgid "Examples of when `PORTREVISION` must be bumped:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:298
msgid ""
"Addition of patches to correct security vulnerabilities, bugs, or to add new "
"functionality to the port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:299
msgid ""
"Changes to the port [.filename]#Makefile# to enable or disable compile-time "
"options in the package."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:300
msgid ""
"Changes in the packing list or the install-time behavior of the package. For "
"example, a change to a script which generates initial data for the package, "
"like man:ssh[1] host keys."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:301
msgid ""
"Version bump of a port's shared library dependency (in this case, someone "
"trying to install the old package after installing a newer version of the "
"dependency will fail since it will look for the old libfoo.x instead of "
"libfoo.(x+1))."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:302
msgid ""
"Silent changes to the port distfile which have significant functional "
"differences. For example, changes to the distfile requiring a correction to "
"[.filename]#distinfo# with no corresponding change to `DISTVERSION`, where a "
"`diff -ru` of the old and new versions shows non-trivial changes to the code."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:304
msgid "Examples of changes which do not require a `PORTREVISION` bump:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:306
msgid ""
"Style changes to the port skeleton with no functional change to what appears "
"in the resulting package."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:307
msgid ""
"Changes to `MASTER_SITES` or other functional changes to the port which do "
"not affect the resulting package."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:308
msgid ""
"Trivial patches to the distfile such as correction of typos, which are not "
"important enough that users of the package have to go to the trouble of "
"upgrading."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:309
msgid ""
"Build fixes which cause a package to become compilable where it was "
"previously failing. As long as the changes do not introduce any functional "
"change on any other platforms on which the port did previously build. Since "
"`PORTREVISION` reflects the content of the package, if the package was not "
"previously buildable then there is no need to increase `PORTREVISION` to "
"mark a change."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:310
msgid "Changes to `MAINTAINER`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:315
msgid ""
"A rule of thumb is to decide whether a change committed to a port is "
"something which _some_ people would benefit from having. Either because of "
"an enhancement, fix, or by virtue that the new package will actually work at "
"all. Then weigh that against that fact that it will cause everyone who "
"regularly updates their ports tree to be compelled to update. If yes, "
"`PORTREVISION` must be bumped."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:320
msgid ""
"People using binary packages will _never_ see the update if `PORTREVISION` "
"is not bumped. Without increasing `PORTREVISION`, the package builders have "
"no way to detect the change and thus, will not rebuild the package."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:323
#, no-wrap
msgid "`PORTEPOCH`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:327
msgid ""
"From time to time a software vendor or FreeBSD porter will do something "
"silly and release a version of their software which is actually numerically "
"less than the previous version. An example of this is a port which goes "
"from foo-20000801 to foo-1.0 (the former will be incorrectly treated as a "
"newer version since 20000801 is a numerically greater value than 1)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:333
msgid ""
"The results of version number comparisons are not always obvious. `pkg "
"version` (see man:pkg-version[8]) can be used to test the comparison of two "
"version number strings. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:338
#, no-wrap
msgid ""
"% pkg version -t 0.031 0.29\n"
">\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:341
msgid ""
"The `>` output indicates that version 0.031 is considered greater than "
"version 0.29, which may not have been obvious to the porter."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:348
msgid ""
"In situations such as this, `PORTEPOCH` must be increased. If `PORTEPOCH` "
"is nonzero it is appended to the package name as described in section 0 "
"above. `PORTEPOCH` must never be decreased or reset to zero, because that "
"would cause comparison to a package from an earlier epoch to fail. For "
"example, the package would not be detected as out of date. The new version "
"number, `1.0,1` in the above example, is still numerically less than the "
"previous version, 20000801, but the `,1` suffix is treated specially by "
"automated tools and found to be greater than the implied suffix `,0` on the "
"earlier package."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:351
msgid ""
"Dropping or resetting `PORTEPOCH` incorrectly leads to no end of grief. If "
"the discussion above was not clear enough, please consult the {freebsd-"
"ports}."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:355
msgid ""
"It is expected that `PORTEPOCH` will not be used for the majority of ports, "
"and that sensible use of `DISTVERSION`, or that use `PORTVERSION` carefully, "
"can often preempt it becoming necessary if a future release of the software "
"changes the version structure. However, care is needed by FreeBSD porters "
"when a vendor release is made without an official version number - such as a "
"code \"snapshot\" release. The temptation is to label the release with the "
"release date, which will cause problems as in the example above when a new "
"\"official\" release is made."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:358
msgid ""
"For example, if a snapshot release is made on the date `20000917`, and the "
"previous version of the software was version `1.2`, do not use `20000917` "
"for `DISTVERSION`. The correct way is a `DISTVERSION` of `1.2.20000917`, or "
"similar, so that the succeeding release, say `1.3`, is still a numerically "
"greater value."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:360
#, no-wrap
msgid "Example of `PORTREVISION` and `PORTEPOCH` Usage"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:363
msgid ""
"The `gtkmumble` port, version `0.10`, is committed to the ports collection:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:368
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.10\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:371
msgid "`PKGNAME` becomes `gtkmumble-0.10`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:374
msgid ""
"A security hole is discovered which requires a local FreeBSD patch. "
"`PORTREVISION` is bumped accordingly."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:380
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.10\n"
"PORTREVISION=\t1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:383
msgid "`PKGNAME` becomes `gtkmumble-0.10_1`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:387
msgid ""
"A new version is released by the vendor, numbered `0.2` (it turns out the "
"author actually intended `0.10` to actually mean `0.1.0`, not \"what comes "
"after 0.9\" - oops, too late now). Since the new minor version `2` is "
"numerically less than the previous version `10`, `PORTEPOCH` must be bumped "
"to manually force the new package to be detected as \"newer\". Since it is "
"a new vendor release of the code, `PORTREVISION` is reset to 0 (or removed "
"from the [.filename]#Makefile#)."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:393
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.2\n"
"PORTEPOCH=\t1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:396
msgid "`PKGNAME` becomes `gtkmumble-0.2,1`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:399
msgid ""
"The next release is 0.3. Since `PORTEPOCH` never decreases, the version "
"variables are now:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:405
#, no-wrap
msgid ""
"PORTNAME=\tgtkmumble\n"
"DISTVERSION=\t0.3\n"
"PORTEPOCH=\t1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:408
msgid "`PKGNAME` becomes `gtkmumble-0.3,1`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:413
msgid ""
"If `PORTEPOCH` were reset to `0` with this upgrade, someone who had "
"installed the `gtkmumble-0.10_1` package would not detect the "
"`gtkmumble-0.3` package as newer, since `3` is still numerically less than "
"`10`. Remember, this is the whole point of `PORTEPOCH` in the first place."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:416
#, no-wrap
msgid "`PKGNAMEPREFIX` and `PKGNAMESUFFIX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:423
msgid ""
"Two optional variables, `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, are combined "
-"with `PORTNAME` and `PORTVERSION` to form `PKGNAME` as `"
-"${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Make sure this "
-"conforms to our <<porting-pkgname,guidelines for a good package name>>. In "
-"particular, the use of a hyphen (`-`) in `PORTVERSION` is _not_ allowed. "
-"Also, if the package name has the _language-_ or the _-compiled.specifics_ "
-"part (see below), use `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, respectively. Do "
-"not make them part of `PORTNAME`."
+"with `PORTNAME` and `PORTVERSION` to form `PKGNAME` as "
+"`${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}`. Make sure "
+"this conforms to our <<porting-pkgname,guidelines for a good package "
+"name>>. In particular, the use of a hyphen (`-`) in `PORTVERSION` is _not_ "
+"allowed. Also, if the package name has the _language-_ or the _-compiled."
+"specifics_ part (see below), use `PKGNAMEPREFIX` and `PKGNAMESUFFIX`, "
+"respectively. Do not make them part of `PORTNAME`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:425
#, no-wrap
msgid "Package Naming Conventions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:429
msgid ""
"These are the conventions to follow when naming packages. This is to make "
"the package directory easy to scan, as there are already thousands of "
"packages and users are going to turn away if they hurt their eyes!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:431
msgid ""
"Package names take the form of [.filename]#language_region-name-compiled."
"specifics-version.numbers#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:434
msgid ""
"The package name is defined as `${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-"
"${PORTVERSION}`. Make sure to set the variables to conform to that format."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:436
#, no-wrap
msgid "[.filename]#language_region-#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:440
msgid ""
"FreeBSD strives to support the native language of its users. The _language-"
"_ part is a two letter abbreviation of the natural language defined by "
"ISO-639 when the port is specific to a certain language. Examples are `ja` "
"for Japanese, `ru` for Russian, `vi` for Vietnamese, `zh` for Chinese, `ko` "
"for Korean and `de` for German."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:443
msgid ""
"If the port is specific to a certain region within the language area, add "
"the two letter country code as well. Examples are `en_US` for US English "
"and `fr_CH` for Swiss French."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:445
msgid "The _language-_ part is set in `PKGNAMEPREFIX`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:447
#, no-wrap
msgid "[.filename]#name#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:452
msgid ""
"Make sure that the port's name and version are clearly separated and placed "
"into `PORTNAME` and `DISTVERSION`. The only reason for `PORTNAME` to "
"contain a version part is if the upstream distribution is really named that "
"way, as in the package:textproc/libxml2[] or package:japanese/kinput2-"
"freewnn[] ports. Otherwise, `PORTNAME` cannot contain any version-specific "
"information. It is quite normal for several ports to have the same "
"`PORTNAME`, as the package:www/apache*[] ports do; in that case, different "
"versions (and different index entries) are distinguished by `PKGNAMEPREFIX` "
"and `PKGNAMESUFFIX` values."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:455
msgid ""
"There is a tradition of naming `Perl 5` modules by prepending `p5-` and "
"converting the double-colon separator to a hyphen. For example, the `Data::"
"Dumper` module becomes `p5-Data-Dumper`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:456
#, no-wrap
msgid "[.filename]#-compiled.specifics#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:460
msgid ""
"If the port can be built with different <<makefile-masterdir,hardcoded "
"defaults>> (usually part of the directory name in a family of ports), the _-"
"compiled.specifics_ part states the compiled-in defaults. The hyphen is "
"optional. Examples are paper size and font units."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:462
msgid "The _-compiled.specifics_ part is set in `PKGNAMESUFFIX`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:464
#, no-wrap
msgid "[.filename]#-version.numbers#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:470
msgid ""
"The version string follows a dash (`-`) and is a period-separated list of "
"integers and single lowercase alphabetics. In particular, it is not "
"permissible to have another dash inside the version string. The only "
"exception is the string `pl` (meaning \"patchlevel\"), which can be used "
"_only_ when there are no major and minor version numbers in the software. "
"If the software version has strings like \"alpha\", \"beta\", \"rc\", or "
"\"pre\", take the first letter and put it immediately after a period. If "
"the version string continues after those names, the numbers follow the "
"single alphabet without an extra period between them (for example, `1.0b2`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:474
msgid ""
"The idea is to make it easier to sort ports by looking at the version "
"string. In particular, make sure version number components are always "
"delimited by a period, and if the date is part of the string, use the "
"`d__yyyy.mm.dd__` format, not `_dd.mm.yyyy_` or the non-Y2K compliant `_yy."
"mm.dd_` format. It is important to prefix the version with a letter, here "
"`d` (for date), in case a release with an actual version number is made, "
"which would be numerically less than `_yyyy_`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:478
msgid ""
"Package name must be unique among all of the ports tree, check that there is "
"not already a port with the same `PORTNAME` and if there is add one of "
"<<porting-pkgnameprefix-suffix,`PKGNAMEPREFIX` or `PKGNAMESUFFIX`>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:481
msgid ""
"Here are some (real) examples on how to convert the name as called by the "
"software authors to a suitable package name, for each line, only one of "
"`DISTVERSION` or `PORTVERSION` is set in, depending on which would be used "
"in the port's [.filename]#Makefile#:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:482
#, no-wrap
msgid "Package Naming Examples"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:486
#, no-wrap
msgid "Distribution Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:487
#, no-wrap
msgid "PKGNAMEPREFIX"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:488
#, no-wrap
msgid "PORTNAME"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:489
#, no-wrap
msgid "PKGNAMESUFFIX"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:493
#, no-wrap
msgid "Reason or comment"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:494
#, no-wrap
msgid "mule-2.2.2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:495
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:497
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:503
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:511
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:513
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:519
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:521
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:527
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:529
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:535
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:537
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:543
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:545
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:551
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:553
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:559
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:561
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:567
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:569
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:577
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:583
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:591
#, no-wrap
msgid "(empty)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:496
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:504
#, no-wrap
msgid "mule"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:498
#, no-wrap
msgid "2.2.2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:501
#, no-wrap
msgid "No changes required"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:502
#, no-wrap
msgid "mule-1.0.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:505
#, no-wrap
msgid "1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:506
#, no-wrap
msgid "1.0.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:509
#, no-wrap
msgid "This is version 1 of mule, and version 2 already exists"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:510
#, no-wrap
msgid "EmiClock-1.0.2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:512
#, no-wrap
msgid "emiclock"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:514
#, no-wrap
msgid "1.0.2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:517
#, no-wrap
msgid "No uppercase names for single programs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:518
#, no-wrap
msgid "rdist-1.3alpha"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:520
#, no-wrap
msgid "rdist"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:522
#, no-wrap
msgid "1.3alpha"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:525
#, no-wrap
msgid "Version will be `1.3.a`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:526
#, no-wrap
msgid "es-0.9-beta1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:528
#, no-wrap
msgid "es"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:530
#, no-wrap
msgid "0.9-beta1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:533
#, no-wrap
msgid "Version will be `0.9.b1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:534
#, no-wrap
msgid "mailman-2.0rc3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:536
#, no-wrap
msgid "mailman"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:538
#, no-wrap
msgid "2.0rc3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:541
#, no-wrap
msgid "Version will be `2.0.r3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:542
#, no-wrap
msgid "v3.3beta021.src"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:544
#, no-wrap
msgid "tiff"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:547
#, no-wrap
msgid "3.3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:549
#, no-wrap
msgid "What the heck was that anyway?"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:550
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:552
#, no-wrap
msgid "tvtwm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:555
#, no-wrap
msgid "p11"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:557
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:565
#, no-wrap
msgid "No version in the filename, use what upstream says it is"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:558
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:560
#, no-wrap
msgid "piewm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:562
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:594
#, no-wrap
msgid "1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:566
#, no-wrap
msgid "xvgr-2.10pl1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:568
#, no-wrap
msgid "xvgr"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:571
#, no-wrap
msgid "2.10.pl1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:573
#, no-wrap
msgid "In that case, `pl1` means patch level, so using DISTVERSION is not possible."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:574
#, no-wrap
msgid "gawk-2.15.6"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:575
#, no-wrap
msgid "ja-"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:576
#, no-wrap
msgid "gawk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:578
#, no-wrap
msgid "2.15.6"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:581
#, no-wrap
msgid "Japanese language version"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:582
#, no-wrap
msgid "psutils-1.13"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:584
#, no-wrap
msgid "psutils"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:585
#, no-wrap
msgid "-letter"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:586
#, no-wrap
msgid "1.13"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:589
#, no-wrap
msgid "Paper size hardcoded at package build time"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:590
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:592
#, no-wrap
msgid "pkfonts"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:593
#, no-wrap
msgid "300"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:596
#, no-wrap
msgid "Package for 300dpi fonts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:600
msgid ""
"If there is absolutely no trace of version information in the original "
"source and it is unlikely that the original author will ever release another "
"version, just set the version string to `1.0` (like the `piewm` example "
"above). Otherwise, ask the original author or use the date string the "
"source file was released on (`d__yyyy.mm.dd__`, or `d__yyyymmdd__`) as the "
"version."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:605
msgid ""
"Use any letter. Here, `d` here stands for date, if the source is a Git "
"repository, `g` followed by the commit date is commonly used, using `s` for "
"snapshot is also common."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:608
#, no-wrap
msgid "Categorization"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:611
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4785
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4784
#, no-wrap
msgid "`CATEGORIES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:617
msgid ""
"When a package is created, it is put under [.filename]#/usr/ports/packages/"
"All# and links are made from one or more subdirectories of [.filename]#/usr/"
"ports/packages#. The names of these subdirectories are specified by the "
"variable `CATEGORIES`. It is intended to make life easier for the user when "
"he is wading through the pile of packages on the FTP site or the CDROM. "
"Please take a look at the <<porting-categories,current list of categories>> "
"and pick the ones that are suitable for the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:621
msgid ""
"This list also determines where in the ports tree the port is imported. If "
"there is more than one category here, the port files must be put in the "
"subdirectory with the name of the first category. See <<choosing-categories,"
"below>> for more discussion about how to pick the right categories."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:623
#, no-wrap
msgid "Current List of Categories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:628
msgid ""
"Here is the current list of port categories. Those marked with an asterisk "
"(`*`) are _virtual_ categories-those that do not have a corresponding "
"subdirectory in the ports tree. They are only used as secondary categories, "
"and only for search purposes."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:632
msgid ""
"For non-virtual categories, there is a one-line description in `COMMENT` in "
"that subdirectory's [.filename]#Makefile#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:638
#, no-wrap
msgid "Category"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:639
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1451
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1852
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:641
#, no-wrap
msgid "Notes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:642
#, no-wrap
msgid "[.filename]#accessibility#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:643
#, no-wrap
msgid "Ports to help disabled users."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:646
#, no-wrap
msgid "[.filename]#afterstep#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:647
#, no-wrap
msgid "Ports to support the http://www.afterstep.org/[AfterStep] window manager."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:650
#, no-wrap
msgid "[.filename]#arabic#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:651
#, no-wrap
msgid "Arabic language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:654
#, no-wrap
msgid "[.filename]#archivers#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:655
#, no-wrap
msgid "Archiving tools."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:658
#, no-wrap
msgid "[.filename]#astro#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:659
#, no-wrap
msgid "Astronomical ports."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:662
#, no-wrap
msgid "[.filename]#audio#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:663
#, no-wrap
msgid "Sound support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:666
#, no-wrap
msgid "[.filename]#benchmarks#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:667
#, no-wrap
msgid "Benchmarking utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:670
#, no-wrap
msgid "[.filename]#biology#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:671
#, no-wrap
msgid "Biology-related software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:674
#, no-wrap
msgid "[.filename]#cad#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:675
#, no-wrap
msgid "Computer aided design tools."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:678
#, no-wrap
msgid "[.filename]#chinese#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:679
#, no-wrap
msgid "Chinese language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:682
#, no-wrap
msgid "[.filename]#comms#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:683
#, no-wrap
msgid "Communication software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:685
#, no-wrap
msgid "Mostly software to talk to the serial port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:686
#, no-wrap
msgid "[.filename]#converters#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:687
#, no-wrap
msgid "Character code converters."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:690
#, no-wrap
msgid "[.filename]#databases#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:691
#, no-wrap
msgid "Databases."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:694
#, no-wrap
msgid "[.filename]#deskutils#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:695
#, no-wrap
msgid "Things that used to be on the desktop before computers were invented."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:698
#, no-wrap
msgid "[.filename]#devel#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:699
#, no-wrap
msgid "Development utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:701
#, no-wrap
msgid "Do not put libraries here just because they are libraries. They should _not_ be in this category unless they truly do not belong anywhere else."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:702
#, no-wrap
msgid "[.filename]#dns#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:703
#, no-wrap
msgid "DNS-related software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:706
#, no-wrap
msgid "[.filename]#docs#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:707
#, no-wrap
msgid "Meta-ports for FreeBSD documentation."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:710
#, no-wrap
msgid "[.filename]#editors#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:711
#, no-wrap
msgid "General editors."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:713
#, no-wrap
msgid "Specialized editors go in the section for those tools. For example, a mathematical-formula editor will go in [.filename]#math#, and have [.filename]#editors# as a second category."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:714
#, no-wrap
msgid "[.filename]#education#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:715
#, no-wrap
msgid "Education-related software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:717
#, no-wrap
msgid "This includes applications, utilities, or games primarily or substantially designed to help the user learn a specific topic or study in general. It also includes course-writing applications, course-delivery applications, and classroom or school management applications"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:718
#, no-wrap
msgid "[.filename]#elisp#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:719
#, no-wrap
msgid "Emacs-lisp ports."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:722
#, no-wrap
msgid "[.filename]#emulators#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:723
#, no-wrap
msgid "Emulators for other operating systems."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:725
#, no-wrap
msgid "Terminal emulators do _not_ belong here. X-based ones go to [.filename]#x11# and text-based ones to either [.filename]#comms# or [.filename]#misc#, depending on the exact functionality."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:726
#, no-wrap
msgid "[.filename]#enlightenment#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:727
#, no-wrap
msgid "Ports related to the Enlightenment window manager."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:730
#, no-wrap
msgid "[.filename]#finance#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:731
#, no-wrap
msgid "Monetary, financial and related applications."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:734
#, no-wrap
msgid "[.filename]#french#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:735
#, no-wrap
msgid "French language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:738
#, no-wrap
msgid "[.filename]#ftp#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:739
#, no-wrap
msgid "FTP client and server utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:741
#, no-wrap
msgid "If the port speaks both FTP and HTTP, put it in [.filename]#ftp# with a secondary category of [.filename]#www#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:742
#, no-wrap
msgid "[.filename]#games#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:743
#, no-wrap
msgid "Games."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:746
#, no-wrap
msgid "[.filename]#geography#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:747
#, no-wrap
msgid "Geography-related software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:750
#, no-wrap
msgid "[.filename]#german#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:751
#, no-wrap
msgid "German language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:754
#, no-wrap
msgid "[.filename]#gnome#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:755
#, no-wrap
msgid "Ports from the https://www.gnome.org/[GNOME] Project."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:758
#, no-wrap
msgid "[.filename]#gnustep#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:759
#, no-wrap
msgid "Software related to the GNUstep desktop environment."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:762
#, no-wrap
msgid "[.filename]#graphics#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:763
#, no-wrap
msgid "Graphics utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:766
#, no-wrap
msgid "[.filename]#hamradio#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:767
#, no-wrap
msgid "Software for amateur radio."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:770
#, no-wrap
msgid "[.filename]#haskell#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:771
#, no-wrap
msgid "Software related to the Haskell language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:774
#, no-wrap
msgid "[.filename]#hebrew#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:775
#, no-wrap
msgid "Hebrew language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:778
#, no-wrap
msgid "[.filename]#hungarian#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:779
#, no-wrap
msgid "Hungarian language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:782
#, no-wrap
msgid "[.filename]#irc#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:783
#, no-wrap
msgid "Internet Relay Chat utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:786
#, no-wrap
msgid "[.filename]#japanese#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:787
#, no-wrap
msgid "Japanese language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:790
#, no-wrap
msgid "[.filename]#java#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:791
#, no-wrap
msgid "Software related to the Java(TM) language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:793
#, no-wrap
msgid "The [.filename]#java# category must not be the only one for a port. Save for ports directly related to the Java language, porters are also encouraged not to use [.filename]#java# as the main category of a port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:794
#, no-wrap
msgid "[.filename]#kde#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:795
#, no-wrap
msgid "Ports from the https://www.kde.org/[KDE] Project (generic)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:798
#, no-wrap
msgid "[.filename]#kde-applications#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:799
#, no-wrap
msgid "Applications from the https://www.kde.org/[KDE] Project."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:802
#, no-wrap
msgid "[.filename]#kde-frameworks#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:803
#, no-wrap
msgid "Add-on libraries from the https://www.kde.org/[KDE] Project for programming with Qt."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:806
#, no-wrap
msgid "[.filename]#kde-plasma#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:807
#, no-wrap
msgid "Desktop from the https://www.kde.org/[KDE] Project."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:810
#, no-wrap
msgid "[.filename]#kld#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:811
#, no-wrap
msgid "Kernel loadable modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:814
#, no-wrap
msgid "[.filename]#korean#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:815
#, no-wrap
msgid "Korean language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:818
#, no-wrap
msgid "[.filename]#lang#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:819
#, no-wrap
msgid "Programming languages."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:822
#, no-wrap
msgid "[.filename]#linux#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:823
#, no-wrap
msgid "Linux applications and support utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:826
#, no-wrap
msgid "[.filename]#lisp#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:827
#, no-wrap
msgid "Software related to the Lisp language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:830
#, no-wrap
msgid "[.filename]#mail#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:831
#, no-wrap
msgid "Mail software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:834
#, no-wrap
msgid "[.filename]#mate#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:835
#, no-wrap
msgid "Ports related to the MATE desktop environment, a fork of GNOME 2."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:838
#, no-wrap
msgid "[.filename]#math#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:839
#, no-wrap
msgid "Numerical computation software and other utilities for mathematics."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:842
#, no-wrap
msgid "[.filename]#mbone#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:843
#, no-wrap
msgid "MBone applications."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:846
#, no-wrap
msgid "[.filename]#misc#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:847
#, no-wrap
msgid "Miscellaneous utilities"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:849
#, no-wrap
msgid "Things that do not belong anywhere else. If at all possible, try to find a better category for the port than `misc`, as ports tend to be overlooked in here."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:850
#, no-wrap
msgid "[.filename]#multimedia#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:851
#, no-wrap
msgid "Multimedia software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:854
#, no-wrap
msgid "[.filename]#net#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:855
#, no-wrap
msgid "Miscellaneous networking software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:858
#, no-wrap
msgid "[.filename]#net-im#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:859
#, no-wrap
msgid "Instant messaging software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:862
#, no-wrap
msgid "[.filename]#net-mgmt#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:863
#, no-wrap
msgid "Networking management software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:866
#, no-wrap
msgid "[.filename]#net-p2p#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:867
#, no-wrap
msgid "Peer to peer network applications."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:870
#, no-wrap
msgid "[.filename]#net-vpn#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:871
#, no-wrap
msgid "Virtual Private Network applications."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:874
#, no-wrap
msgid "[.filename]#news#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:875
#, no-wrap
msgid "USENET news software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:878
#, no-wrap
msgid "[.filename]#parallel#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:879
#, no-wrap
msgid "Applications dealing with parallelism in computing."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:882
#, no-wrap
msgid "[.filename]#pear#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:883
#, no-wrap
msgid "Ports related to the Pear PHP framework."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:886
#, no-wrap
msgid "[.filename]#perl5#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:887
#, no-wrap
msgid "Ports that require Perl version 5 to run."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:890
#, no-wrap
msgid "[.filename]#plan9#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:891
#, no-wrap
msgid "Various programs from https://9p.io/wiki/plan9/Download/index.html[Plan9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:894
#, no-wrap
msgid "[.filename]#polish#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:895
#, no-wrap
msgid "Polish language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:898
#, no-wrap
msgid "[.filename]#ports-mgmt#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:899
#, no-wrap
msgid "Ports for managing, installing and developing FreeBSD ports and packages."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:902
#, no-wrap
msgid "[.filename]#portuguese#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:903
#, no-wrap
msgid "Portuguese language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:906
#, no-wrap
msgid "[.filename]#print#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:907
#, no-wrap
msgid "Printing software."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:909
#, no-wrap
msgid "Desktop publishing tools (previewers, etc.) belong here too."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:910
#, no-wrap
msgid "[.filename]#python#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:911
#, no-wrap
msgid "Software related to the https://www.python.org/[Python] language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:914
#, no-wrap
msgid "[.filename]#ruby#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:915
#, no-wrap
msgid "Software related to the https://www.ruby-lang.org/[Ruby] language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:918
#, no-wrap
msgid "[.filename]#rubygems#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:919
#, no-wrap
msgid "Ports of https://www.rubygems.org/[RubyGems] packages."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:922
#, no-wrap
msgid "[.filename]#russian#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:923
#, no-wrap
msgid "Russian language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:926
#, no-wrap
msgid "[.filename]#scheme#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:927
#, no-wrap
msgid "Software related to the Scheme language."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:930
#, no-wrap
msgid "[.filename]#science#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:931
#, no-wrap
msgid "Scientific ports that do not fit into other categories such as [.filename]#astro#, [.filename]#biology# and [.filename]#math#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:934
#, no-wrap
msgid "[.filename]#security#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:935
#, no-wrap
msgid "Security utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:938
#, no-wrap
msgid "[.filename]#shells#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:939
#, no-wrap
msgid "Command line shells."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:942
#, no-wrap
msgid "[.filename]#spanish#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:943
#, no-wrap
msgid "Spanish language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:946
#, no-wrap
msgid "[.filename]#sysutils#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:947
#, no-wrap
msgid "System utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:950
#, no-wrap
msgid "[.filename]#tcl#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:951
#, no-wrap
msgid "Ports that use Tcl to run."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:954
#, no-wrap
msgid "[.filename]#textproc#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:955
#, no-wrap
msgid "Text processing utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:957
#, no-wrap
msgid "It does not include desktop publishing tools, which go to [.filename]#print#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:958
#, no-wrap
msgid "[.filename]#tk#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:959
#, no-wrap
msgid "Ports that use Tk to run."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:962
#, no-wrap
msgid "[.filename]#ukrainian#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:963
#, no-wrap
msgid "Ukrainian language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:966
#, no-wrap
msgid "[.filename]#vietnamese#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:967
#, no-wrap
msgid "Vietnamese language support."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:970
#, no-wrap
msgid "[.filename]#wayland#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:971
#, no-wrap
msgid "Ports to support the Wayland display server."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:974
#, no-wrap
msgid "[.filename]#windowmaker#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:975
#, no-wrap
msgid "Ports to support the Window Maker window manager."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:978
#, no-wrap
msgid "[.filename]#www#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:979
#, no-wrap
msgid "Software related to the World Wide Web."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:981
#, no-wrap
msgid "HTML language support belongs here too."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:982
#, no-wrap
msgid "[.filename]#x11#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:983
#, no-wrap
msgid "The X Window System and friends."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:985
#, no-wrap
msgid "This category is only for software that directly supports the window system. Do not put regular X applications here. Most of them go into other [.filename]#x11-*# categories (see below)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:986
#, no-wrap
msgid "[.filename]#x11-clocks#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:987
#, no-wrap
msgid "X11 clocks."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:990
#, no-wrap
msgid "[.filename]#x11-drivers#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:991
#, no-wrap
msgid "X11 drivers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:994
#, no-wrap
msgid "[.filename]#x11-fm#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:995
#, no-wrap
msgid "X11 file managers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:998
#, no-wrap
msgid "[.filename]#x11-fonts#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:999
#, no-wrap
msgid "X11 fonts and font utilities."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1002
#, no-wrap
msgid "[.filename]#x11-servers#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1003
#, no-wrap
msgid "X11 servers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1006
#, no-wrap
msgid "[.filename]#x11-themes#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1007
#, no-wrap
msgid "X11 themes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1010
#, no-wrap
msgid "[.filename]#x11-toolkits#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1011
#, no-wrap
msgid "X11 toolkits."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1014
#, no-wrap
msgid "[.filename]#x11-wm#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1015
#, no-wrap
msgid "X11 window managers."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1018
#, no-wrap
msgid "[.filename]#xfce#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1019
#, no-wrap
msgid "Ports related to the https://www.xfce.org/[Xfce] desktop environment."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1022
#, no-wrap
msgid "[.filename]#zope#`*`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1023
#, no-wrap
msgid "https://www.zope.org/[Zope] support."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1027
#, no-wrap
msgid "Choosing the Right Category"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1032
msgid ""
"As many of the categories overlap, choosing which of the categories will be "
"the primary category of the port can be tedious. There are several rules "
"that govern this issue. Here is the list of priorities, in decreasing order "
"of precedence:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1034
msgid ""
"The first category must be a physical category (see <<porting-categories,"
"above>>). This is necessary to make the packaging work. Virtual categories "
"and physical categories may be intermixed after that."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1035
msgid ""
"Language specific categories always come first. For example, if the port "
"installs Japanese X11 fonts, then the `CATEGORIES` line would read [."
"filename]#japanese x11-fonts#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1036
msgid ""
"Specific categories are listed before less-specific ones. For instance, an "
"HTML editor is listed as [.filename]#www editors#, not the other way around. "
"Also, do not list [.filename]#net# when the port belongs to any of [."
"filename]#irc#, [.filename]#mail#, [.filename]#news#, [.filename]#security#, "
"or [.filename]#www#, as [.filename]#net# is included implicitly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1037
msgid ""
"[.filename]#x11# is used as a secondary category only when the primary "
"category is a natural language. In particular, do not put [.filename]#x11# "
"in the category line for X applications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1038
msgid ""
"Emacs modes are placed in the same ports category as the application "
"supported by the mode, not in [.filename]#editors#. For example, an Emacs "
"mode to edit source files of some programming language goes into [."
"filename]#lang#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1039
msgid ""
"Ports installing loadable kernel modules also have the virtual category [."
"filename]#kld# in their `CATEGORIES` line. This is one of the things handled "
"automatically by adding `USES=kmod`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1040
msgid ""
"[.filename]#misc# does not appear with any other non-virtual category. If "
"there is `misc` with something else in `CATEGORIES`, that means `misc` can "
"safely be deleted and the port placed only in the other subdirectory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1041
msgid ""
"If the port truly does not belong anywhere else, put it in [.filename]#misc#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1045
msgid ""
"If the category is not clearly defined, please put a comment to that effect "
"in the https://bugs.freebsd.org/submit/[port submission] in the bug database "
"so we can discuss it before we import it. As a committer, send a note to "
"the {freebsd-ports} so we can discuss it first. Too often, new ports are "
"imported to the wrong category only to be moved right away."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1047
#, no-wrap
msgid "Proposing a New Category"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1052
msgid ""
"As the Ports Collection has grown over time, various new categories have "
"been introduced. New categories can either be _virtual_ categories-those "
"that do not have a corresponding subdirectory in the ports tree- or "
"_physical_ categories-those that do. This section discusses the issues "
"involved in creating a new physical category. Read it thoroughly before "
"proposing a new one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1054
msgid ""
"Our existing practice has been to avoid creating a new physical category "
"unless either a large number of ports would logically belong to it, or the "
"ports that would belong to it are a logically distinct group that is of "
"limited general interest (for instance, categories related to spoken human "
"languages), or preferably both."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1058
msgid ""
"The rationale for this is that such a change creates a extref:{committers-"
"guide}[fair amount of work, ports] for both the committers and also for all "
"users who track changes to the Ports Collection. In addition, proposed "
"category changes just naturally seem to attract controversy. (Perhaps this "
"is because there is no clear consensus on when a category is \"too big\", "
"nor whether categories should lend themselves to browsing (and thus what "
"number of categories would be an ideal number), and so forth.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1060
msgid "Here is the procedure:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1063
msgid ""
"Propose the new category on {freebsd-ports}. Include a detailed rationale "
"for the new category, including why the existing categories are not "
"sufficient, and the list of existing ports proposed to move. (If there are "
"new ports pending in Bugzilla that would fit this category, list them too.) "
"If you are the maintainer and/or submitter, respectively, mention that as it "
"may help the case."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1064
msgid "Participate in the discussion."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1065
msgid ""
"If it seems that there is support for the idea, file a PR which includes "
"both the rationale and the list of existing ports that need to be moved. "
"Ideally, this PR would also include these patches:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1067
msgid "[.filename]##Makefile##s for the new ports once they are repocopied"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1068
msgid "[.filename]#Makefile# for the new category"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1069
msgid "[.filename]#Makefile# for the old ports' categories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1070
msgid "[.filename]##Makefile##s for ports that depend on the old ports"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1071
msgid ""
"(for extra credit, include the other files that have to change, as per the "
"procedure in the Committer's Guide.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1073
msgid ""
"Since it affects the ports infrastructure and involves moving and patching "
"many ports but also possibly running regression tests on the build cluster, "
"assign the PR to the {portmgr}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1074
msgid ""
"If that PR is approved, a committer will need to follow the rest of the "
"procedure that is extref:{committers-guide}[outlined in the Committer's "
"Guide, ports]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1077
msgid ""
"Proposing a new virtual category is similar to the above but much less "
"involved, since no ports will actually have to move. In this case, the only "
"patches to include in the PR would be those to add the new category to "
"`CATEGORIES` of the affected ports."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1079
#, no-wrap
msgid "Proposing Reorganizing All the Categories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1085
msgid ""
"Occasionally someone proposes reorganizing the categories with either a 2-"
"level structure, or some other kind of keyword structure. To date, nothing "
"has come of any of these proposals because, while they are very easy to "
"make, the effort involved to retrofit the entire existing ports collection "
"with any kind of reorganization is daunting to say the very least. Please "
"read the history of these proposals in the mailing list archives before "
"posting this idea. Furthermore, be prepared to be challenged to offer a "
"working prototype."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1087
#, no-wrap
msgid "The Distribution Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1090
msgid ""
"The second part of the [.filename]#Makefile# describes the files that must "
"be downloaded to build the port, and where they can be downloaded."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1092
#, no-wrap
msgid "`DISTNAME`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1099
msgid ""
"`DISTNAME` is the name of the port as called by the authors of the "
"software. `DISTNAME` defaults to `${PORTNAME}-"
"${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`, and if not set, "
"`DISTVERSION` defaults to `${PORTVERSION}` so override `DISTNAME` only if "
"necessary. `DISTNAME` is only used in two places. First, the distribution "
"file list (`DISTFILES`) defaults to `${DISTNAME}${EXTRACT_SUFX}`. Second, "
"the distribution file is expected to extract into a subdirectory named "
"`WRKSRC`, which defaults to [.filename]#work/${DISTNAME}#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1102
msgid ""
"Some vendor's distribution names which do not fit into the `${PORTNAME}-"
"${PORTVERSION}`-scheme can be handled automatically by setting "
"`DISTVERSIONPREFIX`, `DISTVERSION`, and `DISTVERSIONSUFFIX`. `PORTVERSION` "
"will be derived from `DISTVERSION` automatically."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1107
msgid ""
"Only one of `PORTVERSION` and `DISTVERSION` can be set at a time. If "
"`DISTVERSION` does not derive a correct `PORTVERSION`, do not use "
"`DISTVERSION`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1111
msgid ""
"If the upstream version scheme can be derived into a ports-compatible "
"version scheme, set some variable to the upstream version, _do not_ use "
"`DISTVERSION` as the variable name. Set `PORTVERSION` to the computed "
"version based on the variable you created, and set `DISTNAME` accordingly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1113
msgid ""
"If the upstream version scheme cannot easily be coerced into a ports-"
"compatible value, set `PORTVERSION` to a sensible value, and set `DISTNAME` "
"with `PORTNAME` with the verbatim upstream version."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1115
#, no-wrap
msgid "Deriving `PORTVERSION` Manually"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1121
msgid ""
"BIND9 uses a version scheme that is not compatible with the ports versions "
"(it has `-` in its versions) and cannot be derived using `DISTVERSION` "
"because after the 9.9.9 release, it will release a \"patchlevels\" in the "
"form of `9.9.9-P1`. DISTVERSION would translate that into `9.9.9.p1`, "
"which, in the ports versioning scheme means 9.9.9 pre-release 1, which is "
"before 9.9.9 and not after. So `PORTVERSION` is manually derived from an "
"`ISCVERSION` variable to output `9.9.9p1`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1123
msgid ""
"The order into which the ports framework, and pkg, will sort versions is "
"checked using the `-t` argument of man:pkg-version[8]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1130
#, no-wrap
msgid ""
"% pkg version -t 9.9.9 9.9.9.p1\n"
"> <.>\n"
"% pkg version -t 9.9.9 9.9.9p1\n"
"< <.>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1133
msgid ""
"The `>` sign means that the first argument passed to `-t` is greater than "
"the second argument. `9.9.9` is after `9.9.9.p1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1134
msgid ""
"The `<` sign means that the first argument passed to `-t` is less than the "
"second argument. `9.9.9` is before `9.9.9p1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1136
msgid ""
"In the port [.filename]#Makefile#, for example package:dns/bind99[], it is "
"achieved by:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1145
#, no-wrap
msgid ""
"PORTNAME=\tbind\n"
"PORTVERSION=\t${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/}\n"
"CATEGORIES=\tdns net\n"
"MASTER_SITES=\tISC/bind9/${ISCVERSION}\n"
"PKGNAMESUFFIX=\t99\n"
"DISTNAME=\t${PORTNAME}-${ISCVERSION}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1149
#, no-wrap
msgid ""
"MAINTAINER=\tmat@FreeBSD.org\n"
"COMMENT=\tBIND DNS suite with updated DNSSEC and DNS64\n"
"WWW=\t\thttps://www.isc.org/bind/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1151
#, no-wrap
msgid "LICENSE=\tISCL\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1154
#, no-wrap
msgid ""
"# ISC releases things like 9.8.0-P1 or 9.8.1rc1, which our versioning does not like\n"
"ISCVERSION=\t9.9.9-P6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1160
msgid ""
"Define upstream version in `ISCVERSION`, with a comment saying _why_ it is "
"needed. Use `ISCVERSION` to get a ports-compatible `PORTVERSION`. Use "
"`ISCVERSION` directly to get the correct URL for fetching the distribution "
"file. Use `ISCVERSION` directly to name the distribution file."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1163
#, no-wrap
msgid "Derive `DISTNAME` from `PORTVERSION`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1167
msgid ""
"From time to time, the distribution file name has little or no relation to "
"the version of the software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1169
msgid ""
"In package:comms/kermit[], only the last element of the version is present "
"in the distribution file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1177
#, no-wrap
msgid ""
"PORTNAME=\tkermit\n"
"PORTVERSION=\t9.0.304\n"
"CATEGORIES=\tcomms ftp net\n"
"MASTER_SITES=\tftp://ftp.kermitproject.org/kermit/test/tar/\n"
"DISTNAME=\tcku${PORTVERSION:E}-dev20\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1181
msgid ""
"The `:E` man:make[1] modifier returns the suffix of the variable, in this "
"case, `304`. The distribution file is correctly generated as `cku304-dev20."
"tar.gz`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1184
#, no-wrap
msgid "Exotic Case 1"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1188
msgid ""
"Sometimes, there is no relation between the software name, its version, and "
"the distribution file it is distributed in."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1190
msgid "From package:audio/libworkman[]:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1198
#, no-wrap
msgid ""
"PORTNAME= libworkman\n"
"PORTVERSION= 1.4\n"
"CATEGORIES= audio\n"
"MASTER_SITES= LOCAL/jim\n"
"DISTNAME= ${PORTNAME}-1999-06-20\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1203
#, no-wrap
msgid "Exotic Case 2"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1207
msgid ""
"In package:comms/librs232[], the distribution file is not versioned, so "
"using <<makefile-dist_subdir,`DIST_SUBDIR`>> is needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1216
#, no-wrap
msgid ""
"PORTNAME= librs232\n"
"PORTVERSION= 20160710\n"
"CATEGORIES= comms\n"
"MASTER_SITES= http://www.teuniz.net/RS-232/\n"
"DISTNAME= RS-232\n"
"DIST_SUBDIR=\t${PORTNAME}-${PORTVERSION}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1224
msgid ""
"`PKGNAMEPREFIX` and `PKGNAMESUFFIX` do not affect `DISTNAME`. Also note "
"that if `WRKSRC` is equal to [.filename]#${WRKDIR}/${DISTNAME}# while the "
"original source archive is named something other than `${PORTNAME}-"
"${PORTVERSION}${EXTRACT_SUFX}`, leave `DISTNAME` alone- defining only "
"`DISTFILES` is easier than both `DISTNAME` and `WRKSRC` (and possibly "
"`EXTRACT_SUFX`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1227
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4815
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4814
#, no-wrap
msgid "`MASTER_SITES`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1231
msgid ""
"Record the directory part of the FTP/HTTP-URL pointing at the original "
"tarball in `MASTER_SITES`. Do not forget the trailing slash ([.filename]#/"
"#)!"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1233
msgid ""
"The `make` macros will try to use this specification for grabbing the "
"distribution file with `FETCH` if they cannot find it already on the system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1236
msgid ""
"It is recommended that multiple sites are included on this list, preferably "
"from different continents. This will safeguard against wide-area network "
"problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1244
msgid ""
"`MASTER_SITES` must not be blank. It must point to the actual site hosting "
"the distribution files. It cannot point to web archives, or the FreeBSD "
"distribution files cache sites. The only exception to this rule is ports "
"that do not have any distribution files. For example, meta-ports do not "
"have any distribution files, so `MASTER_SITES` does not need to be set."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1247
#, no-wrap
msgid "Using `MASTER_SITE_*` Variables"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1250
msgid ""
"Shortcut abbreviations are available for popular archives like SourceForge "
"(`SOURCEFORGE`), GNU (`GNU`), or Perl CPAN (`PERL_CPAN`). `MASTER_SITES` can "
"use them directly:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1254
#, no-wrap
msgid "MASTER_SITES=\tGNU/make\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1258
msgid ""
"The older expanded format still works, but all ports have been converted to "
"the compact format. The expanded format looks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1263
#, no-wrap
msgid ""
"MASTER_SITES=\t\t${MASTER_SITE_GNU}\n"
"MASTER_SITE_SUBDIR=\tmake\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1267
msgid ""
"These values and variables are defined in https://cgit.freebsd.org/ports/"
"tree/Mk/bsd.sites.mk[Mk/bsd.sites.mk]. New entries are added often, so make "
"sure to check the latest version of this file before submitting a port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1272
msgid ""
"For any `MASTER_SITE_FOO` variable, the shorthand `_FOO_` can be used. For "
"example, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1276
#, no-wrap
msgid "MASTER_SITES=\tFOO\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1279
msgid "If `MASTER_SITE_SUBDIR` is needed, use this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1283
#, no-wrap
msgid "MASTER_SITES=\tFOO/bar\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1290
msgid ""
"Some `MASTER_SITE_*` names are quite long, and for ease of use, shortcuts "
"have been defined:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1292
#, no-wrap
msgid "Shortcuts for `MASTER_SITE_*` Macros"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1296
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1354
#, no-wrap
msgid "Macro"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1298
#, no-wrap
msgid "Shortcut"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1299
#, no-wrap
msgid "`PERL_CPAN`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1301
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1372
#, no-wrap
msgid "`CPAN`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1302
#, no-wrap
msgid "`GITHUB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1304
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1393
#, no-wrap
msgid "`GH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1305
#, no-wrap
msgid "`GITHUB_CLOUD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1307
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1396
#, no-wrap
msgid "`GHC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1308
#, no-wrap
msgid "`LIBREOFFICE_DEV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1310
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1414
#, no-wrap
msgid "`LODEV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1311
#, no-wrap
msgid "`NETLIB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1313
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1423
#, no-wrap
msgid "`NL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1314
#, no-wrap
msgid "`RUBYGEMS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1316
#, no-wrap
msgid "`RG`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1317
#, no-wrap
msgid "`SOURCEFORGE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1318
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1435
#, no-wrap
msgid "`SF`"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1322
#, no-wrap
msgid "Magic MASTER_SITES Macros"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1327
msgid ""
"Several \"magic\" macros exist for popular sites with a predictable "
"directory structure. For these, just use the abbreviation and the system "
"will choose a subdirectory automatically. For a port named `Stardict`, of "
"version `1.2.3`, and hosted on SourceForge, adding this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1331
#, no-wrap
msgid "MASTER_SITES=\tSF\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1335
msgid ""
"infers a subdirectory named `/project/stardict/stardict/1.2.3`. If the "
"inferred directory is incorrect, it can be overridden:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1339
#, no-wrap
msgid "MASTER_SITES=\tSF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1342
msgid "This can also be written as"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1347
#, no-wrap
msgid ""
"MASTER_SITES=\tSF\n"
"MASTER_SITE_SUBDIR=\tstardict/WyabdcRealPeopleTTS/${PORTVERSION}\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1350
#, no-wrap
msgid "Magic `MASTER_SITES` Macros"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1356
#, no-wrap
msgid "Assumed subdirectory"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1357
#, no-wrap
msgid "`APACHE_COMMONS_BINARIES`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1359
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1362
#, no-wrap
msgid "`${PORTNAME:S,commons-,,}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1360
#, no-wrap
msgid "`APACHE_COMMONS_SOURCE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1363
#, no-wrap
msgid "`APACHE_JAKARTA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1365
#, no-wrap
msgid "`${PORTNAME:S,-,/,}/source`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1366
#, no-wrap
msgid "`BERLIOS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1368
#, no-wrap
msgid "`${PORTNAME:tl}.berlios`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1369
#, no-wrap
msgid "`CHEESESHOP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1371
#, no-wrap
msgid "`source/${DISTNAME:C/(.).\\*/\\1/}/${DISTNAME:C/(.*)-[0-9].*/\\1/}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1374
#, no-wrap
msgid "`${PORTNAME:C/-.*//}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1375
#, no-wrap
msgid "`DEBIAN`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1377
#, no-wrap
msgid "`pool/main/${PORTNAME:C/^((lib)?.).*$/\\1/}/${PORTNAME}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1378
#, no-wrap
msgid "`FARSIGHT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1380
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1404
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1407
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1410
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1413
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1416
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1425
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1431
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1457
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1461
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1862
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1866
#, no-wrap
msgid "`${PORTNAME}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1381
#, no-wrap
msgid "`FESTIVAL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1383
#, no-wrap
msgid "`${PORTREVISION}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1384
#, no-wrap
msgid "`GCC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1386
#, no-wrap
msgid "`releases/${DISTNAME}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1387
#, no-wrap
msgid "`GENTOO`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1389
#, no-wrap
msgid "`distfiles`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1390
#, no-wrap
msgid "`GIMP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1392
#, no-wrap
msgid "`${PORTNAME}/${PORTVERSION:R}/`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1395
#, no-wrap
msgid "`${GH_ACCOUNT}/${GH_PROJECT}/tar.gz/${GH_TAGNAME}?dummy=/`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1398
#, no-wrap
msgid "`${GH_ACCOUNT}/${GH_PROJECT}/`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1399
#, no-wrap
msgid "`GNOME`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1401
#, no-wrap
msgid "`sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1402
#, no-wrap
msgid "`GNU`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1405
#, no-wrap
msgid "`GNUPG`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1408
#, no-wrap
msgid "`GNU_ALPHA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1411
#, no-wrap
msgid "`HORDE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1417
#, no-wrap
msgid "`MATE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1419
#, no-wrap
msgid "`${PORTVERSION:C/^([0-9]+\\.[0-9]+).*/\\1/}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1420
#, no-wrap
msgid "`MOZDEV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1422
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1434
#, no-wrap
msgid "`${PORTNAME:tl}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1426
#, no-wrap
msgid "`QT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1428
#, no-wrap
msgid "`archive/qt/${PORTVERSION:R}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1429
#, no-wrap
msgid "`SAMBA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1432
#, no-wrap
msgid "`SAVANNAH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1436
#, no-wrap
msgid "`${PORTNAME:tl}/${PORTNAME:tl}/${PORTVERSION}`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1439
#, no-wrap
msgid "`USE_GITHUB`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1444
msgid ""
"If the distribution file comes from a specific commit or tag on https://"
"github.com/[GitHub] for which there is no officially released file, there is "
"an easy way to set the right `DISTNAME` and `MASTER_SITES` automatically. "
"These variables are available:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1446
#, no-wrap
msgid "`USE_GITHUB` Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1450
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1851
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3607
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1453
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1854
#, no-wrap
msgid "Default"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1454
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4797
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4796
#, no-wrap
msgid "`GH_ACCOUNT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1455
#, no-wrap
msgid "Account name of the GitHub user hosting the project"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1458
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4798
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4797
#, no-wrap
msgid "`GH_PROJECT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1459
#, no-wrap
msgid "Name of the project on GitHub"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1462
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4800
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4799
#, no-wrap
msgid "`GH_TAGNAME`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1463
#, no-wrap
msgid "Name of the tag to download (2.0.1, hash, ...) Using the name of a branch here is incorrect. It is also possible to use the hash of a commit id to do a snapshot."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1465
#, no-wrap
msgid "`${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1466
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4799
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4798
#, no-wrap
msgid "`GH_SUBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1467
#, no-wrap
msgid "When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in <<makefile-master_sites-github-multiple>> for more information."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1469
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1874
#, no-wrap
msgid "(none)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1470
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4801
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4800
#, no-wrap
msgid "`GH_TUPLE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1471
#, no-wrap
msgid "`GH_TUPLE` allows putting `GH_ACCOUNT`, `GH_PROJECT`, `GH_TAGNAME`, and `GH_SUBDIR` into a single variable. The format is _account_`:`_project_`:`_tagname_`:`_group_`/`_subdir_. The `/`_subdir_ part is optional. It is helpful when there is more than one GitHub project from which to fetch."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1476
msgid ""
"Do not use `GH_TUPLE` for the default distribution file, as it has no "
"default."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1479
#, no-wrap
msgid "Simple Use of `USE_GITHUB`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1484
msgid ""
"While trying to make a port for version `1.2.7` of pkg from the FreeBSD user "
"on github, at https://github.com/freebsd/pkg/[], The [.filename]#Makefile# "
"would end up looking like this (slightly stripped for the example):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1489
#, no-wrap
msgid ""
"PORTNAME=\tpkg\n"
"DISTVERSION=\t1.2.7\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1492
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tfreebsd\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1495
msgid ""
-"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `"
-"${WRKDIR}/pkg-1.2.7`."
+"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to "
+"`${WRKDIR}/pkg-1.2.7`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1498
#, no-wrap
msgid "More Complete Use of `USE_GITHUB`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1502
msgid ""
"While trying to make a port for the bleeding edge version of pkg from the "
"FreeBSD user on github, at https://github.com/freebsd/pkg/[], the [."
"filename]#Makefile# ends up looking like this (slightly stripped for the "
"example):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1507
#, no-wrap
msgid ""
"PORTNAME=\tpkg-devel\n"
"DISTVERSION=\t1.3.0.a.20140411\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1512
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tfreebsd\n"
"GH_PROJECT=\tpkg\n"
"GH_TAGNAME=\t6dbb17b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1515
msgid ""
-"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to `"
-"${WRKDIR}/pkg-6dbb17b`."
+"It will automatically have `MASTER_SITES` set to `GH` and `WRKSRC` to "
+"`${WRKDIR}/pkg-6dbb17b`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1519
msgid ""
"`20140411` is the date of the commit referenced in `GH_TAGNAME`, not the "
"date the [.filename]#Makefile# is edited, or the date the commit is made."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1524
#, no-wrap
msgid "Use of `USE_GITHUB` with `DISTVERSIONPREFIX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1530
msgid ""
"From time to time, `GH_TAGNAME` is a slight variation from `DISTVERSION`. "
"For example, if the version is `1.0.2`, the tag is `v1.0.2`. In those "
"cases, it is possible to use `DISTVERSIONPREFIX` or `DISTVERSIONSUFFIX`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1536
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t1.0.2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1538
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1601
#, no-wrap
msgid "USE_GITHUB=\tyes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1541
msgid ""
"It will automatically set `GH_TAGNAME` to `v1.0.2`, while `WRKSRC` will be "
"kept to `${WRKDIR}/foo-1.0.2`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1544
#, no-wrap
msgid "Using `USE_GITHUB` When Upstream Does Not Use Versions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1549
msgid ""
"If there never was a version upstream, do not invent one like `0.1` or "
"`1.0`. Create the port with a `DISTVERSION` of `g__YYYYMMDD__`, where `g` "
"is for Git, and `_YYYYMMDD_` represents the date the commit referenced in "
"`GH_TAGNAME`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1554
#, no-wrap
msgid ""
"PORTNAME=\tbar\n"
"DISTVERSION=\tg20140411\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1557
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TAGNAME=\tc472d66b\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1560
msgid ""
"This creates a versioning scheme that increases over time, and that is still "
"before version `0` (see <<makefile-versions-ex-pkg-version>> for details on "
"man:pkg-version[8]):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1565
#, no-wrap
msgid ""
"% pkg version -t g20140411 0\n"
"<\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1568
msgid ""
"Which means using `PORTEPOCH` will not be needed in case upstream decides to "
"cut versions in the future."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1571
#, no-wrap
msgid "Using `USE_GITHUB` to Access a Commit Between Two Versions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1575
msgid ""
"If the current version of the software uses a Git tag, and the port needs to "
"be updated to a newer, intermediate version, without a tag, use man:git-"
"describe[1] to find out the version to use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1580
#, no-wrap
msgid ""
"% git describe --tags f0038b1\n"
"v0.7.3-14-gf0038b1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1583
msgid "`v0.7.3-14-gf0038b1` can be split into three parts:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1584
#, no-wrap
msgid "`v0.7.3`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1586
msgid ""
"This is the last Git tag that appears in the commit history before the "
"requested commit."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1587
#, no-wrap
msgid "`-14`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1589
msgid ""
"This means that the requested commit, `f0038b1`, is the 14th commit after "
"the `v0.7.3` tag."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1590
#, no-wrap
msgid "`-gf0038b1`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1592
msgid ""
"The `-g` means \"Git\", and the `f0038b1` is the commit hash that this "
"reference points to."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1599
#, no-wrap
msgid ""
"PORTNAME=\tbar\n"
"DISTVERSIONPREFIX= v\n"
"DISTVERSION=\t0.7.3-14\n"
"DISTVERSIONSUFFIX= -gf0038b1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1605
msgid ""
"This creates a versioning scheme that increases over time (well, over "
"commits), and does not conflict with the creation of a `0.7.4` version. "
"(See <<makefile-versions-ex-pkg-version>> for details on man:pkg-version[8]):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1612
#, no-wrap
msgid ""
"% pkg version -t 0.7.3 0.7.3.14\n"
"<\n"
"% pkg version -t 0.7.3.14 0.7.4\n"
"<\n"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1618
msgid ""
"If the requested commit is the same as a tag, a shorter description is shown "
"by default. The longer version is equivalent:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1623
#, no-wrap
msgid ""
"% git describe --tags c66c71d\n"
"v0.7.3\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1626
#, no-wrap
msgid ""
"% git describe --tags --long c66c71d\n"
"v0.7.3-0-gc66c71d\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1633
#, no-wrap
msgid "Fetching Multiple Files from GitHub"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1637
msgid ""
"The `USE_GITHUB` framework also supports fetching multiple distribution "
"files from different places in GitHub. It works in a way very similar to "
"<<porting-master-sites-n>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1642
msgid ""
"Multiple values are added to `GH_ACCOUNT`, `GH_PROJECT`, and `GH_TAGNAME`. "
"Each different value is assigned a group. The main value can either have no "
"group, or the `:DEFAULT` group. A value can be omitted if it is the same as "
"the default as listed in <<makefile-master_sites-github-description>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1645
msgid ""
"`GH_TUPLE` can also be used when there are a lot of distribution files. It "
"helps keep the account, project, tagname, and group information at the same "
"place."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1648
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1944
msgid ""
"For each group, a `${WRKSRC_group}` helper variable is created, containing "
"the directory into which the file has been extracted. The `${WRKSRC_group}` "
"variables can be used to move directories around during `post-extract`, or "
"add to `CONFIGURE_ARGS`, or whatever is needed so that the software builds "
"correctly."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1653
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1949
msgid ""
"The `:__group__` part _must_ be used for _only one_ distribution file. It "
"is used as a unique key and using it more than once will overwrite the "
"previous values."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1658
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1954
msgid ""
"As this is only syntactic sugar above `DISTFILES` and `MASTER_SITES`, the "
"group names must adhere to the restrictions on group names outlined in "
"<<porting-master-sites-n>>"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1662
msgid ""
"When fetching multiple files from GitHub, sometimes the default distribution "
"file is not fetched from GitHub. To disable fetching the default "
"distribution, set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1666
#, no-wrap
msgid "USE_GITHUB=\tnodefault\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1671
msgid ""
"When using `USE_GITHUB=nodefault`, the [.filename]#Makefile# must set "
"`DISTFILES` in its crossref:porting-order[porting-order-portname,top block]. "
"The definition should be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1675
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1972
#, no-wrap
msgid "DISTFILES= ${DISTNAME}${EXTRACT_SUFX}\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1680
#, no-wrap
msgid "Use of `USE_GITHUB` with Multiple Distribution Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1686
msgid ""
"From time to time, there is a need to fetch more than one distribution "
"file. For example, when the upstream git repository uses submodules. This "
"can be done easily using groups in the `GH_*` variables:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1691
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1736
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1988
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2033
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSION=\t1.0.2\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1697
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tbar:icons,contrib\n"
"GH_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n"
"GH_TAGNAME=\t1.0:icons fa579bc:contrib\n"
"GH_SUBDIR=\text/icons:icons\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1699
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1742
#, no-wrap
msgid "CONFIGURE_ARGS=\t--with-contrib=${WRKSRC_contrib}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1706
msgid ""
"This will fetch three distribution files from github. The default one comes "
"from [.filename]#foo/foo# and is version `1.0.2`. The second one, with the "
"`icons` group, comes from [.filename]#bar/foo-icons# and is in version "
"`1.0`. The third one comes from [.filename]#bar/foo-contrib# and uses the "
"Git commit `fa579bc`. The distribution files are named [.filename]#foo-"
"foo-1.0.2_GH0.tar.gz#, [.filename]#bar-foo-icons-1.0_GH0.tar.gz#, and [."
"filename]#bar-foo-contrib-fa579bc_GH0.tar.gz#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1712
msgid ""
"All the distribution files are extracted in `${WRKDIR}` in their respective "
"subdirectories. The default file is still extracted in `${WRKSRC}`, in this "
"case, [.filename]#${WRKDIR}/foo-1.0.2#. Each additional distribution file "
"is extracted in `${WRKSRC_group}`. Here, for the `icons` group, it is "
"called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-"
"icons-1.0#. The file with the `contrib` group is called `${WRKSRC_contrib}` "
"and contains `${WRKDIR}/foo-contrib-fa579bc`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1716
msgid ""
"The software's build system expects to find the icons in a [.filename]#ext/"
"icons# subdirectory in its sources, so `GH_SUBDIR` is used. `GH_SUBDIR` "
"makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# "
"does not already exist. Then it does this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1721
#, no-wrap
msgid ""
"post-extract:\n"
" @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1726
#, no-wrap
msgid "Use of `USE_GITHUB` with Multiple Distribution Files Using `GH_TUPLE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1731
msgid ""
"This is functionally equivalent to <<makefile-master_sites-github-multi>>, "
"but using `GH_TUPLE`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1740
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TUPLE=\tbar:foo-icons:1.0:icons/ext/icons \\\n"
"\t\tbar:foo-contrib:fa579bc:contrib\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1746
msgid ""
"Grouping was used in the previous example with `bar:icons,contrib`. Some "
"redundant information is present with `GH_TUPLE` because grouping is not "
"possible."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1749
#, no-wrap
msgid "How to Use `USE_GITHUB` with Git Submodules?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1754
msgid ""
"Ports with GitHub as an upstream repository sometimes use submodules. See "
"man:git-submodule[1] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1757
msgid ""
"The problem with submodules is that each is a separate repository. As such, "
"they each must be fetched separately."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1762
msgid ""
"Using package:finance/moneymanagerex[] as an example, its GitHub repository "
"is https://github.com/moneymanagerex/moneymanagerex/[]. It has a https://"
"github.com/moneymanagerex/moneymanagerex/blob/master/.gitmodules[."
"gitmodules] file at the root. This file describes all the submodules used "
"in this repository, and lists additional repositories needed. This file "
"will tell what additional repositories are needed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1778
#, no-wrap
msgid ""
"[submodule \"lib/wxsqlite3\"]\n"
"\tpath = lib/wxsqlite3\n"
"\turl = https://github.com/utelle/wxsqlite3.git\n"
"[submodule \"3rd/mongoose\"]\n"
"\tpath = 3rd/mongoose\n"
"\turl = https://github.com/cesanta/mongoose.git\n"
"[submodule \"3rd/LuaGlue\"]\n"
"\tpath = 3rd/LuaGlue\n"
"\turl = https://github.com/moneymanagerex/LuaGlue.git\n"
"[submodule \"3rd/cgitemplate\"]\n"
"\tpath = 3rd/cgitemplate\n"
"\turl = https://github.com/moneymanagerex/html-template.git\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1782
msgid ""
"The only information missing from that file is the commit hash or tag to use "
"as a version. This information is found after cloning the repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1811
#, no-wrap
msgid ""
"% git clone --recurse-submodules https://github.com/moneymanagerex/moneymanagerex.git\n"
"Cloning into 'moneymanagerex'...\n"
"remote: Counting objects: 32387, done.\n"
"[...]\n"
"Submodule '3rd/LuaGlue' (https://github.com/moneymanagerex/LuaGlue.git) registered for path '3rd/LuaGlue'\n"
"Submodule '3rd/cgitemplate' (https://github.com/moneymanagerex/html-template.git) registered for path '3rd/cgitemplate'\n"
"Submodule '3rd/mongoose' (https://github.com/cesanta/mongoose.git) registered for path '3rd/mongoose'\n"
"Submodule 'lib/wxsqlite3' (https://github.com/utelle/wxsqlite3.git) registered for path 'lib/wxsqlite3'\n"
"[...]\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/LuaGlue'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/cgitemplate'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/3rd/mongoose'...\n"
"Cloning into '/home/mat/work/freebsd/ports/finance/moneymanagerex/moneymanagerex/lib/wxsqlite3'...\n"
"[...]\n"
"Submodule path '3rd/LuaGlue': checked out 'c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b'\n"
"Submodule path '3rd/cgitemplate': checked out 'cd434eeeb35904ebcd3d718ba29c281a649b192c'\n"
"Submodule path '3rd/mongoose': checked out '2140e5992ab9a3a9a34ce9a281abf57f00f95cda'\n"
"Submodule path 'lib/wxsqlite3': checked out 'fb66eb230d8aed21dec273b38c7c054dcb7d6b51'\n"
"[...]\n"
"% cd moneymanagerex\n"
"% git submodule status\n"
" c51d11a247ee4d1e9817dfa2a8da8d9e2f97ae3b 3rd/LuaGlue (heads/master)\n"
" cd434eeeb35904ebcd3d718ba29c281a649b192c 3rd/cgitemplate (cd434ee)\n"
" 2140e5992ab9a3a9a34ce9a281abf57f00f95cda 3rd/mongoose (6.2-138-g2140e59)\n"
" fb66eb230d8aed21dec273b38c7c054dcb7d6b51 lib/wxsqlite3 (v3.4.0)\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1815
msgid ""
"It can also be found on GitHub. Each subdirectory that is a submodule is "
"shown as `_directory @ hash_`, for example, `mongoose @ 2140e59`."
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1821
msgid ""
"While getting the information from GitHub seems more straightforward, the "
"information found using `git submodule status` will provide more meaningful "
"information. For example, here, ``lib/wxsqlite3``'s commit hash `fb66eb2` "
"correspond to `v3.4.0`. Both can be used interchangeably, but when a tag is "
"available, use it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1824
msgid ""
"Now that all the required information has been gathered, the [."
"filename]#Makefile# can be written (only GitHub-related lines are shown):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1830
#, no-wrap
msgid ""
"PORTNAME=\tmoneymanagerex\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t1.3.0\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1837
#, no-wrap
msgid ""
"USE_GITHUB=\tyes\n"
"GH_TUPLE=\tutelle:wxsqlite3:v3.4.0:wxsqlite3/lib/wxsqlite3 \\\n"
"\t\tmoneymanagerex:LuaGlue:c51d11a:lua_glue/3rd/LuaGlue \\\n"
"\t\tmoneymanagerex:html-template:cd434ee:html_template/3rd/cgitemplate \\\n"
"\t\tcesanta:mongoose:2140e59:mongoose/3rd/mongoose \\\n"
"\t\t[...]\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1842
#, no-wrap
msgid "`USE_GITLAB`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1845
msgid ""
"Similar to GitHub, if the distribution file comes from https://gitlab.com/"
"[gitlab.com] or is hosting the GitLab software, these variables are "
"available for use and might need to be set."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1847
#, no-wrap
msgid "`USE_GITLAB` Description"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1855
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4805
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4804
#, no-wrap
msgid "`GL_SITE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1856
#, no-wrap
msgid "Site name hosting the GitLab project"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1858
#, no-wrap
msgid "https://gitlab.com/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1859
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4802
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4801
#, no-wrap
msgid "`GL_ACCOUNT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1860
#, no-wrap
msgid "Account name of the GitLab user hosting the project"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1863
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4804
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4803
#, no-wrap
msgid "`GL_PROJECT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1864
#, no-wrap
msgid "Name of the project on GitLab"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1867
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4803
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4802
#, no-wrap
msgid "`GL_COMMIT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1868
#, no-wrap
msgid "The commit hash to download. Must be the full 160 bit, 40 character hex sha1 hash. This is a required variable for GitLab."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1870
#, no-wrap
msgid "`(none)`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1871
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4806
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4805
#, no-wrap
msgid "`GL_SUBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1872
#, no-wrap
msgid "When the software needs an additional distribution file to be extracted within `${WRKSRC}`, this variable can be used. See the examples in <<makefile-master_sites-gitlab-multiple>> for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1875
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4807
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4806
#, no-wrap
msgid "`GL_TUPLE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1876
#, no-wrap
msgid "`GL_TUPLE` allows putting `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT`, `GL_COMMIT`, and `GL_SUBDIR` into a single variable. The format is _site_`:`_account_`:`_project_`:`_commit_`:`_group_`/`_subdir_. The _site_`:` and `/`_subdir_ part is optional. It is helpful when there are more than one GitLab project from which to fetch."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1879
#, no-wrap
msgid "Simple Use of `USE_GITLAB`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1883
msgid ""
"While trying to make a port for version `1.14` of libsignon-glib from the "
"accounts-sso user on gitlab.com, at https://gitlab.com/accounts-sso/"
"libsignon-glib/[], The [.filename]#Makefile# would end up looking like this "
"for fetching the distribution files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1888
#, no-wrap
msgid ""
"PORTNAME=\tlibsignon-glib\n"
"DISTVERSION=\t1.14\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1892
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_ACCOUNT=\taccounts-sso\n"
"GL_COMMIT=\te90302e342bfd27bc8c9132ab9d0ea3d8723fd03\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1895
msgid ""
"It will automatically have `MASTER_SITES` set to https://gitlab.com/[gitlab."
"com] and `WRKSRC` to `${WRKDIR}/libsignon-glib-"
"e90302e342bfd27bc8c9132ab9d0ea3d8723fd03-"
"e90302e342bfd27bc8c9132ab9d0ea3d8723fd03`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1898
#, no-wrap
msgid "More Complete Use of `USE_GITLAB`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1903
msgid ""
"A more complete use of the above if port had no versioning and foobar from "
"the foo user on project bar on a self hosted GitLab site `https://gitlab."
"example.com/`, the [.filename]#Makefile# ends up looking like this for "
"fetching distribution files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1908
#, no-wrap
msgid ""
"PORTNAME=\tfoobar\n"
"DISTVERSION=\tg20170906\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1914
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_SITE=\thttps://gitlab.example.com\n"
"GL_ACCOUNT=\tfoo\n"
"GL_PROJECT=\tbar\n"
"GL_COMMIT=\t9c1669ce60c3f4f5eb43df874d7314483fb3f8a6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1917
msgid ""
"It will have `MASTER_SITES` set to `\"https://gitlab.example.com\"` and "
"`WRKSRC` to `${WRKDIR}/"
"bar-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6-9c1669ce60c3f4f5eb43df874d7314483fb3f8a6`."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1921
msgid ""
"`20170906` is the date of the commit referenced in `GL_COMMIT`, not the date "
"the [.filename]#Makefile# is edited, or the date the commit to the FreeBSD "
"ports tree is made."
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1926
msgid ""
"``GL_SITE``'s protocol, port and webroot can all be modified in the same "
"variable."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1931
#, no-wrap
msgid "Fetching Multiple Files from GitLab"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1935
msgid ""
"The `USE_GITLAB` framework also supports fetching multiple distribution "
"files from different places from GitLab and GitLab hosted sites. It works "
"in a way very similar to <<porting-master-sites-n>> and <<makefile-"
"master_sites-gitlab-multiple>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1938
msgid ""
"Multiple values are added to `GL_SITE`, `GL_ACCOUNT`, `GL_PROJECT` and "
"`GL_COMMIT`. Each different value is assigned a group. <<makefile-"
"master_sites-gitlab-description>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1941
msgid ""
"`GL_TUPLE` can also be used when there are a lot of distribution files. It "
"helps keep the site, account, project, commit, and group information at the "
"same place."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1958
msgid ""
"When fetching multiple files using GitLab, sometimes the default "
"distribution file is not fetched from a GitLab site. To disable fetching "
"the default distribution, set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1962
#, no-wrap
msgid "USE_GITLAB=\tnodefault\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1968
msgid ""
"When using `USE_GITLAB=nodefault`, the [.filename]#Makefile# must set "
"`DISTFILES` in its <<porting-order-portname,top block>>. The definition "
"should be:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1977
#, no-wrap
msgid "Use of `USE_GITLAB` with Multiple Distribution Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1983
msgid ""
"From time to time, there is a need to fetch more than one distribution "
"file. For example, when the upstream git repository uses submodules. This "
"can be done easily using groups in the `GL_*` variables:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1995
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_SITE=\thttps://gitlab.example.com:9434/gitlab:icons\n"
"GL_ACCOUNT=\tbar:icons,contrib\n"
"GL_PROJECT=\tfoo-icons:icons foo-contrib:contrib\n"
"GL_COMMIT=\tc189207a55da45305c884fe2b50e086fcad4724b ae7368cab1ca7ca754b38d49da064df87968ffe4:icons 9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib\n"
"GL_SUBDIR=\text/icons:icons\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:1997
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2040
#, no-wrap
msgid "CONFIGURE_ARGS= --with-contrib=${WRKSRC_contrib}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2004
msgid ""
"This will fetch two distribution files from gitlab.com and one from `gitlab."
"example.com` hosting GitLab. The default one comes from [.filename]#https://"
"gitlab.com/foo/foo# and commit is "
"`c189207a55da45305c884fe2b50e086fcad4724b`. The second one, with the "
"`icons` group, comes from [.filename]#https://gitlab.example.com:9434/gitlab/"
"bar/foo-icons# and commit is `ae7368cab1ca7ca754b38d49da064df87968ffe4`. "
"The third one comes from [.filename]#https://gitlab.com/bar/foo-contrib# and "
"is commit `9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`. The distribution "
"files are named [.filename]#foo-foo-"
"c189207a55da45305c884fe2b50e086fcad4724b_GL0.tar.gz#, [.filename]#bar-foo-"
"icons-ae7368cab1ca7ca754b38d49da064df87968ffe4_GL0.tar.gz#, and [."
"filename]#bar-foo-contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a_GL0.tar."
"gz#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2010
msgid ""
"All the distribution files are extracted in `${WRKDIR}` in their respective "
"subdirectories. The default file is still extracted in `${WRKSRC}`, in this "
"case, [.filename]#${WRKDIR}/foo-c189207a55da45305c884fe2b50e086fcad4724b-"
"c189207a55da45305c884fe2b50e086fcad4724b#. Each additional distribution "
"file is extracted in `${WRKSRC_group}`. Here, for the `icons` group, it is "
"called `${WRKSRC_icons}` and it contains [.filename]#${WRKDIR}/foo-icons-"
"ae7368cab1ca7ca754b38d49da064df87968ffe4-"
"ae7368cab1ca7ca754b38d49da064df87968ffe4#. The file with the `contrib` "
"group is called `${WRKSRC_contrib}` and contains `${WRKDIR}/foo-"
"contrib-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a-9e4dd76ad9b38f33fdb417a4c01935958d5acd2a`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2014
msgid ""
"The software's build system expects to find the icons in a [.filename]#ext/"
"icons# subdirectory in its sources, so `GL_SUBDIR` is used. `GL_SUBDIR` "
"makes sure that [.filename]#ext# exists, but that [.filename]#ext/icons# "
"does not already exist. Then it does this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2019
#, no-wrap
msgid ""
"post-extract:\n"
" @${MV} ${WRKSRC_icons} ${WRKSRC}/ext/icons\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2024
#, no-wrap
msgid "Use of `USE_GITLAB` with Multiple Distribution Files Using `GL_TUPLE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2028
msgid ""
"This is functionally equivalent to <<makefile-master_sites-gitlab-multi>>, "
"but using `GL_TUPLE`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2038
#, no-wrap
msgid ""
"USE_GITLAB=\tyes\n"
"GL_COMMIT=\tc189207a55da45305c884fe2b50e086fcad4724b\n"
"GL_TUPLE=\thttps://gitlab.example.com:9434/gitlab:bar:foo-icons:ae7368cab1ca7ca754b38d49da064df87968ffe4:icons/ext/icons \\\n"
"\t\tbar:foo-contrib:9e4dd76ad9b38f33fdb417a4c01935958d5acd2a:contrib\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2044
msgid ""
"Grouping was used in the previous example with `bar:icons,contrib`. Some "
"redundant information is present with `GL_TUPLE` because grouping is not "
"possible."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2047
#, no-wrap
msgid "`EXTRACT_SUFX`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2050
msgid ""
"If there is one distribution file, and it uses an odd suffix to indicate the "
"compression mechanism, set `EXTRACT_SUFX`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2052
msgid ""
"For example, if the distribution file was named [.filename]#foo.tar.gzip# "
"instead of the more normal [.filename]#foo.tar.gz#, write:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2057
#, no-wrap
msgid ""
"DISTNAME=\tfoo\n"
"EXTRACT_SUFX=\t.tar.gzip\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2061
msgid ""
"The `USES=tar[:__xxx__]`, `USES=lha` or `USES=zip` automatically set "
"`EXTRACT_SUFX` to the most common archives extensions as necessary, see "
"crossref:uses[uses,Using `USES` Macros] for more details. If neither of "
"these are set then `EXTRACT_SUFX` defaults to `.tar.gz`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2065
msgid "As `EXTRACT_SUFX` is only used in `DISTFILES`, only set one of them.."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2068
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4794
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4793
#, no-wrap
msgid "`DISTFILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2073
msgid ""
"Sometimes the names of the files to be downloaded have no resemblance to the "
"name of the port. For example, it might be called [.filename]#source.tar."
"gz# or similar. In other cases the application's source code might be in "
"several different archives, all of which must be downloaded."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2075
msgid ""
"If this is the case, set `DISTFILES` to be a space separated list of all the "
"files that must be downloaded."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2079
#, no-wrap
msgid "DISTFILES=\tsource1.tar.gz source2.tar.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2082
msgid ""
"If not explicitly set, `DISTFILES` defaults to `${DISTNAME}${EXTRACT_SUFX}`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2084
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4795
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4794
#, no-wrap
msgid "`EXTRACT_ONLY`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2087
msgid ""
"If only some of the `DISTFILES` must be extracted-for example, one of them "
"is the source code, while another is an uncompressed document-list the "
"filenames that must be extracted in `EXTRACT_ONLY`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2092
#, no-wrap
msgid ""
"DISTFILES=\tsource.tar.gz manual.html\n"
"EXTRACT_ONLY=\tsource.tar.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2095
msgid ""
"When none of the `DISTFILES` need to be uncompressed, set `EXTRACT_ONLY` to "
"the empty string."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2099
#, no-wrap
msgid "EXTRACT_ONLY=\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2102
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4816
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4815
#, no-wrap
msgid "`PATCHFILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2105
msgid ""
"If the port requires some additional patches that are available by FTP or "
"HTTP, set `PATCHFILES` to the names of the files and `PATCH_SITES` to the "
"URL of the directory that contains them (the format is the same as "
"`MASTER_SITES`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2108
msgid ""
"If the patch is not relative to the top of the source tree (that is, "
"`WRKSRC`) because it contains some extra pathnames, set `PATCH_DIST_STRIP` "
"accordingly. For instance, if all the pathnames in the patch have an extra "
"`foozolix-1.0/` in front of the filenames, then set `PATCH_DIST_STRIP=-p1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2110
msgid ""
"Do not worry if the patches are compressed; they will be decompressed "
"automatically if the filenames end with [.filename]#.Z#, [.filename]#.gz#, [."
"filename]#.bz2# or [.filename]#.xz#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2116
msgid ""
"If the patch is distributed with some other files, such as documentation, in "
"a compressed tarball, using `PATCHFILES` is not possible. If that is the "
"case, add the name and the location of the patch tarball to `DISTFILES` and "
"`MASTER_SITES`. Then, use `EXTRA_PATCHES` to point to those files and [."
"filename]#bsd.port.mk# will automatically apply them. In particular, do "
"_not_ copy patch files into [.filename]#${PATCHDIR}#. That directory may "
"not be writable."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2120
msgid ""
"If there are multiple patches and they need mixed values for the strip "
"parameter, it can be added alongside the patch name in `PATCHFILES`, e.g:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2124
#, no-wrap
msgid "PATCHFILES=\tpatch1 patch2:-p1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2127
msgid ""
"This does not conflict with <<porting-master-sites-n,the master site "
"grouping feature>>, adding a group also works:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2131
#, no-wrap
msgid "PATCHFILES=\tpatch2:-p1:source2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2139
msgid ""
"The tarball will have been extracted alongside the regular source by then, "
"so there is no need to explicitly extract it if it is a regular compressed "
"tarball. Take extra care not to overwrite something that already exists in "
"that directory if extracting it manually. Also, do not forget to add a "
"command to remove the copied patch in the `pre-clean` target."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2142
#, no-wrap
msgid "Multiple Distribution or Patches Files from Multiple Locations"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2145
msgid ""
"(Consider this to be a somewhat \"advanced topic\"; those new to this "
"document may wish to skip this section at first)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2148
msgid ""
"This section has information on the fetching mechanism known as both "
"`MASTER_SITES:n` and `MASTER_SITES_NN`. We will refer to this mechanism as "
"`MASTER_SITES:n`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2153
msgid ""
"A little background first. OpenBSD has a neat feature inside `DISTFILES` "
"and `PATCHFILES` which allows files and patches to be postfixed with `:n` "
"identifiers. Here, `n` can be any word containing `[0-9a-zA-Z_]` and denote "
"a group designation. For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2157
#, no-wrap
msgid "DISTFILES=\talpha:0 beta:1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2160
msgid ""
"In OpenBSD, distribution file [.filename]#alpha# will be associated with "
"variable `MASTER_SITES0` instead of our common `MASTER_SITES` and [."
"filename]#beta# with `MASTER_SITES1`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2162
msgid ""
"This is a very interesting feature which can decrease that endless search "
"for the correct download site."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2165
msgid ""
"Just picture 2 files in `DISTFILES` and 20 sites in `MASTER_SITES`, the "
"sites slow as hell where [.filename]#beta# is carried by all sites in "
"`MASTER_SITES`, and [.filename]#alpha# can only be found in the 20th site. "
"It would be such a waste to check all of them if the maintainer knew this "
"beforehand, would it not? Not a good start for that lovely weekend!"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2168
msgid ""
"Now that you have the idea, just imagine more `DISTFILES` and more "
"`MASTER_SITES`. Surely our \"distfiles survey meister\" would appreciate "
"the relief to network strain that this would bring."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2171
msgid ""
"In the next sections, information will follow on the FreeBSD implementation "
"of this idea. We improved a bit on OpenBSD's concept."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2176
msgid ""
"The group names cannot have dashes in them (`-`), in fact, they cannot have "
"any characters out of the `[a-zA-Z0-9_]` range. This is because, while man:"
"make[1] is ok with variable names containing dashes, man:sh[1] is not."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2179
#, no-wrap
msgid "Simplified Information"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2185
msgid ""
"This section explains how to quickly prepare fine grained fetching of "
"multiple distribution files and patches from different sites and "
"subdirectories. We describe here a case of simplified `MASTER_SITES:n` "
"usage. This will be sufficient for most scenarios. More detailed "
"information are available in <<ports-master-sites-n-detailed>>."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2189
msgid ""
"Some applications consist of multiple distribution files that must be "
"downloaded from a number of different sites. For example, Ghostscript "
"consists of the core of the program, and then a large number of driver files "
"that are used depending on the user's printer. Some of these driver files "
"are supplied with the core, but many others must be downloaded from a "
"variety of different sites."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2192
msgid ""
"To support this, each entry in `DISTFILES` may be followed by a colon and a "
"\"group name\". Each site listed in `MASTER_SITES` is then followed by a "
"colon, and the group that indicates which distribution files are downloaded "
"from this site."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2195
msgid ""
"For example, consider an application with the source split in two parts, [."
"filename]#source1.tar.gz# and [.filename]#source2.tar.gz#, which must be "
"downloaded from two different sites. The port's [.filename]#Makefile# would "
"include lines like <<ports-master-sites-n-example-simple-use-one-file-per-"
"site>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2197
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with One File Per Site"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2207
#, no-wrap
msgid ""
"MASTER_SITES=\tftp://ftp1.example.com/:source1 \\\n"
"\t\thttp://www.example.com/:source2\n"
"DISTFILES=\tsource1.tar.gz:source1 \\\n"
"\t\tsource2.tar.gz:source2\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2214
msgid ""
"Multiple distribution files can have the same group. Continuing the "
"previous example, suppose that there was a third distfile, [."
"filename]#source3.tar.gz#, that is downloaded from `ftp.example2.com`. The "
"[.filename]#Makefile# would then be written like <<ports-master-sites-n-"
"example-simple-use-more-than-one-file-per-site>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2216
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with More Than One File Per Site"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2227
#, no-wrap
msgid ""
"MASTER_SITES=\tftp://ftp.example.com/:source1 \\\n"
"\t\thttp://www.example.com/:source2\n"
"DISTFILES=\tsource1.tar.gz:source1 \\\n"
"\t\tsource2.tar.gz:source2 \\\n"
"\t\tsource3.tar.gz:source2\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2232
#, no-wrap
msgid "Detailed Information"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2235
msgid ""
"Okay, so the previous example did not reflect the new port's needs? In this "
"section we will explain in detail how the fine grained fetching mechanism "
"`MASTER_SITES:n` works and how it can be used."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2237
msgid ""
"Elements can be postfixed with `:__n__` where _n_ is `[^:,]+`, that is, _n_ "
"could conceptually be any alphanumeric string but we will limit it to `[a-zA-"
"Z_][0-9a-zA-Z_]+` for now."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2239
msgid ""
"Moreover, string matching is case sensitive; that is, `n` is different from "
"`N`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2242
msgid ""
"However, these words cannot be used for postfixing purposes since they yield "
"special meaning: `default`, `all` and `ALL` (they are used internally in "
"item <<porting-master-sites-n-what-changes-in-port-targets, ii>>). "
"Furthermore, `DEFAULT` is a special purpose word (check item <<porting-"
"master-sites-n-DEFAULT-group,3>>)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2243
msgid ""
"Elements postfixed with `:n` belong to the group `n`, `:m` belong to group "
"`m` and so forth."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2246
msgid ""
"Elements without a postfix are groupless, they all belong to the special "
"group `DEFAULT`. Any elements postfixed with `DEFAULT`, is just being "
"redundant unless an element belongs to both `DEFAULT` and other groups at "
"the same time (check item <<porting-master-sites-n-comma-operator,5>>)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2248
msgid "These examples are equivalent but the first one is preferred:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2252
#, no-wrap
msgid "MASTER_SITES=\talpha\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2257
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2260
msgid ""
"Groups are not exclusive, an element may belong to several different groups "
"at the same time and a group can either have either several different "
"elements or none at all."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2263
msgid ""
"When an element belongs to several groups at the same time, use the comma "
"operator (`,`)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2266
msgid ""
"Instead of repeating it several times, each time with a different postfix, "
"we can list several groups at once in a single postfix. For instance, `:m,n,"
"o` marks an element that belongs to group `m`, `n` and `o`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2268
msgid "All these examples are equivalent but the last one is preferred:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2272
#, no-wrap
msgid "MASTER_SITES=\talpha alpha:SOME_SITE\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2277
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT alpha:SOME_SITE\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2282
#, no-wrap
msgid "MASTER_SITES=\talpha:SOME_SITE,DEFAULT\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2287
#, no-wrap
msgid "MASTER_SITES=\talpha:DEFAULT,SOME_SITE\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2290
msgid ""
"All sites within a given group are sorted according to `MASTER_SORT_AWK`. "
"All groups within `MASTER_SITES` and `PATCH_SITES` are sorted as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2293
msgid ""
"Group semantics can be used in any of the variables `MASTER_SITES`, "
"`PATCH_SITES`, `MASTER_SITE_SUBDIR`, `PATCH_SITE_SUBDIR`, `DISTFILES`, and "
"`PATCHFILES` according to this syntax:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2294
msgid ""
"All `MASTER_SITES`, `PATCH_SITES`, `MASTER_SITE_SUBDIR` and "
"`PATCH_SITE_SUBDIR` elements must be terminated with the forward slash `/` "
"character. If any elements belong to any groups, the group postfix `:__n__` "
"must come right after the terminator `/`. The `MASTER_SITES:n` mechanism "
"relies on the existence of the terminator `/` to avoid confusing elements "
"where a `:n` is a valid part of the element with occurrences where `:n` "
"denotes group `n`. For compatibility purposes, since the `/` terminator was "
"not required before in both `MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR` "
"elements, if the postfix immediate preceding character is not a `/` then `:"
"n` will be considered a valid part of the element instead of a group postfix "
"even if an element is postfixed with `:n`. See both <<ports-master-sites-n-"
"example-detailed-use-master-site-subdir>> and <<ports-master-sites-n-example-"
"detailed-use-complete-example-master-sites>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2296
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` in `MASTER_SITE_SUBDIR`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2303
#, no-wrap
msgid "MASTER_SITE_SUBDIR=\told:n new/:NEW\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2306
msgid "Directories within group `DEFAULT` -> old:n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2307
msgid "Directories within group `NEW` -> new"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2311
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` with Comma Operator, Multiple Files, Multiple Sites and Multiple Subdirectories"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2329
#, no-wrap
msgid ""
"MASTER_SITES=\thttp://site1/%SUBDIR%/ http://site2/:DEFAULT \\\n"
"\t\thttp://site3/:group3 http://site4/:group4 \\\n"
"\t\thttp://site5/:group5 http://site6/:group6 \\\n"
"\t\thttp://site7/:DEFAULT,group6 \\\n"
"\t\thttp://site8/%SUBDIR%/:group6,group7 \\\n"
"\t\thttp://site9/:group8\n"
"DISTFILES=\tfile1 file2:DEFAULT file3:group3 \\\n"
"\t\tfile4:group4,group5,group6 file5:grouping \\\n"
"\t\tfile6:group7\n"
"MASTER_SITE_SUBDIR=\tdirectory-trial:1 directory-n/:groupn \\\n"
"\t\tdirectory-one/:group6,DEFAULT \\\n"
"\t\tdirectory\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2333
msgid ""
"The previous example results in this fine grained fetching. Sites are "
"listed in the exact order they will be used."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2335
msgid "[.filename]#file1# will be fetched from"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2337
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2347
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2357
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2363
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2373
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2378
msgid "`MASTER_SITE_OVERRIDE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2338
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2348
msgid "http://site1/directory-trial:1/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2339
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2349
msgid "http://site1/directory-one/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2340
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2350
msgid "http://site1/directory/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2341
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2351
msgid "http://site2/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2342
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2352
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2367
msgid "http://site7/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2343
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2353
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2359
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2369
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2374
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2380
msgid "`MASTER_SITE_BACKUP`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2345
msgid ""
"[.filename]#file2# will be fetched exactly as [.filename]#file1# since they "
"both belong to the same group"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2355
msgid "[.filename]#file3# will be fetched from"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2358
msgid "http://site3/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2361
msgid "[.filename]#file4# will be fetched from"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2364
msgid "http://site4/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2365
msgid "http://site5/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2366
msgid "http://site6/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2368
msgid "http://site8/directory-one/"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2371
msgid "[.filename]#file5# will be fetched from"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2376
msgid "[.filename]#file6# will be fetched from"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2379
msgid "http://site8/"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2384
msgid ""
"How do I group one of the special macros from [.filename]#bsd.sites.mk#, for "
"example, SourceForge (`SF`)?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2387
msgid ""
"This has been simplified as much as possible. See <<ports-master-sites-n-"
"example-detailed-use-master-site-sourceforge>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2389
#, no-wrap
msgid "Detailed Use of `MASTER_SITES:n` with SourceForge (`SF`)"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2397
#, no-wrap
msgid ""
"MASTER_SITES=\thttp://site1/ SF/something/1.0:sourceforge,TEST\n"
"DISTFILES=\tsomething.tar.gz:sourceforge\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2400
msgid ""
"[.filename]#something.tar.gz# will be fetched from all sites within "
"SourceForge."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2402
msgid "How do I use this with `PATCH*`?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2404
msgid ""
"All examples were done with `MASTER*` but they work exactly the same for "
"`PATCH*` ones as can be seen in <<ports-master-sites-n-example-detailed-use-"
"patch-sites>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2406
#, no-wrap
msgid "Simplified Use of `MASTER_SITES:n` with `PATCH_SITES`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2414
#, no-wrap
msgid ""
"PATCH_SITES=\thttp://site1/ http://site2/:test\n"
"PATCHFILES=\tpatch1:test\n"
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2419
#, no-wrap
msgid "What Does Change for Ports? What Does Not?"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2423
msgid ""
"All current ports remain the same. The `MASTER_SITES:n` feature code is only "
"activated if there are elements postfixed with `:__n__` like elements "
"according to the aforementioned syntax rules, especially as shown in item "
"<<porting-master-sites-n-group-semantics, 7>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2426
msgid ""
"The port targets remain the same: `checksum`, `makesum`, `patch`, "
"`configure`, `build`, etc. With the obvious exceptions of `do-fetch`, `fetch-"
"list`, `master-sites` and `patch-sites`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2428
msgid ""
"`do-fetch`: deploys the new grouping postfixed `DISTFILES` and `PATCHFILES` "
"with their matching group elements within both `MASTER_SITES` and "
"`PATCH_SITES` which use matching group elements within both "
"`MASTER_SITE_SUBDIR` and `PATCH_SITE_SUBDIR`. Check <<ports-master-sites-n-"
"example-detailed-use-complete-example-master-sites>>."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2429
msgid ""
"`fetch-list`: works like old `fetch-list` with the exception that it groups "
"just like `do-fetch`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2430
msgid ""
"`master-sites` and `patch-sites`: (incompatible with older versions) only "
"return the elements of group `DEFAULT`; in fact, they execute targets "
"`master-sites-default` and `patch-sites-default` respectively."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2434
msgid ""
"Furthermore, using target either `master-sites-all` or `patch-sites-all` is "
"preferred to directly checking either `MASTER_SITES` or `PATCH_SITES`. "
"Also, directly checking is not guaranteed to work in any future versions. "
"Check item <<porting-master-sites-n-new-port-targets-master-sites-all, B>> "
"for more information on these new port targets."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2436
msgid "New port targets"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2437
msgid ""
"There are `master-sites-_n_` and `patch-sites-_n_` targets which will list "
"the elements of the respective group _n_ within `MASTER_SITES` and "
"`PATCH_SITES` respectively. For instance, both `master-sites-DEFAULT` and "
"`patch-sites-DEFAULT` will return the elements of group `DEFAULT`, `master-"
"sites-test` and `patch-sites-test` of group `test`, and thereon."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2440
msgid ""
"There are new targets `master-sites-all` and `patch-sites-all` which do the "
"work of the old `master-sites` and `patch-sites` ones. They return the "
"elements of all groups as if they all belonged to the same group with the "
"caveat that it lists as many `MASTER_SITE_BACKUP` and `MASTER_SITE_OVERRIDE` "
"as there are groups defined within either `DISTFILES` or `PATCHFILES`; "
"respectively for `master-sites-all` and `patch-sites-all`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2442
#, no-wrap
msgid "`DIST_SUBDIR`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2447
msgid ""
"Do not let the port clutter [.filename]#/usr/ports/distfiles#. If the port "
"requires a lot of files to be fetched, or contains a file that has a name "
"that might conflict with other ports (for example, [.filename]#Makefile#), "
-"set `DIST_SUBDIR` to the name of the port (`${PORTNAME}` or `"
-"${PKGNAMEPREFIX}${PORTNAME}` are fine). This will change `DISTDIR` from the "
-"default [.filename]#/usr/ports/distfiles# to [.filename]#/usr/ports/"
+"set `DIST_SUBDIR` to the name of the port (`${PORTNAME}` or "
+"`${PKGNAMEPREFIX}${PORTNAME}` are fine). This will change `DISTDIR` from "
+"the default [.filename]#/usr/ports/distfiles# to [.filename]#/usr/ports/"
"distfiles/${DIST_SUBDIR}#, and in effect puts everything that is required "
"for the port into that subdirectory."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2449
msgid ""
"It will also look at the subdirectory with the same name on the backup "
"master site at http://distcache.FreeBSD.org[http://distcache.FreeBSD.org] "
"(Setting `DISTDIR` explicitly in [.filename]#Makefile# will not accomplish "
"this, so please use `DIST_SUBDIR`.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2453
msgid ""
"This does not affect `MASTER_SITES` defined in the [.filename]#Makefile#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2456
#, no-wrap
msgid "`MAINTAINER`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2459
msgid "Set your mail-address here. Please. _:-)_"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2464
msgid ""
"Only a single address without the comment part is allowed as a `MAINTAINER` "
"value. The format used is `user@hostname.domain`. Please do not include "
"any descriptive text such as a real name in this entry. That merely "
"confuses the Ports infrastructure and most tools using it."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2467
msgid ""
"The maintainer is responsible for keeping the port up to date and making "
"sure that it works correctly. For a detailed description of the "
"responsibilities of a port maintainer, refer to extref:{contributing}[The "
"challenge for port maintainers, maintain-port]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2476
msgid ""
"A maintainer volunteers to keep a port in good working order. Maintainers "
"have the primary responsibility for their ports, but not exclusive "
"ownership. Ports exist for the benefit of the community and, in reality, "
"belong to the community. What this means is that people other than the "
"maintainer can make changes to a port. Large changes to the Ports "
"Collection might require changes to many ports. The FreeBSD Ports "
"Management Team or members of other teams might modify ports to fix "
"dependency issues or other problems, like a version bump for a shared "
"library update."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2479
msgid ""
"Some types of fixes have \"blanket approval\" from the {portmgr}, allowing "
"any committer to fix those categories of problems on any port. These fixes "
"do not need approval from the maintainer."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2482
msgid ""
"Blanket approval for most ports applies to fixes like infrastructure "
"changes, or trivial and _tested_ build and runtime fixes. The current list "
"is available in extref:{committers-guide}[Ports section of the Committer's "
"Guide, ports-qa-misc-blanket-approval]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2489
msgid ""
"Other changes to the port will be sent to the maintainer for review and "
"approval before being committed. If the maintainer does not respond to an "
"update request after two weeks (excluding major public holidays), then that "
"is considered a maintainer timeout, and the update can be made without "
"explicit maintainer approval. If the maintainer does not respond within "
"three months, or if there have been three consecutive timeouts, then that "
"maintainer is considered absent without leave, and all of their ports can be "
"assigned back to the pool. Exceptions to this are anything maintained by "
"the {portmgr}, or the {security-officer}. No unauthorized commits may ever "
"be made to ports maintained by those groups."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2493
msgid ""
"We reserve the right to modify the maintainer's submission to better match "
"existing policies and style of the Ports Collection without explicit "
"blessing from the submitter or the maintainer. Also, large infrastructural "
"changes can result in a port being modified without the maintainer's "
"consent. These kinds of changes will never affect the port's functionality."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2495
msgid ""
"The {portmgr} reserves the right to revoke or override anyone's "
"maintainership for any reason, and the {security-officer} reserves the right "
"to revoke or override maintainership for security reasons."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2497
#, no-wrap
msgid "`COMMENT`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2501
msgid ""
"The comment is a one-line description of a port shown by `pkg info`. Please "
"follow these rules when composing it:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2503
msgid "The COMMENT string should be 70 characters or less."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2504
msgid "Do _not_ include the package name or version number of software."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2505
msgid "The comment must begin with a capital and end without a period."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2506
msgid "Do not start with an indefinite article (that is, A or An)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2507
msgid "Capitalize names such as Apache, JavaScript, or Perl."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2508
msgid "Use a serial comma for lists of words: \"green, red, and blue.\""
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2509
msgid "Check for spelling errors."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2511
msgid "Here is an example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2515
#, no-wrap
msgid "COMMENT=\tCat chasing a mouse all over the screen\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2518
msgid ""
"The COMMENT variable immediately follows the MAINTAINER variable in the [."
"filename]#Makefile#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2520
#, no-wrap
msgid "Project website"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2523
msgid ""
"Each port should point to a website that provides more information about the "
"software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2525
msgid ""
"Whenever possible, this should be the official project website maintained by "
"the developers of the software."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2529
#, no-wrap
msgid "WWW=\t\thttps://ffmpeg.org/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2532
msgid ""
"But it can also be a directory or resource in the source code repository:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2536
#, no-wrap
msgid "WWW=\t\thttps://sourceforge.net/projects/mpd/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2539
msgid ""
"The WWW variable immediately follows the COMMENT variable in the [."
"filename]#Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2542
msgid ""
"If the same content can be accessed via HTTP and HTTPS, the URL starting "
"with `https://` shall be used. If the URI is the root of the website or "
"directory, it must be terminated with a slash."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2546
msgid ""
"This information used to be placed into the last line of the [.filename]#pkg-"
"descr# file. It has been moved into the Makefile for easier maintenance and "
"processing. Having a `WWW:` line at the end of the [.filename]#pkg-descr# "
"file is deprecated."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2548
#, no-wrap
msgid "Licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2552
msgid ""
"Each port must document the license under which it is available. If it is "
"not an OSI approved license it must also document any restrictions on "
"redistribution."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2554
#, no-wrap
msgid "`LICENSE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2557
msgid ""
"A short name for the license or licenses if more than one license apply."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2559
msgid ""
"If it is one of the licenses listed in <<licenses-license-list>>, only "
"`LICENSE_FILE` and `LICENSE_DISTFILES` variables can be set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2562
msgid ""
"If this is a license that has not been defined in the ports framework (see "
"<<licenses-license-list>>), the `LICENSE_PERMS` and `LICENSE_NAME` must be "
"set, along with either `LICENSE_FILE` or `LICENSE_TEXT`. "
"`LICENSE_DISTFILES` and `LICENSE_GROUPS` can also be set, but are not "
"required."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2565
msgid ""
"The predefined licenses are shown in <<licenses-license-list>>. The current "
"list is always available in [.filename]#Mk/bsd.licenses.db.mk#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2567
#, no-wrap
msgid "Simplest Usage, Predefined Licenses"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2572
msgid ""
"When the [.filename]#README# of some software says \"This software is under "
"the terms of the GNU Lesser General Public License as published by the Free "
"Software Foundation; either version 2.1 of the License, or (at your option) "
"any later version.\" but does not provide the license file, use this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2576
#, no-wrap
msgid "LICENSE=\tLGPL21+\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2579
msgid "When the software provides the license file, use this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2584
#, no-wrap
msgid ""
"LICENSE=\tLGPL21+\n"
"LICENSE_FILE=\t${WRKSRC}/COPYING\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2589
msgid ""
"For the predefined licenses, the default permissions are `dist-mirror dist-"
"sell pkg-mirror pkg-sell auto-accept`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2591
#, no-wrap
msgid "Predefined License List"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2595
#, no-wrap
msgid "Short Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2596
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2597
#, no-wrap
msgid "Group"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2599
#, no-wrap
msgid "Permissions"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2600
#, no-wrap
msgid "`AGPLv3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2601
#, no-wrap
msgid "GNU Affero General Public License version 3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2602
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2607
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2632
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2832
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2847
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2852
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2857
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2862
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2867
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2872
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2877
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2882
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2887
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2897
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2902
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2907
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2912
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2917
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2922
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3032
#, no-wrap
msgid "`FSF GPL OSI`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2604
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2609
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2614
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2619
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2624
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2629
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2634
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2639
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2644
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2649
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2654
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2659
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2664
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2669
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2674
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2679
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2684
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2689
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2769
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2774
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2779
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2784
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2789
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2794
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2799
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2804
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2809
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2814
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2819
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2824
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2829
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2834
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2839
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2844
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2849
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2854
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2859
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2864
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2869
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2874
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2879
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2884
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2889
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2894
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2899
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2904
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2909
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2914
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2919
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2924
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2964
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2969
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2974
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2979
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2984
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2994
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2999
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3004
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3009
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3014
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3019
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3024
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3029
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3034
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3039
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3044
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3049
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3054
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3059
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3064
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3068
#, no-wrap
msgid "(default)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2605
#, no-wrap
msgid "`AGPLv3+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2606
#, no-wrap
msgid "GNU Affero General Public License version 3 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2610
#, no-wrap
msgid "`APACHE10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2611
#, no-wrap
msgid "Apache License 1.0"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2612
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2657
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2842
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3007
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3042
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3191
#, no-wrap
msgid "`FSF`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2615
#, no-wrap
msgid "`APACHE11`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2616
#, no-wrap
msgid "Apache License 1.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2617
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2622
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2822
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2827
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2837
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2927
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2932
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2937
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2942
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2947
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2952
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2957
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2967
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2972
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2977
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3017
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3022
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3027
#, no-wrap
msgid "`FSF OSI`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2620
#, no-wrap
msgid "`APACHE20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2621
#, no-wrap
msgid "Apache License 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2625
#, no-wrap
msgid "`ART10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2626
#, no-wrap
msgid "Artistic License version 1.0"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2627
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2637
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3199
#, no-wrap
msgid "`OSI`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2630
#, no-wrap
msgid "`ART20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2631
#, no-wrap
msgid "Artistic License version 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2635
#, no-wrap
msgid "`ARTPERL10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2636
#, no-wrap
msgid "Artistic License (perl) version 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2640
#, no-wrap
msgid "`BSD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2641
#, no-wrap
msgid "BSD license Generic Version (deprecated)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2642
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2647
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2652
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2662
#, no-wrap
msgid "`FSF OSI COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2645
#, no-wrap
msgid "`BSD2CLAUSE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2646
#, no-wrap
msgid "BSD 2-clause \"Simplified\" License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2650
#, no-wrap
msgid "`BSD3CLAUSE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2651
#, no-wrap
msgid "BSD 3-clause \"New\" or \"Revised\" License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2655
#, no-wrap
msgid "`BSD4CLAUSE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2656
#, no-wrap
msgid "BSD 4-clause \"Original\" or \"Old\" License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2660
#, no-wrap
msgid "`BSL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2661
#, no-wrap
msgid "Boost Software License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2665
#, no-wrap
msgid "`CC-BY-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2666
#, no-wrap
msgid "Creative Commons Attribution 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2670
#, no-wrap
msgid "`CC-BY-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2671
#, no-wrap
msgid "Creative Commons Attribution 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2675
#, no-wrap
msgid "`CC-BY-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2676
#, no-wrap
msgid "Creative Commons Attribution 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2680
#, no-wrap
msgid "`CC-BY-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2681
#, no-wrap
msgid "Creative Commons Attribution 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2685
#, no-wrap
msgid "`CC-BY-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2686
#, no-wrap
msgid "Creative Commons Attribution 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2690
#, no-wrap
msgid "`CC-BY-NC-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2691
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2694
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2699
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2704
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2709
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2714
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2719
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2724
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2729
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2734
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2739
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2744
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2749
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2754
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2759
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2764
#, no-wrap
msgid "`dist-mirror``pkg-mirror``auto-accept`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2695
#, no-wrap
msgid "`CC-BY-NC-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2696
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2700
#, no-wrap
msgid "`CC-BY-NC-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2701
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2705
#, no-wrap
msgid "`CC-BY-NC-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2706
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2710
#, no-wrap
msgid "`CC-BY-NC-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2711
#, no-wrap
msgid "Creative Commons Attribution Non Commercial 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2715
#, no-wrap
msgid "`CC-BY-NC-ND-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2716
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2720
#, no-wrap
msgid "`CC-BY-NC-ND-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2721
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2725
#, no-wrap
msgid "`CC-BY-NC-ND-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2726
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2730
#, no-wrap
msgid "`CC-BY-NC-ND-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2731
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2735
#, no-wrap
msgid "`CC-BY-NC-ND-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2736
#, no-wrap
msgid "Creative Commons Attribution Non Commercial No Derivatives 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2740
#, no-wrap
msgid "`CC-BY-NC-SA-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2741
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2745
#, no-wrap
msgid "`CC-BY-NC-SA-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2746
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2750
#, no-wrap
msgid "`CC-BY-NC-SA-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2751
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2755
#, no-wrap
msgid "`CC-BY-NC-SA-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2756
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2760
#, no-wrap
msgid "`CC-BY-NC-SA-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2761
#, no-wrap
msgid "Creative Commons Attribution Non Commercial Share Alike 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2765
#, no-wrap
msgid "`CC-BY-ND-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2766
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2770
#, no-wrap
msgid "`CC-BY-ND-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2771
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2775
#, no-wrap
msgid "`CC-BY-ND-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2776
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2780
#, no-wrap
msgid "`CC-BY-ND-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2781
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2785
#, no-wrap
msgid "`CC-BY-ND-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2786
#, no-wrap
msgid "Creative Commons Attribution No Derivatives 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2790
#, no-wrap
msgid "`CC-BY-SA-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2791
#, no-wrap
msgid "Creative Commons Attribution Share Alike 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2795
#, no-wrap
msgid "`CC-BY-SA-2.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2796
#, no-wrap
msgid "Creative Commons Attribution Share Alike 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2800
#, no-wrap
msgid "`CC-BY-SA-2.5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2801
#, no-wrap
msgid "Creative Commons Attribution Share Alike 2.5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2805
#, no-wrap
msgid "`CC-BY-SA-3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2806
#, no-wrap
msgid "Creative Commons Attribution Share Alike 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2810
#, no-wrap
msgid "`CC-BY-SA-4.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2811
#, no-wrap
msgid "Creative Commons Attribution Share Alike 4.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2815
#, no-wrap
msgid "`CC0-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2816
#, no-wrap
msgid "Creative Commons Zero v1.0 Universal"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2817
#, no-wrap
msgid "`FSF GPL COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2820
#, no-wrap
msgid "`CDDL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2821
#, no-wrap
msgid "Common Development and Distribution License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2825
#, no-wrap
msgid "`CPAL-1.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2826
#, no-wrap
msgid "Common Public Attribution License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2830
#, no-wrap
msgid "`ClArtistic`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2831
#, no-wrap
msgid "Clarified Artistic License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2835
#, no-wrap
msgid "`EPL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2836
#, no-wrap
msgid "Eclipse Public License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2840
#, no-wrap
msgid "`GFDL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2841
#, no-wrap
msgid "GNU Free Documentation License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2845
#, no-wrap
msgid "`GMGPL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2846
#, no-wrap
msgid "GNAT Modified General Public License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2850
#, no-wrap
msgid "`GPLv1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2851
#, no-wrap
msgid "GNU General Public License version 1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2855
#, no-wrap
msgid "`GPLv1+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2856
#, no-wrap
msgid "GNU General Public License version 1 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2860
#, no-wrap
msgid "`GPLv2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2861
#, no-wrap
msgid "GNU General Public License version 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2865
#, no-wrap
msgid "`GPLv2+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2866
#, no-wrap
msgid "GNU General Public License version 2 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2870
#, no-wrap
msgid "`GPLv3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2871
#, no-wrap
msgid "GNU General Public License version 3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2875
#, no-wrap
msgid "`GPLv3+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2876
#, no-wrap
msgid "GNU General Public License version 3 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2880
#, no-wrap
msgid "`GPLv3RLE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2881
#, no-wrap
msgid "GNU GPL version 3 Runtime Library Exception"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2885
#, no-wrap
msgid "`GPLv3RLE+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2886
#, no-wrap
msgid "GNU GPL version 3 Runtime Library Exception (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2890
#, no-wrap
msgid "`ISCL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2891
#, no-wrap
msgid "Internet Systems Consortium License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2892
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3037
#, no-wrap
msgid "`FSF GPL OSI COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2895
#, no-wrap
msgid "`LGPL20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2896
#, no-wrap
msgid "GNU Library General Public License version 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2900
#, no-wrap
msgid "`LGPL20+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2901
#, no-wrap
msgid "GNU Library General Public License version 2.0 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2905
#, no-wrap
msgid "`LGPL21`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2906
#, no-wrap
msgid "GNU Lesser General Public License version 2.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2910
#, no-wrap
msgid "`LGPL21+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2911
#, no-wrap
msgid "GNU Lesser General Public License version 2.1 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2915
#, no-wrap
msgid "`LGPL3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2916
#, no-wrap
msgid "GNU Lesser General Public License version 3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2920
#, no-wrap
msgid "`LGPL3+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2921
#, no-wrap
msgid "GNU Lesser General Public License version 3 (or later)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2925
#, no-wrap
msgid "`LPPL10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2926
#, no-wrap
msgid "LaTeX Project Public License version 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2929
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2934
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2939
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2944
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2949
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2954
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2959
#, no-wrap
msgid "`dist-mirror dist-sell`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2930
#, no-wrap
msgid "`LPPL11`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2931
#, no-wrap
msgid "LaTeX Project Public License version 1.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2935
#, no-wrap
msgid "`LPPL12`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2936
#, no-wrap
msgid "LaTeX Project Public License version 1.2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2940
#, no-wrap
msgid "`LPPL13`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2941
#, no-wrap
msgid "LaTeX Project Public License version 1.3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2945
#, no-wrap
msgid "`LPPL13a`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2946
#, no-wrap
msgid "LaTeX Project Public License version 1.3a"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2950
#, no-wrap
msgid "`LPPL13b`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2951
#, no-wrap
msgid "LaTeX Project Public License version 1.3b"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2955
#, no-wrap
msgid "`LPPL13c`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2956
#, no-wrap
msgid "LaTeX Project Public License version 1.3c"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2960
#, no-wrap
msgid "`MIT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2961
#, no-wrap
msgid "MIT license / X11 license"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2962
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2982
#, no-wrap
msgid "`COPYFREE FSF GPL OSI`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2965
#, no-wrap
msgid "`MPL10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2966
#, no-wrap
msgid "Mozilla Public License version 1.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2970
#, no-wrap
msgid "`MPL11`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2971
#, no-wrap
msgid "Mozilla Public License version 1.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2975
#, no-wrap
msgid "`MPL20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2976
#, no-wrap
msgid "Mozilla Public License version 2.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2980
#, no-wrap
msgid "`NCSA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2981
#, no-wrap
msgid "University of Illinois/NCSA Open Source License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2985
#, no-wrap
msgid "`NONE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2986
#, no-wrap
msgid "No license specified"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2989
#, no-wrap
msgid "`none`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2990
#, no-wrap
msgid "`OFL10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2991
#, no-wrap
msgid "SIL Open Font License version 1.0 (https://scripts.sil.org/OFL/)"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2992
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2997
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3207
#, no-wrap
msgid "`FONTS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2995
#, no-wrap
msgid "`OFL11`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:2996
#, no-wrap
msgid "SIL Open Font License version 1.1 (https://scripts.sil.org/OFL/)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3000
#, no-wrap
msgid "`OWL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3001
#, no-wrap
msgid "Open Works License (owl.apotheon.org)"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3002
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3203
#, no-wrap
msgid "`COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3005
#, no-wrap
msgid "`OpenSSL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3006
#, no-wrap
msgid "OpenSSL License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3010
#, no-wrap
msgid "`PD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3011
#, no-wrap
msgid "Public Domain"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3012
#, no-wrap
msgid "`GPL COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3015
#, no-wrap
msgid "`PHP202`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3016
#, no-wrap
msgid "PHP License version 2.02"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3020
#, no-wrap
msgid "`PHP30`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3021
#, no-wrap
msgid "PHP License version 3.0"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3025
#, no-wrap
msgid "`PHP301`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3026
#, no-wrap
msgid "PHP License version 3.01"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3030
#, no-wrap
msgid "`PSFL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3031
#, no-wrap
msgid "Python Software Foundation License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3035
#, no-wrap
msgid "`PostgreSQL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3036
#, no-wrap
msgid "PostgreSQL License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3040
#, no-wrap
msgid "`RUBY`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3041
#, no-wrap
msgid "Ruby License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3045
#, no-wrap
msgid "`UNLICENSE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3046
#, no-wrap
msgid "The Unlicense"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3047
#, no-wrap
msgid "`COPYFREE FSF GPL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3050
#, no-wrap
msgid "`WTFPL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3051
#, no-wrap
msgid "Do What the Fuck You Want To Public License version 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3052
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3057
#, no-wrap
msgid "`GPL FSF COPYFREE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3055
#, no-wrap
msgid "`WTFPL1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3056
#, no-wrap
msgid "Do What the Fuck You Want To Public License version 1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3060
#, no-wrap
msgid "`ZLIB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3061
#, no-wrap
msgid "zlib License"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3062
#, no-wrap
msgid "`GPL FSF OSI`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3065
#, no-wrap
msgid "`ZPL21`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3066
#, no-wrap
msgid "Zope Public License version 2.1"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3067
#, no-wrap
msgid "`GPL OSI`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3071
#, no-wrap
msgid "`LICENSE_PERMS` and `LICENSE_PERMS_NAME_`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3074
msgid "Permissions. use `none` if empty."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3075
#, no-wrap
msgid "License Permissions List"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3077
#, no-wrap
msgid "`dist-mirror`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3080
msgid ""
"Redistribution of the distribution files is permitted. The distribution "
"files will be added to the FreeBSD `MASTER_SITE_BACKUP` CDN."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3082
#, no-wrap
msgid "`no-dist-mirror`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3086
msgid ""
"Redistribution of the distribution files is prohibited. This is equivalent "
"to setting crossref:special[porting-restrictions-restricted,`RESTRICTED`]. "
"The distribution files will _not_ be added to the FreeBSD "
"`MASTER_SITE_BACKUP` CDN."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3088
#, no-wrap
msgid "`dist-sell`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3091
msgid ""
"Selling of distribution files is permitted. The distribution files will be "
"present on the installer images."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3093
#, no-wrap
msgid "`no-dist-sell`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3096
msgid ""
"Selling of distribution files is prohibited. This is equivalent to setting "
"crossref:special[porting-restrictions-no_cdrom,`NO_CDROM`]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3098
#, no-wrap
msgid "`pkg-mirror`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3101
msgid ""
"Free redistribution of package is permitted. The package will be "
"distributed on the FreeBSD package CDN https://pkg.freebsd.org/[https://pkg."
"freebsd.org/]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3103
#, no-wrap
msgid "`no-pkg-mirror`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3107
msgid ""
"Free redistribution of package is prohibited. Equivalent to setting "
"crossref:special[porting-restrictions-no_package,`NO_PACKAGE`]. The package "
"will _not_ be distributed from the FreeBSD package CDN https://pkg.freebsd."
"org/[https://pkg.freebsd.org/]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3109
#, no-wrap
msgid "`pkg-sell`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3112
msgid ""
"Selling of package is permitted. The package will be present on the "
"installer images."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3114
#, no-wrap
msgid "`no-pkg-sell`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3118
msgid ""
"Selling of package is prohibited. This is equivalent to setting crossref:"
"special[porting-restrictions-no_cdrom,`NO_CDROM`]. The package will _not_ "
"be present on the installer images."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3120
#, no-wrap
msgid "`auto-accept`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3124
msgid ""
"License is accepted by default. Prompts to accept a license are not "
"displayed unless the user has defined `LICENSES_ASK`. Use this unless the "
"license states the user must accept the terms of the license."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3126
#, no-wrap
msgid "`no-auto-accept`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3130
msgid ""
"License is not accepted by default. The user will always be asked to "
"confirm the acceptance of this license. This must be used if the license "
"states that the user must accept its terms."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3132
msgid ""
"When both `_permission_` and `no-_permission_` is present the `no-"
"_permission_` will cancel `_permission_`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3134
msgid ""
"When `_permission_` is not present, it is considered to be a `no-"
"_permission_`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3138
msgid ""
"Some missing permissions will prevent a port (and all ports depending on it) "
"from being usable by package users:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3140
msgid ""
"A port without the `auto-accept` permission will never be be built and all "
"the ports depending on it will be ignored."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3142
msgid ""
"A port without the `pkg-mirror` permission will be removed, as well as all "
"the ports depending on it, after the build and they will ever end up being "
"distributed."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3145
#, no-wrap
msgid "Nonstandard License"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3149
msgid ""
"Read the terms of the license and translate those using the available "
"permissions."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3157
#, no-wrap
msgid ""
"LICENSE= UNKNOWN\n"
"LICENSE_NAME= unknown\n"
"LICENSE_TEXT= This program is NOT in public domain.\\\n"
" It can be freely distributed for non-commercial purposes only.\n"
"LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3162
#, no-wrap
msgid "Standard and Nonstandard Licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3168
msgid ""
"Read the terms of the license and express those using the available "
"permissions. In case of doubt, please ask for guidance on the {freebsd-"
"ports}."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3176
#, no-wrap
msgid ""
"LICENSE= WARSOW GPLv2\n"
"LICENSE_COMB= multi\n"
"LICENSE_NAME_WARSOW= Warsow Content License\n"
"LICENSE_FILE_WARSOW= ${WRKSRC}/docs/license.txt\n"
"LICENSE_PERMS_WARSOW= dist-mirror pkg-mirror auto-accept\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3182
msgid ""
"When the permissions of the GPLv2 and the UNKNOWN licenses are mixed, the "
"port ends up with `dist-mirror dist-sell pkg-mirror pkg-sell auto-accept "
"dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept`. The `no-"
"_permissions_` cancel the _permissions_. The resulting list of permissions "
"are _dist-mirror pkg-mirror auto-accept_. The distribution files and the "
"packages will not be available on the installer images."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3185
#, no-wrap
msgid "`LICENSE_GROUPS` and `LICENSE_GROUPS_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3188
msgid "Groups the license belongs."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3189
#, no-wrap
msgid "Predefined License Groups List"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3193
msgid ""
"Free Software Foundation Approved, see the https://www.fsf.org/licensing/"
"[FSF Licensing & Compliance Team]."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3195
#, no-wrap
msgid "`GPL`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3197
msgid "GPL Compatible"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3201
msgid ""
"OSI Approved, see the Open Source Initiative https://opensource.org/licenses/"
"[Open Source Licenses] page."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3205
msgid ""
"Comply with Copyfree Standard Definition, see the https://copyfree.org/"
"standard/licenses/[Copyfree Licenses] page."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3209
msgid "Font licenses"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3211
#, no-wrap
msgid "`LICENSE_NAME` and `LICENSE_NAME_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3214
msgid "Full name of the license."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3216
#, no-wrap
msgid "`LICENSE_NAME`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3226
#, no-wrap
msgid ""
"LICENSE= UNRAR\n"
"LICENSE_NAME= UnRAR License\n"
"LICENSE_FILE= ${WRKSRC}/license.txt\n"
"LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3231
#, no-wrap
msgid "`LICENSE_FILE` and `LICENSE_FILE_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3235
msgid ""
-"Full path to the file containing the license text, usually [.filename]#"
-"${WRKSRC}/some/file#. If the file is not in the distfile, and its content "
-"is too long to be put in <<licenses-license_text,`LICENSE_TEXT`>>, put it in "
-"a new file in [.filename]#${FILESDIR}#."
+"Full path to the file containing the license text, usually [."
+"filename]#${WRKSRC}/some/file#. If the file is not in the distfile, and its "
+"content is too long to be put in <<licenses-license_text,`LICENSE_TEXT`>>, "
+"put it in a new file in [.filename]#${FILESDIR}#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3237
#, no-wrap
msgid "`LICENSE_FILE`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3245
#, no-wrap
msgid ""
"LICENSE=\tGPLv3+\n"
"LICENSE_FILE=\t${WRKSRC}/COPYING\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3250
#, no-wrap
msgid "`LICENSE_TEXT` and `LICENSE_TEXT_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3254
msgid ""
"Text to use as a license. Useful when the license is not in the "
"distribution files and its text is short."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3256
#, no-wrap
msgid "`LICENSE_TEXT`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3267
#, no-wrap
msgid ""
"LICENSE= UNKNOWN\n"
"LICENSE_NAME= unknown\n"
"LICENSE_TEXT= This program is NOT in public domain.\\\n"
" It can be freely distributed for non-commercial purposes only,\\\n"
" and THERE IS NO WARRANTY FOR THIS PROGRAM.\n"
"LICENSE_PERMS= dist-mirror no-dist-sell pkg-mirror no-pkg-sell auto-accept\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3272
#, no-wrap
msgid "`LICENSE_DISTFILES` and `LICENSE_DISTFILES_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3276
msgid ""
"The distribution files to which the licenses apply. Defaults to all the "
"distribution files."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3278
#, no-wrap
msgid "`LICENSE_DISTFILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3283
msgid ""
"Used when the distribution files do not all have the same license. For "
"example, one has a code license, and another has some artwork that cannot be "
"redistributed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3288
#, no-wrap
msgid ""
"MASTER_SITES= SF/some-game\n"
"DISTFILES= ${DISTNAME}${EXTRACT_SUFX} artwork.zip\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3296
#, no-wrap
msgid ""
"LICENSE= BSD3CLAUSE ARTWORK\n"
"LICENSE_COMB= dual\n"
"LICENSE_NAME_ARTWORK= The game artwork license\n"
"LICENSE_TEXT_ARTWORK= The README says that the files cannot be redistributed\n"
"LICENSE_PERMS_ARTWORK= pkg-mirror pkg-sell auto-accept\n"
"LICENSE_DISTFILES_BSD3CLAUSE= ${DISTNAME}${EXTRACT_SUFX}\n"
"LICENSE_DISTFILES_ARTWORK= artwork.zip\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3301
#, no-wrap
msgid "`LICENSE_COMB`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3306
msgid ""
"Set to `multi` if all licenses apply. Set to `dual` if any license "
"applies. Defaults to `single`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3308
#, no-wrap
msgid "Dual Licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3315
msgid ""
"When a port says \"This software may be distributed under the GNU General "
"Public License or the Artistic License\", it means that either license can "
"be used. Use this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3320
#, no-wrap
msgid ""
"LICENSE=\tART10 GPLv1\n"
"LICENSE_COMB= dual\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3323
msgid "If license files are provided, use this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3330
#, no-wrap
msgid ""
"LICENSE=\tART10 GPLv1\n"
"LICENSE_COMB= dual\n"
"LICENSE_FILE_ART10= ${WRKSRC}/Artistic\n"
"LICENSE_FILE_GPLv1= ${WRKSRC}/Copying\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3335
#, no-wrap
msgid "Multiple Licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3340
msgid ""
"When part of a port has one license, and another part has a different "
"license, use `multi`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3345
#, no-wrap
msgid ""
"LICENSE=\tGPLv2 LGPL21+\n"
"LICENSE_COMB=\tmulti\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3350
#, no-wrap
msgid "`PORTSCOUT`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3353
msgid ""
"Portscout is an automated distfile check utility for the FreeBSD Ports "
"Collection, described in detail in crossref:keeping-up[distfile-survey,"
"Portscout: the FreeBSD Ports Distfile Scanner]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3355
msgid ""
"`PORTSCOUT` defines special conditions within which the Portscout distfile "
"scanner is restricted."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3357
msgid "Situations where `PORTSCOUT` is set include:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3359
msgid ""
"When distfiles have to be ignored for specific versions. For example, to "
"exclude version _8.2_ and version _8.3_ from distfile version checks because "
"they are known to be broken, add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3363
#, no-wrap
msgid "PORTSCOUT=\tskipv:8.2,8.3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3366
msgid ""
"When distfile version checks have to be disabled completely. For example, if "
"a port is not going to be updated ever again, add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3370
#, no-wrap
msgid "PORTSCOUT=\tignore:1\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3373
msgid ""
"When specific versions or specific major and minor revisions of a distfile "
"must be checked. For example, if only version _0.6.4_ must be monitored "
"because newer versions have compatibility issues with FreeBSD, add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3377
#, no-wrap
msgid "PORTSCOUT=\tlimit:^0\\.6\\.4\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3380
msgid ""
"When URLs listing the available versions differ from the download URLs. For "
"example, to limit distfile version checks to the download page for the "
"package:databases/pgtune[] port, add:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3384
#, no-wrap
msgid "PORTSCOUT=\tsite:http://www.renpy.org/dl/release/\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3387
#, no-wrap
msgid "Dependencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3394
msgid ""
"Many ports depend on other ports. This is a very convenient feature of most "
"Unix-like operating systems, including FreeBSD. Multiple ports can share a "
"common dependency, rather than bundling that dependency with every port or "
"package that needs it. There are seven variables that can be used to ensure "
"that all the required bits will be on the user's machine. There are also "
"some pre-supported dependency variables for common cases, plus a few more to "
"control the behavior of dependencies."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3400
msgid ""
"When software has extra dependencies that provide extra features, the base "
"dependencies listed in `*_DEPENDS` should include the extra dependencies "
"that would benefit most users. The base dependencies should never be a "
"\"minimal\" dependency set. The goal is not to include every dependency "
"possible. Only include those that will benefit most people."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3403
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4748
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4747
#, no-wrap
msgid "`LIB_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3408
msgid ""
"This variable specifies the shared libraries this port depends on. It is a "
"list of `_lib:dir_` tuples where `_lib_` is the name of the shared library, "
"`_dir_` is the directory in which to find it in case it is not available. "
"For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3412
#, no-wrap
msgid "LIB_DEPENDS= libjpeg.so:graphics/jpeg\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3415
msgid ""
"will check for a shared jpeg library with any version, and descend into the "
"[.filename]#graphics/jpeg# subdirectory of the ports tree to build and "
"install it if it is not found."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3418
msgid ""
"The dependency is checked twice, once from within the `build` target and "
"then from within the `install` target. Also, the name of the dependency is "
"put into the package so that `pkg install` (see man:pkg-install[8]) will "
"automatically install it if it is not on the user's system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3420
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4749
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4748
#, no-wrap
msgid "`RUN_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3425
msgid ""
"This variable specifies executables or files this port depends on during run-"
"time. It is a list of ``_path:dir_``[:``_target_``] tuples where `_path_` "
"is the name of the executable or file, _dir_ is the directory in which to "
"find it in case it is not available, and _target_ is the target to call in "
"that directory. If _path_ starts with a slash (`/`), it is treated as a "
"file and its existence is tested with `test -e`; otherwise, it is assumed to "
"be an executable, and `which -s` is used to determine if the program exists "
"in the search path."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3427
msgid "For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3432
#, no-wrap
msgid ""
"RUN_DEPENDS=\t${LOCALBASE}/news/bin/innd:news/inn \\\n"
"\t\txmlcatmgr:textproc/xmlcatmgr\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3436
msgid ""
"will check if the file or directory [.filename]#/usr/local/news/bin/innd# "
"exists, and build and install it from the [.filename]#news/inn# subdirectory "
"of the ports tree if it is not found. It will also see if an executable "
"called `xmlcatmgr` is in the search path, and descend into [."
"filename]#textproc/xmlcatmgr# to build and install it if it is not found."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3441
msgid ""
"In this case, `innd` is actually an executable; if an executable is in a "
"place that is not expected to be in the search path, use the full pathname."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3446
msgid "The official search `PATH` used on the ports build cluster is"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3450
#, no-wrap
msgid "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3457
msgid ""
"The dependency is checked from within the `install` target. Also, the name "
"of the dependency is put into the package so that `pkg install` (see man:pkg-"
"install[8]) will automatically install it if it is not on the user's "
"system. The _target_ part can be omitted if it is the same as "
"`DEPENDS_TARGET`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3460
msgid ""
"A quite common situation is when `RUN_DEPENDS` is literally the same as "
"`BUILD_DEPENDS`, especially if ported software is written in a scripted "
"language or if it requires the same build and run-time environment. In this "
"case, it is both tempting and intuitive to directly assign one to the other:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3464
#, no-wrap
msgid "RUN_DEPENDS=\t${BUILD_DEPENDS}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3471
msgid ""
"However, such assignment can pollute run-time dependencies with entries not "
"defined in the port's original `BUILD_DEPENDS`. This happens because of man:"
"make[1]'s lazy evaluation of variable assignment. Consider a [."
"filename]#Makefile# with `USE_*`, which are processed by [.filename]#ports/"
"Mk/bsd.*.mk# to augment initial build dependencies. For example, `USES= "
"gmake` adds package:devel/gmake[] to `BUILD_DEPENDS`. To prevent such "
"additional dependencies from polluting `RUN_DEPENDS`, create another "
"variable with the current content of `BUILD_DEPENDS` and assign it to both "
"`BUILD_DEPENDS` and `RUN_DEPENDS`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3478
#, no-wrap
msgid ""
"MY_DEPENDS=\tsome:devel/some \\\n"
"\t\tother:lang/other\n"
"BUILD_DEPENDS=\t${MY_DEPENDS}\n"
"RUN_DEPENDS=\t${MY_DEPENDS}\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3484
msgid ""
"_Do not_ use `:=` to assign `BUILD_DEPENDS` to `RUN_DEPENDS` or vice-versa. "
"All variables are expanded immediately, which is exactly the wrong thing to "
"do and almost always a failure."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3487
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4747
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4746
#, no-wrap
msgid "`BUILD_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3492
msgid ""
"This variable specifies executables or files this port requires to build. "
"Like `RUN_DEPENDS`, it is a list of ``_path:dir_``[:``_target_``] tuples. "
"For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3496
#, no-wrap
msgid "BUILD_DEPENDS=\tunzip:archivers/unzip\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3499
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3537
msgid ""
"will check for an executable called `unzip`, and descend into the [."
"filename]#archivers/unzip# subdirectory of the ports tree to build and "
"install it if it is not found."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3505
msgid ""
"\"build\" here means everything from extraction to compilation. The "
"dependency is checked from within the `extract` target. The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3508
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4746
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4745
#, no-wrap
msgid "`FETCH_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3513
msgid ""
"This variable specifies executables or files this port requires to fetch. "
"Like the previous two, it is a list of ``_path:dir_``[:``_target_``] "
"tuples. For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3517
#, no-wrap
msgid "FETCH_DEPENDS=\tncftp2:net/ncftp2\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3520
msgid ""
"will check for an executable called `ncftp2`, and descend into the [."
"filename]#net/ncftp2# subdirectory of the ports tree to build and install it "
"if it is not found."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3523
msgid ""
"The dependency is checked from within the `fetch` target. The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3525
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4744
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4743
#, no-wrap
msgid "`EXTRACT_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3530
msgid ""
"This variable specifies executables or files this port requires for "
"extraction. Like the previous, it is a list of ``_path:dir_``[:"
"``_target_``] tuples. For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3534
#, no-wrap
msgid "EXTRACT_DEPENDS=\tunzip:archivers/unzip\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3540
msgid ""
"The dependency is checked from within the `extract` target. The _target_ "
"part can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3544
msgid ""
"Use this variable only if the extraction does not already work (the default "
"assumes `tar`) and cannot be made to work using `USES=tar`, `USES=lha` or "
"`USES=zip` described in crossref:uses[uses,Using `USES` Macros]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3547
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4745
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4744
#, no-wrap
msgid "`PATCH_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3551
msgid ""
"This variable specifies executables or files this port requires to patch. "
"Like the previous, it is a list of ``_path:dir_``[:``_target_``] tuples. For "
"example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3555
#, no-wrap
msgid "PATCH_DEPENDS=\t${NONEXISTENT}:java/jfc:extract\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3558
msgid ""
"will descend into the [.filename]#java/jfc# subdirectory of the ports tree "
"to extract it."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3561
msgid ""
"The dependency is checked from within the `patch` target. The _target_ part "
"can be omitted if it is the same as `DEPENDS_TARGET`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3563
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4826
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4825
#, no-wrap
msgid "`USES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3567
msgid ""
"Parameters can be added to define different features and dependencies used "
"by the port. They are specified by adding this line to the [."
"filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3571
#, no-wrap
msgid "USES= feature[:arguments]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3574
msgid ""
"For the complete list of values, please see crossref:uses[uses,Using `USES` "
"Macros]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3578
msgid ""
"`USES` cannot be assigned after inclusion of [.filename]#bsd.port.pre.mk#."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3581
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3603
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4129
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4128
#, no-wrap
msgid "`USE_*`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3588
msgid ""
"Several variables exist to define common dependencies shared by many ports. "
"Their use is optional, but helps to reduce the verbosity of the port [."
"filename]##Makefile##s. Each of them is styled as `USE_*`. These variables "
"may be used only in the port [.filename]##Makefile##s and [.filename]#ports/"
"Mk/bsd.*.mk#. They are not meant for user-settable options - use "
"`PORT_OPTIONS` for that purpose."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3593
msgid ""
"It is _always_ incorrect to set any `USE_*` in [.filename]#/etc/make.conf#. "
"For instance, setting"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3597
#, no-wrap
msgid "USE_GCC=X.Y\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3600
msgid ""
"(where X.Y is version number) would add a dependency on gccXY for every "
"port, including `lang/gccXY` itself!"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3609
#, no-wrap
msgid "Means"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3610
#, no-wrap
msgid "`USE_GCC`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3636
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3635
#, no-wrap
msgid ""
"The port requires GCC (`gcc` or `{g-plus-plus}`) to build.\n"
"Some ports need a specific, old GCC version, some require modern, recent versions.\n"
"It is typically set to `yes` (means always use stable, modern GCC from ports per `GCC_DEFAULT` in [.filename]#Mk/bsd.default-versions.mk#).\n"
"This is also the default value.\n"
"The exact version can also be specified, with a value such as `10`.\n"
-"The minimal required version can be specified as `10+`.\n"
"GCC from the base system is used when it satisfies the requested version, otherwise an appropriate compiler is built from ports, and `CC` and `CXX` are adjusted accordingly.\n"
"The `:build` argument following the version specifier adds only a build time dependency to the port.\n"
"\n"
"For example:\n"
"[example]\n"
"====\n"
"[.programlisting]\n"
"....\n"
"USE_GCC=yes\t\t# port requires a current version of GCC\n"
-"USE_GCC=11+:build\t# port requires GCC 11 or later at build time only\n"
+"USE_GCC=11:build\t# port requires GCC 11 at build time only\n"
"....\n"
"====\n"
"\n"
"[NOTE]\n"
"====\n"
"`USE_GCC=any` is deprecated and should not be used in new ports\n"
"===="
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3645
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3644
msgid ""
"Variables related to gmake and [.filename]#configure# are described in "
"crossref:special[building,Building Mechanisms], while autoconf, automake and "
"libtool are described in crossref:special[using-autotools,Using GNU "
"Autotools]. Perl related variables are described in crossref:special[using-"
"perl,Using Perl]. X11 variables are listed in crossref:special[using-x11,"
"Using X11]. crossref:special[using-gnome,Using Gnome] deals with GNOME and "
"crossref:special[using-kde,Using KDE] with KDE related variables. crossref:"
"special[using-java,Using Java] documents Java variables, while crossref:"
"special[using-php,Web Applications, Apache and PHP] contains information on "
"Apache, PHP and PEAR modules. Python is discussed in crossref:special[using-"
"python,Using Python], while Ruby in crossref:special[using-ruby,Using "
"Ruby]. crossref:special[using-sdl,Using SDL] provides variables used for "
"SDL applications and finally, crossref:special[using-xfce,Using Xfce] "
"contains information on Xfce."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3647
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3646
#, no-wrap
msgid "Minimal Version of a Dependency"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3650
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3649
msgid ""
"A minimal version of a dependency can be specified in any `*_DEPENDS` except "
"`LIB_DEPENDS` using this syntax:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3654
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3653
#, no-wrap
msgid "p5-Spiffy>=0.26:devel/p5-Spiffy\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3658
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3657
msgid ""
"The first field contains a dependent package name, which must match the "
"entry in the package database, a comparison sign, and a package version. "
"The dependency is satisfied if p5-Spiffy-0.26 or newer is installed on the "
"machine."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3660
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3659
#, no-wrap
msgid "Notes on Dependencies"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3666
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3665
msgid ""
"As mentioned above, the default target to call when a dependency is required "
"is `DEPENDS_TARGET`. It defaults to `install`. This is a user variable; it "
"is never defined in a port's [.filename]#Makefile#. If the port needs a "
"special way to handle a dependency, use the `:target` part of `*_DEPENDS` "
"instead of redefining `DEPENDS_TARGET`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3670
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3669
msgid ""
"When running `make clean`, the port dependencies are automatically cleaned "
"too. If this is not desirable, define `NOCLEANDEPENDS` in the environment. "
"This may be particularly desirable if the port has something that takes a "
"long time to rebuild in its dependency list, such as KDE, GNOME or Mozilla."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3675
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3674
msgid ""
"To depend on another port unconditionally, use the variable `${NONEXISTENT}` "
"as the first field of `BUILD_DEPENDS` or `RUN_DEPENDS`. Use this only when "
"the source of the other port is needed. Compilation time can be saved by "
"specifying the target too. For instance"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3679
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3678
#, no-wrap
msgid "BUILD_DEPENDS=\t${NONEXISTENT}:graphics/jpeg:extract\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3682
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3681
msgid "will always descend to the `jpeg` port and extract it."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3684
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3683
#, no-wrap
msgid "Circular Dependencies Are Fatal"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3689
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3688
msgid "Do not introduce any circular dependencies into the ports tree!"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3696
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3695
msgid ""
"The ports building technology does not tolerate circular dependencies. If "
"one is introduced, someone, somewhere in the world, will have their FreeBSD "
"installation broken almost immediately, with many others quickly to follow. "
"These can really be hard to detect. If in doubt, before making that change, "
"make sure to run: `cd /usr/ports; make index`. That process can be quite "
"slow on older machines, but it may be able to save a large number of people, "
"including yourself, a lot of grief in the process."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3698
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3697
#, no-wrap
msgid "Problems Caused by Automatic Dependencies"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3702
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3701
msgid ""
"Dependencies must be declared either explicitly or by using the <<makefile-"
"options,OPTIONS framework>>. Using other methods like automatic detection "
"complicates indexing, which causes problems for port and package management."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3704
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3703
#, no-wrap
msgid "Wrong Declaration of an Optional Dependency"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3711
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3710
#, no-wrap
msgid ".include <bsd.port.pre.mk>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3715
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3714
#, no-wrap
msgid ""
".if exists(${LOCALBASE}/bin/foo)\n"
"LIB_DEPENDS=\tlibbar.so:foo/bar\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3724
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3723
msgid ""
"The problem with trying to automatically add dependencies is that files and "
"settings outside an individual port can change at any time. For example: an "
"index is built, then a batch of ports are installed. But one of the ports "
"installs the tested file. The index is now incorrect, because an installed "
"port unexpectedly has a new dependency. The index may still be wrong even "
"after rebuilding if other ports also determine their need for dependencies "
"based on the existence of other files."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3726
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3725
#, no-wrap
msgid "Correct Declaration of an Optional Dependency"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3734
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3733
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tBAR\n"
"BAR_DESC=\tCalling cellphones via bar\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3736
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3735
#, no-wrap
msgid "BAR_LIB_DEPENDS=\tlibbar.so:foo/bar\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3743
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3742
msgid ""
"Testing option variables is the correct method. It will not cause "
"inconsistencies in the index of a batch of ports, provided the options were "
"defined prior to the index build. Simple scripts can then be used to "
"automate the building, installation, and updating of these ports and their "
"packages."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3745
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3744
#, no-wrap
msgid "Slave Ports and `MASTERDIR`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3751
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3750
msgid ""
"If the port needs to build slightly different versions of packages by having "
"a variable (for instance, resolution, or paper size) take different values, "
"create one subdirectory per package to make it easier for users to see what "
"to do, but try to share as many files as possible between ports. Typically, "
"by using variables cleverly, only a very short [.filename]#Makefile# is "
"needed in all but one of the directories. In the sole [."
"filename]#Makefile#, use `MASTERDIR` to specify the directory where the rest "
"of the files are. Also, use a variable as part of <<porting-pkgname,"
"`PKGNAMESUFFIX`>> so the packages will have different names."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3754
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3753
msgid ""
"This will be best demonstrated by an example. This is part of [."
"filename]#print/pkfonts300/Makefile#;"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3760
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3759
#, no-wrap
msgid ""
"PORTNAME=\tpkfonts${RESOLUTION}\n"
"PORTVERSION=\t1.0\n"
"DISTFILES=\tpk${RESOLUTION}.tar.gz\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3762
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3761
#, no-wrap
msgid "PLIST=\t\t${PKGDIR}/pkg-plist.${RESOLUTION}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3775
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3774
#, no-wrap
msgid ""
".if !defined(RESOLUTION)\n"
"RESOLUTION=\t300\n"
".else\n"
".if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \\\n"
"\t${RESOLUTION} != 300 && ${RESOLUTION} != 360 && \\\n"
"\t${RESOLUTION} != 400 && ${RESOLUTION} != 600\n"
".BEGIN:\n"
"\t@${ECHO_MSG} \"Error: invalid value for RESOLUTION: \\\"${RESOLUTION}\\\"\"\n"
"\t@${ECHO_MSG} \"Possible values are: 118, 240, 300, 360, 400 and 600.\"\n"
"\t@${FALSE}\n"
".endif\n"
".endif\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3779
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3778
msgid ""
"package:print/pkfonts300[] also has all the regular patches, package files, "
"etc. Running `make` there, it will take the default value for the "
"resolution (300) and build the port normally."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3781
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3780
msgid ""
"As for other resolutions, this is the _entire_ [.filename]#print/pkfonts360/"
"Makefile#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3786
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3785
#, no-wrap
msgid ""
"RESOLUTION=\t360\n"
"MASTERDIR=\t${.CURDIR}/../pkfonts300\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3788
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3787
#, no-wrap
msgid ".include\t\"${MASTERDIR}/Makefile\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3793
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3792
msgid ""
"([.filename]#print/pkfonts118/Makefile#, [.filename]#print/pkfonts600/"
"Makefile#, and all the other are similar). `MASTERDIR` definition tells [."
"filename]#bsd.port.mk# that the regular set of subdirectories like "
"`FILESDIR` and `SCRIPTDIR` are to be found under [.filename]#pkfonts300#. "
"The `RESOLUTION=360` line will override the `RESOLUTION=300` line in [."
"filename]#pkfonts300/Makefile# and the port will be built with resolution "
"set to 360."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3795
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3794
#, no-wrap
msgid "Man Pages"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3800
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3799
msgid ""
"If the port anchors its man tree somewhere other than `PREFIX`, use "
"`MANDIRS` to specify those directories. Note that the files corresponding "
"to manual pages must be placed in [.filename]#pkg-plist# along with the rest "
"of the files. The purpose of `MANDIRS` is to enable automatic compression "
"of manual pages, therefore the file names are suffixed with [.filename]#.gz#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3802
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3801
#, no-wrap
msgid "Info Files"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3809
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3808
msgid ""
"If the package needs to install GNU info files, list them in `INFO` (without "
"the trailing `.info`), one entry per document. These files are assumed to "
"be installed to [.filename]#PREFIX/INFO_PATH#. Change `INFO_PATH` if the "
"package uses a different location. However, this is not recommended. These "
"entries contain just the path relative to [.filename]#PREFIX/INFO_PATH#. "
"For example, package:lang/gcc34[] installs info files to [.filename]#PREFIX/"
"INFO_PATH/gcc34#, and `INFO` will be something like this:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3813
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3812
#, no-wrap
msgid "INFO=\tgcc34/cpp gcc34/cppinternals gcc34/g77 ...\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3816
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3815
msgid ""
"Appropriate installation/de-installation code will be automatically added to "
"the temporary [.filename]#pkg-plist# before package registration."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3818
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3817
#, no-wrap
msgid "Makefile Options"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3823
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3822
msgid ""
"Many applications can be built with optional or differing configurations. "
"Examples include choice of natural (human) language, GUI versus command-"
"line, or type of database to support. Users may need a different "
"configuration than the default, so the ports system provides hooks the port "
"author can use to control which variant will be built. Supporting these "
"options properly will make users happy, and effectively provide two or more "
"ports for the price of one."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3825
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3824
#, no-wrap
msgid "`OPTIONS`"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3828
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3827
#, no-wrap
msgid "Background"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3834
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3833
msgid ""
"`OPTIONS_*` give the user installing the port a dialog showing the available "
"options, and then saves those options to [.filename]#${PORT_DBDIR}/"
"${OPTIONS_NAME}/options#. The next time the port is built, the options are "
"reused. `PORT_DBDIR` defaults to [.filename]#/var/db/ports#. "
"`OPTIONS_NAME` is to the port origin with an underscore as the space "
"separator, for example, for package:dns/bind99[] it will be `dns_bind99`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3838
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3837
msgid ""
"When the user runs `make config` (or runs `make build` for the first time), "
"the framework checks for [.filename]#${PORT_DBDIR}/${OPTIONS_NAME}/"
"options#. If that file does not exist, the values of `OPTIONS_*` are used, "
"and a dialog box is displayed where the options can be enabled or disabled. "
"Then [.filename]#options# is saved and the configured variables are used "
"when building the port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3840
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3839
msgid ""
"If a new version of the port adds new `OPTIONS`, the dialog will be "
"presented to the user with the saved values of old `OPTIONS` prefilled."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3843
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3842
msgid ""
"`make showconfig` shows the saved configuration. Use `make rmconfig` to "
"remove the saved configuration."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3845
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3844
#, no-wrap
msgid "Syntax"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3849
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3848
msgid ""
"`OPTIONS_DEFINE` contains a list of `OPTIONS` to be used. These are "
"independent of each other and are not grouped:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3853
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4277
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4573
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4630
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4693
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3852
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4276
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4572
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4629
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4692
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1 OPT2\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3856
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3855
msgid ""
"Once defined, `OPTIONS` are described (optional, but strongly recommended):"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3865
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3864
#, no-wrap
msgid ""
"OPT1_DESC=\tDescribe OPT1\n"
"OPT2_DESC=\tDescribe OPT2\n"
"OPT3_DESC=\tDescribe OPT3\n"
"OPT4_DESC=\tDescribe OPT4\n"
"OPT5_DESC=\tDescribe OPT5\n"
"OPT6_DESC=\tDescribe OPT6\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3869
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3868
msgid ""
"[.filename]#ports/Mk/bsd.options.desc.mk# has descriptions for many common "
"`OPTIONS`. While often useful, override them if the description is "
"insufficient for the port."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3875
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3874
msgid ""
"When describing options, view it from the perspective of the user: \"What "
"functionality does it change?\" and \"Why would I want to enable this?\" Do "
"not just repeat the name. For example, describing the `NLS` option as "
"\"include NLS support\" does not help the user, who can already see the "
"option name but may not know what it means. Describing it as \"Native "
"Language Support via gettext utilities\" is much more helpful."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3881
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3880
msgid ""
"Option names are always in all uppercase. They cannot use mixed case or "
"lowercase."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3884
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3883
msgid ""
"`OPTIONS` can be grouped as radio choices, where only one choice from each "
"group is allowed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3889
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3888
#, no-wrap
msgid ""
"OPTIONS_SINGLE=\t\tSG1\n"
"OPTIONS_SINGLE_SG1=\tOPT3 OPT4\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3895
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3894
msgid ""
"There _must_ be one of each `OPTIONS_SINGLE` group selected at all times for "
"the options to be valid. One option of each group _must_ be added to "
"`OPTIONS_DEFAULT`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3898
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3897
msgid ""
"`OPTIONS` can be grouped as radio choices, where none or only one choice "
"from each group is allowed:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3903
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3902
#, no-wrap
msgid ""
"OPTIONS_RADIO=\t\tRG1\n"
"OPTIONS_RADIO_RG1=\tOPT7 OPT8\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3906
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3905
msgid ""
"`OPTIONS` can also be grouped as \"multiple-choice\" lists, where _at least "
"one_ option must be enabled:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3911
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3910
#, no-wrap
msgid ""
"OPTIONS_MULTI=\t\tMG1\n"
"OPTIONS_MULTI_MG1=\tOPT5 OPT6\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3914
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3913
msgid ""
"`OPTIONS` can also be grouped as \"multiple-choice\" lists, where none or "
"any option can be enabled:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3919
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3918
#, no-wrap
msgid ""
"OPTIONS_GROUP=\t\tGG1\n"
"OPTIONS_GROUP_GG1=\tOPT9 OPT10\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3922
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3921
msgid ""
"`OPTIONS` are unset by default, unless they are listed in `OPTIONS_DEFAULT`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3926
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3925
#, no-wrap
msgid "OPTIONS_DEFAULT=\tOPT1 OPT3 OPT6\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3932
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3931
msgid ""
"`OPTIONS` definitions must appear before the inclusion of [.filename]#bsd."
"port.options.mk#. `PORT_OPTIONS` values can only be tested after the "
"inclusion of [.filename]#bsd.port.options.mk#. Inclusion of [.filename]#bsd."
"port.pre.mk# can be used instead, too, and is still widely used in ports "
"written before the introduction of [.filename]#bsd.port.options.mk#. But be "
"aware that some variables will not work as expected after the inclusion of [."
"filename]#bsd.port.pre.mk#, typically some `USE_*` flags."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3934
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3933
#, no-wrap
msgid "Simple Use of `OPTIONS`"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3942
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3941
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tFOO BAR\n"
"OPTIONS_DEFAULT=FOO\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3945
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3944
#, no-wrap
msgid ""
"FOO_DESC=\tOption foo support\n"
"BAR_DESC=\tFeature bar support\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3949
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3948
#, no-wrap
msgid ""
"# Will add --with-foo / --without-foo\n"
"FOO_CONFIGURE_WITH=\tfoo\n"
"BAR_RUN_DEPENDS=\tbar:bar/bar\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3951
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4015
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3950
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4014
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3956
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3955
#, no-wrap
msgid "Check for Unset Port `OPTIONS`"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3965
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3964
#, no-wrap
msgid ""
".if ! ${PORT_OPTIONS:MEXAMPLES}\n"
"CONFIGURE_ARGS+=--without-examples\n"
".endif\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3969
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3968
msgid ""
"The form shown above is discouraged. The preferred method is using a "
"configure knob to really enable and disable the feature to match the option:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3974
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4011
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3973
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4010
#, no-wrap
msgid ""
"# Will add --with-examples / --without-examples\n"
"EXAMPLES_CONFIGURE_WITH=\texamples\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3979
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3978
#, no-wrap
msgid "Practical Use of `OPTIONS`"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3987
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3986
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\t\tEXAMPLES\n"
"OPTIONS_DEFAULT=\tPGSQL LDAP SSL\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3990
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3989
#, no-wrap
msgid ""
"OPTIONS_SINGLE=\t\tBACKEND\n"
"OPTIONS_SINGLE_BACKEND=\tMYSQL PGSQL BDB\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3993
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:3992
#, no-wrap
msgid ""
"OPTIONS_MULTI=\t\tAUTH\n"
"OPTIONS_MULTI_AUTH=\tLDAP PAM SSL\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4001
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4000
#, no-wrap
msgid ""
"EXAMPLES_DESC=\t\tInstall extra examples\n"
"MYSQL_DESC=\t\tUse MySQL as backend\n"
"PGSQL_DESC=\t\tUse PostgreSQL as backend\n"
"BDB_DESC=\t\tUse Berkeley DB as backend\n"
"LDAP_DESC=\t\tBuild with LDAP authentication support\n"
"PAM_DESC=\t\tBuild with PAM support\n"
"SSL_DESC=\t\tBuild with OpenSSL support\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4006
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4005
#, no-wrap
msgid ""
"# Will add USE_PGSQL=yes\n"
"PGSQL_USE=\tpgsql=yes\n"
"# Will add --enable-postgres / --disable-postgres\n"
"PGSQL_CONFIGURE_ENABLE=\tpostgres\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4008
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4007
#, no-wrap
msgid "ICU_LIB_DEPENDS=\tlibicuuc.so:devel/icu\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4013
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4012
#, no-wrap
msgid "# Check other OPTIONS\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4020
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4019
#, no-wrap
msgid "Default Options"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4023
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4022
msgid "These options are always on by default."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4025
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4024
msgid "`DOCS` - build and install documentation."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4026
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4025
msgid "`NLS` - Native Language Support."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4027
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4026
msgid "`EXAMPLES` - build and install examples."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4028
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4027
msgid "`IPV6` - IPv6 protocol support."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4033
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4032
msgid ""
"There is no need to add these to `OPTIONS_DEFAULT`. To have them active, "
"and show up in the options selection dialog, however, they must be added to "
"`OPTIONS_DEFINE`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4036
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4035
#, no-wrap
msgid "Feature Auto-Activation"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4040
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4039
msgid ""
"When using a GNU configure script, keep an eye on which optional features "
"are activated by auto-detection. Explicitly disable optional features that "
"are not needed by adding `--without-xxx` or `--disable-xxx` in "
"`CONFIGURE_ARGS`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4042
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4041
#, no-wrap
msgid "Wrong Handling of an Option"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4052
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4051
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MFOO}\n"
"LIB_DEPENDS+=\t\tlibfoo.so:devel/foo\n"
"CONFIGURE_ARGS+=\t--enable-foo\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4060
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4059
msgid ""
"In the example above, imagine a library libfoo is installed on the system. "
"The user does not want this application to use libfoo, so he toggled the "
"option off in the `make config` dialog. But the application's configure "
"script detects the library present in the system and includes its support in "
"the resulting executable. Now when the user decides to remove libfoo from "
"the system, the ports system does not protest (no dependency on libfoo was "
"recorded) but the application breaks."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4062
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4061
#, no-wrap
msgid "Correct Handling of an Option"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4071
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4070
#, no-wrap
msgid ""
"FOO_LIB_DEPENDS=\t\tlibfoo.so:devel/foo\n"
"# Will add --enable-foo / --disable-foo\n"
"FOO_CONFIGURE_ENABLE=\tfoo\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4079
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4078
msgid ""
"Under some circumstances, the shorthand conditional syntax can cause "
"problems with complex constructs. The errors are usually `Malformed "
"conditional`, an alternative syntax can be used."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4083
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4082
#, no-wrap
msgid ".if !empty(VARIABLE:MVALUE)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4086
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4085
msgid "as an alternative to"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4090
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4089
#, no-wrap
msgid ".if ${VARIABLE:MVALUE}\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4095
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4094
#, no-wrap
msgid "Options Helpers"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4099
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4098
msgid ""
"There are some macros to help simplify conditional values which differ based "
"on the options set. For easier access, a comprehensive list is provided:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4100
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4099
#, no-wrap
msgid "`PLIST_SUB`, `SUB_LIST`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4102
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4101
msgid ""
"For automatic `%%_OPT_%%` and `%%NO__OPT__%%` generation, see "
"<<options_sub>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4104
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4103
msgid "For more complex usage, see <<options-variables>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4105
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4104
#, no-wrap
msgid "`CONFIGURE_ARGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4107
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4106
msgid ""
"For `--enable-_x_` and `--disable-_x_`, see <<options-configure_enable>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4109
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4108
msgid "For `--with-_x_` and `--without-_x_`, see <<options-configure_with>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4111
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4110
msgid "For all other cases, see <<options-configure_on>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4112
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4111
#, no-wrap
msgid "`CMAKE_ARGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4114
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4113
msgid ""
"For arguments that are booleans (`on`, `off`, `true`, `false`, `0`, `1`) see "
"<<options-cmake_bool>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4116
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4115
msgid "For all other cases, see <<options-cmake_on>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4117
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4116
#, no-wrap
msgid "`MESON_ARGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4119
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4118
msgid "For arguments that take `true` or `false`, see <<options-meson_true>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4121
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4120
msgid "For arguments that take `yes` or `no`, use <<options-meson_yes>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4123
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4122
msgid ""
"For arguments that take `enabled` or `disabled`, see <<options-"
"meson_enabled>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4125
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4124
msgid "For all other cases, use <<options-meson_on>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4126
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4125
#, no-wrap
msgid "`QMAKE_ARGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4128
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4127
msgid "See <<options-qmake_on>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4131
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4130
msgid "See <<options-use>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4132
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4131
#, no-wrap
msgid "`*_DEPENDS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4134
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4133
msgid "See <<options-dependencies>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4135
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4134
#, no-wrap
msgid "`*` (Any variable)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4137
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4136
msgid "The most used variables have direct helpers, see <<options-variables>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4139
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4138
msgid "For any variable without a specific helper, see <<options-vars>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4140
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4139
#, no-wrap
msgid "Options dependencies"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4142
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4141
msgid "When an option need another option to work, see <<options-implies>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4143
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4142
#, no-wrap
msgid "Options conflicts"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4145
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4144
msgid ""
"When an option cannot work if another is also enabled, see <<options-"
"prevents>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4146
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4145
#, no-wrap
msgid "Build targets"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4148
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4147
msgid "When an option need some extra processing, see <<options-targets>>."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4150
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4149
#, no-wrap
msgid "`OPTIONS_SUB`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4153
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4152
msgid ""
"If `OPTIONS_SUB` is set to `yes` then each of the options added to "
"`OPTIONS_DEFINE` will be added to `PLIST_SUB` and `SUB_LIST`, for example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4158
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4157
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPTIONS_SUB=\tyes\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4161
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4200
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4236
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4273
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4308
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4344
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4380
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4414
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4444
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4476
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4508
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4537
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4689
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4762
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4839
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4929
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4160
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4199
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4235
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4272
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4307
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4343
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4379
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4413
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4443
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4475
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4507
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4536
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4688
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4761
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4838
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4928
msgid "is equivalent to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4165
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4204
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4240
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4312
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4348
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4384
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4418
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4448
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4480
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4512
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4541
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4766
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4843
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4920
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4933
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4164
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4203
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4239
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4311
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4347
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4383
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4417
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4447
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4479
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4511
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4540
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4765
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4842
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4919
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4932
#, no-wrap
msgid "OPTIONS_DEFINE=\tOPT1\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4167
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4206
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4242
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4279
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4314
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4350
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4386
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4420
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4450
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4482
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4514
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4543
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4575
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4632
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4697
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4768
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4845
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4935
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4166
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4205
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4241
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4278
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4313
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4349
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4385
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4419
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4449
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4481
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4513
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4542
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4574
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4631
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4696
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4767
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4844
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4934
#, no-wrap
msgid ".include <bsd.port.options.mk>\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4175
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4174
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"PLIST_SUB+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n"
"SUB_LIST+=\tOPT1=\"\" NO_OPT1=\"@comment \"\n"
".else\n"
"PLIST_SUB+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n"
"SUB_LIST+=\tOPT1=\"@comment \" NO_OPT1=\"\"\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4181
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4180
msgid ""
"The value of `OPTIONS_SUB` is ignored. Setting it to any value will add "
"`PLIST_SUB` and `SUB_LIST` entries for _all_ options."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4184
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4183
#, no-wrap
msgid "`OPT_USE` and `OPT_USE_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4190
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4189
msgid ""
"When option _OPT_ is selected, for each `_key=value_` pair in ``OPT_USE``, "
"_value_ is appended to the corresponding `USE_KEY`. If _value_ has spaces "
"in it, replace them with commas and they will be changed back to spaces "
"during processing. `OPT_USE_OFF` works the same way, but when `OPT` is "
"_not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4197
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4196
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_USES=\txorg\n"
"OPT1_USE=\tmysql=yes xorg=x11,xextproto,xext,xrandr\n"
"OPT1_USE_OFF=\topenssl=yes\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4214
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4213
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"USE_MYSQL=\tyes\n"
"USES+=\t\txorg\n"
"USE_XORG=\tx11 xextproto xext xrandr\n"
".else\n"
"USE_OPENSSL=\tyes\n"
".endif\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4217
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4216
#, no-wrap
msgid "`CONFIGURE_ARGS` Helpers"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4220
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4219
#, no-wrap
msgid "`OPT_CONFIGURE_ENABLE`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4227
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4226
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_CONFIGURE_ENABLE` "
"then `--enable-_entry_` is appended to `CONFIGURE_ARGS`. When option _OPT_ "
"is _not_ selected, `--disable-_entry_` is appended to `CONFIGURE_ARGS`. An "
"optional argument can be specified with an `=` symbol. This argument is "
"only appended to the `--enable-_entry_` configure option. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4233
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4232
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_CONFIGURE_ENABLE=\ttest1 test2\n"
"OPT2_CONFIGURE_ENABLE=\ttest2=exhaustive\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4248
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4247
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-test1 --enable-test2\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-test1 --disable-test2\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4254
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4253
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"CONFIGURE_ARGS+=\t--enable-test2=exhaustive\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-test2\n"
".endif\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4257
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4256
#, no-wrap
msgid "`OPT_CONFIGURE_WITH`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4264
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4263
msgid ""
"When option _OPT_ is selected, for each _entry_ in `_OPT_CONFIGURE_WITH` "
"then `--with-_entry_` is appended to `CONFIGURE_ARGS`. When option _OPT_ is "
"_not_ selected, `--without-_entry_` is appended to `CONFIGURE_ARGS`. An "
"optional argument can be specified with an `=` symbol. This argument is "
"only appended to the `--with-_entry_` configure option. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4270
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4269
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_CONFIGURE_WITH=\ttest1\n"
"OPT2_CONFIGURE_WITH=\ttest2=exhaustive\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4285
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4284
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--with-test1\n"
".else\n"
"CONFIGURE_ARGS+=\t--without-test1\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4291
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4290
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"CONFIGURE_ARGS+=\t--with-test2=exhaustive\n"
".else\n"
"CONFIGURE_ARGS+=\t--without-test2\n"
".endif\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4294
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4293
#, no-wrap
msgid "`OPT_CONFIGURE_ON` and `OPT_CONFIGURE_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4299
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4298
msgid ""
"When option _OPT_ is selected, the value of `OPT_CONFIGURE_ON`, if defined, "
"is appended to `CONFIGURE_ARGS`. `OPT_CONFIGURE_OFF` works the same way, "
"but when `OPT` is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4305
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4304
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CONFIGURE_ON=\t--add-test\n"
"OPT1_CONFIGURE_OFF=\t--no-test\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4320
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4319
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--add-test\n"
".else\n"
"CONFIGURE_ARGS+=\t--no-test\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4325
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4324
msgid ""
"Most of the time, the helpers in <<options-configure_enable>> and <<options-"
"configure_with>> provide a shorter and more comprehensive functionality."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4328
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4327
#, no-wrap
msgid "`CMAKE_ARGS` Helpers"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4331
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4330
#, no-wrap
msgid "`OPT_CMAKE_ON` and `OPT_CMAKE_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4335
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4334
msgid ""
"When option _OPT_ is selected, the value of `OPT_CMAKE_ON`, if defined, is "
"appended to `CMAKE_ARGS`. `OPT_CMAKE_OFF` works the same way, but when `OPT` "
"is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4341
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4340
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CMAKE_ON=\t-DTEST:BOOL=true -DDEBUG:BOOL=true\n"
"OPT1_CMAKE_OFF=\t-DOPTIMIZE:BOOL=true\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4356
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4355
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=true -DDEBUG:BOOL=true\n"
".else\n"
"CMAKE_ARGS+=\t-DOPTIMIZE:BOOL=true\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4362
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4361
msgid ""
"See <<options-cmake_bool>> for a shorter helper when the value is boolean."
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4365
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4364
#, no-wrap
msgid "`OPT_CMAKE_BOOL` and `OPT_CMAKE_BOOL_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4371
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4370
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_CMAKE_BOOL` then `-"
"D_entry_:BOOL=true` is appended to `CMAKE_ARGS`. When option _OPT_ is _not_ "
"selected, `-D_entry_:BOOL=false` is appended to `CONFIGURE_ARGS`. "
"`OPT_CMAKE_BOOL_OFF` is the opposite, `-D_entry_:BOOL=false` is appended to "
"`CMAKE_ARGS` when the option is selected, and `-D_entry_:BOOL=true` when the "
"option is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4377
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4376
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_CMAKE_BOOL=\tTEST DEBUG\n"
"OPT1_CMAKE_BOOL_OFF=\tOPTIMIZE\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4394
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4393
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=true -DDEBUG:BOOL=true \\\n"
"\t\t-DOPTIMIZE:BOOL=false\n"
".else\n"
"CMAKE_ARGS+=\t-DTEST:BOOL=false -DDEBUG:BOOL=false \\\n"
"\t\t-DOPTIMIZE:BOOL=true\n"
".endif\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4397
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4396
#, no-wrap
msgid "`MESON_ARGS` Helpers"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4400
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4399
#, no-wrap
msgid "`OPT_MESON_ON` and `OPT_MESON_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4405
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4404
msgid ""
"When option _OPT_ is selected, the value of `OPT_MESON_ON`, if defined, is "
"appended to `MESON_ARGS`. `OPT_MESON_OFF` works the same way, but when "
"`OPT` is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4411
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4410
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_ON=\t-Dopt=1\n"
"OPT1_MESON_OFF=\t-Dopt=2\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4426
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4425
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dopt=1\n"
".else\n"
"MESON_ARGS+=\t-Dopt=2\n"
".endif\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4429
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4428
#, no-wrap
msgid "`OPT_MESON_TRUE` and `OPT_MESON_FALSE`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4435
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4434
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_TRUE` then `-"
"D_entry_=true` is appended to `MESON_ARGS`. When option _OPT_ is _not_ "
"selected, `-D_entry_=false` is appended to `MESON_ARGS`. `OPT_MESON_FALSE` "
"is the opposite, `-D_entry_=false` is appended to `MESON_ARGS` when the "
"option is selected, and `-D_entry_=true` when the option is _not_ selected. "
"For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4441
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4440
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_TRUE=\ttest debug\n"
"OPT1_MESON_FALSE=\toptimize\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4458
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4457
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=true -Ddebug=true \\\n"
"\t\t-Doptimize=false\n"
".else\n"
"MESON_ARGS+=\t-Dtest=false -Ddebug=false \\\n"
"\t\t-Doptimize=true\n"
".endif\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4461
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4460
#, no-wrap
msgid "`OPT_MESON_YES` and `OPT_MESON_NO`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4467
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4466
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_YES` then `-"
"D_entry_=yes` is appended to `MESON_ARGS`. When option _OPT_ is _not_ "
"selected, `-D_entry_=no` is appended to `MESON_ARGS`. `OPT_MESON_NO` is the "
"opposite, `-D_entry_=no` is appended to `MESON_ARGS` when the option is "
"selected, and `-D_entry_=yes` when the option is _not_ selected. For "
"example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4473
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4472
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_YES=\ttest debug\n"
"OPT1_MESON_NO=\toptimize\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4490
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4489
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=yes -Ddebug=yes \\\n"
"\t\t-Doptimize=no\n"
".else\n"
"MESON_ARGS+=\t-Dtest=no -Ddebug=no \\\n"
"\t\t-Doptimize=yes\n"
".endif\n"
msgstr ""
#. type: Title =====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4493
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4492
#, no-wrap
msgid "`OPT_MESON_ENABLED` and `OPT_MESON_DISABLED`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4499
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4498
msgid ""
"When option _OPT_ is selected, for each _entry_ in `OPT_MESON_ENABLED` then "
"`-D_entry_=enabled` is appended to `MESON_ARGS`. When option _OPT_ is _not_ "
"selected, `-D_entry_=disabled` is appended to `MESON_ARGS`. "
"`OPT_MESON_DISABLED` is the opposite, `-D_entry_=disabled` is appended to "
"`MESON_ARGS` when the option is selected, and `-D_entry_=enabled` when the "
"option is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4505
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4504
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_MESON_ENABLED=\ttest\n"
"OPT1_MESON_DISABLED=\tdebug\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4520
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4519
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"MESON_ARGS+=\t-Dtest=enabled -Ddebug=disabled\n"
".else\n"
"MESON_ARGS+=\t-Dtest=disabled -Ddebug=enabled\n"
".endif\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4523
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4522
#, no-wrap
msgid "`OPT_QMAKE_ON` and `OPT_QMAKE_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4528
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4527
msgid ""
"When option _OPT_ is selected, the value of `OPT_QMAKE_ON`, if defined, is "
"appended to `QMAKE_ARGS`. `OPT_QMAKE_OFF` works the same way, but when "
"`OPT` is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4534
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4533
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_QMAKE_ON=\t-DTEST:BOOL=true\n"
"OPT1_QMAKE_OFF=\t-DPRODUCTION:BOOL=true\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4549
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4548
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"QMAKE_ARGS+=\t-DTEST:BOOL=true\n"
".else\n"
"QMAKE_ARGS+=\t-DPRODUCTION:BOOL=true\n"
".endif\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4552
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4551
#, no-wrap
msgid "`OPT_IMPLIES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4555
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4554
msgid "Provides a way to add dependencies between options."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4558
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4557
msgid ""
"When _OPT_ is selected, all the options listed in this variable will be "
"selected too. Using the <<options-configure_enable,`OPT_CONFIGURE_ENABLE`>> "
"described earlier to illustrate:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4563
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4562
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_IMPLIES=\tOPT2\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4566
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4565
#, no-wrap
msgid ""
"OPT1_CONFIGURE_ENABLE=\topt1\n"
"OPT2_CONFIGURE_ENABLE=\topt2\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4569
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4568
msgid "Is equivalent to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4581
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4580
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-opt1\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-opt1\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4587
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4586
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2} || ${PORT_OPTIONS:MOPT1}\n"
"CONFIGURE_ARGS+=\t--enable-opt2\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-opt2\n"
".endif\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4590
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4589
#, no-wrap
msgid "Simple Use of `OPT_IMPLIES`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4595
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4594
msgid ""
"This port has a `X11` option, and a `GNOME` option that needs the `X11` "
"option to be selected to build."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4600
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4599
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tX11 GNOME\n"
"OPTIONS_DEFAULT=\tX11\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4605
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4604
#, no-wrap
msgid ""
"X11_USES=\txorg\n"
"X11_USE=\txorg=xi,xextproto\n"
"GNOME_USE=\tgnome=gtk30\n"
"GNOME_IMPLIES=\tX11\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4610
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4609
#, no-wrap
msgid "`OPT_PREVENTS` and `OPT_PREVENTS_MSG`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4613
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4612
msgid "Provides a way to add conflicts between options."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4617
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4616
msgid ""
"When _OPT_ is selected, all the options listed in `OPT_PREVENTS` must be un-"
"selected. If `OPT_PREVENTS_MSG` is set and a conflict is triggered, its "
"content will be shown explaining why they conflict. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4623
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4622
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2\n"
"OPT1_PREVENTS=\tOPT2\n"
"OPT1_PREVENTS_MSG=\tOPT1 and OPT2 enable conflicting options\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4626
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4625
msgid "Is roughly equivalent to:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4636
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4635
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2} && ${PORT_OPTIONS:MOPT1}\n"
"BROKEN=\tOption OPT1 conflicts with OPT2 (select only one)\n"
".endif\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4639
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4638
msgid ""
"The only difference is that the first one will write an error after running "
"`make config`, suggesting changing the selected options."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4641
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4640
#, no-wrap
msgid "Simple Use of `OPT_PREVENTS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4647
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4646
msgid ""
"This port has `X509` and `SCTP` options. Both options add patches, but the "
"patches conflict with each other, so they cannot be selected at the same "
"time."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4651
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4650
#, no-wrap
msgid "OPTIONS_DEFINE=\tX509 SCTP\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4654
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4653
#, no-wrap
msgid ""
"SCTP_PATCHFILES=\t${PORTNAME}-6.8p1-sctp-2573.patch.gz:-p1\n"
"SCTP_CONFIGURE_WITH=\tsctp\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4659
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4658
#, no-wrap
msgid ""
"X509_PATCH_SITES=\thttp://www.roumenpetrov.info/openssh/x509/:x509\n"
"X509_PATCHFILES=\t${PORTNAME}-7.0p1+x509-8.5.diff.gz:-p1:x509\n"
"X509_PREVENTS=\t\tSCTP\n"
"X509_PREVENTS_MSG=\tX509 and SCTP patches conflict\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4664
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4663
#, no-wrap
msgid "`OPT_VARS` and `OPT_VARS_OFF`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4667
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4666
msgid "Provides a generic way to set and append to variables."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4671
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4670
msgid ""
"Before using `OPT_VARS` and `OPT_VARS_OFF`, see if there is already a more "
"specific helper available in <<options-variables>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4676
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4675
msgid ""
"When option _OPT_ is selected, and `OPT_VARS` defined, `_key_=_value_` and "
"`_key_+=_value_` pairs are evaluated from `OPT_VARS`. An `=` cause the "
"existing value of `KEY` to be overwritten, an `+=` appends to the value. "
"`OPT_VARS_OFF` works the same way, but when `OPT` is _not_ selected."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4684
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4683
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1 OPT2 OPT3\n"
"OPT1_VARS=\talso_build+=bin1\n"
"OPT2_VARS=\talso_build+=bin2\n"
"OPT3_VARS=\tbin3_build=yes\n"
"OPT3_VARS_OFF=\tbin3_build=no\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4686
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4695
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4685
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4694
#, no-wrap
msgid "MAKE_ARGS=\tALSO_BUILD=\"${ALSO_BUILD}\" BIN3_BUILD=\"${BIN3_BUILD}\"\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4701
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4700
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"ALSO_BUILD+=\tbin1\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4705
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4704
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"ALSO_BUILD+=\tbin2\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4711
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4710
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT2}\n"
"BIN3_BUILD=\tyes\n"
".else\n"
"BIN3_BUILD=\tno\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4716
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4715
msgid "Values containing whitespace must be enclosed in quotes:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4720
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4719
#, no-wrap
msgid "OPT_VARS=\tfoo=\"bar baz\"\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4726
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4725
msgid ""
"This is due to the way man:make[1] variable expansion deals with "
"whitespace. When `OPT_VARS= foo=bar baz` is expanded, the variable ends up "
"containing two strings, `foo=bar` and `baz`. But the submitter probably "
"intended there to be only one string, `foo=bar baz`. Quoting the value "
"prevents whitespace from being used as a delimiter."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4729
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4728
msgid ""
"Also, _do not_ add extra spaces after the `_var_=` sign and before the "
"value, it would also be split into two strings. _This will not work_:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4733
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4732
#, no-wrap
msgid "OPT_VARS=\tfoo=\tbar\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4738
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4737
#, no-wrap
msgid "Dependencies, `OPT_DEPTYPE` and `OPT_DEPTYPE_OFF`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4741
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4740
msgid "For any of these dependency types:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4743
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4742
msgid "`PKG_DEPENDS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4753
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4752
msgid ""
"When option _OPT_ is selected, the value of `OPT_DEPTYPE`, if defined, is "
"appended to `DEPTYPE`. `OPT_DEPTYPE_OFF` works the same, but when `OPT` is "
"_not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4759
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4758
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_LIB_DEPENDS=\tliba.so:devel/a\n"
"OPT1_LIB_DEPENDS_OFF=\tlibb.so:devel/b\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4774
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4773
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"LIB_DEPENDS+=\tliba.so:devel/a\n"
".else\n"
"LIB_DEPENDS+=\tlibb.so:devel/b\n"
".endif\n"
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4777
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4776
#, no-wrap
msgid "Generic Variables Replacement, `OPT_VARIABLE` and `OPT_VARIABLE_OFF`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4780
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4779
msgid "For any of these variables:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4782
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4781
msgid "`ALL_TARGET`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4783
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4782
msgid "`BINARY_ALIAS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4784
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4783
msgid "`BROKEN`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4786
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4785
msgid "`CFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4787
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4786
msgid "`CONFIGURE_ENV`"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4788
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5027
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4787
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5026
#, no-wrap
msgid "`CONFLICTS`"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4789
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5022
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4788
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5021
#, no-wrap
msgid "`CONFLICTS_BUILD`"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4790
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5017
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4789
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5016
#, no-wrap
msgid "`CONFLICTS_INSTALL`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4791
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4790
msgid "`CPPFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4792
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4791
msgid "`CXXFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4793
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4792
msgid "`DESKTOP_ENTRIES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4796
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4795
msgid "`EXTRA_PATCHES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4808
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4807
msgid "`IGNORE`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4809
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4808
msgid "`INFO`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4810
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4809
msgid "`INSTALL_TARGET`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4811
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4810
msgid "`LDFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4812
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4811
msgid "`LIBS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4813
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4812
msgid "`MAKE_ARGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4814
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4813
msgid "`MAKE_ENV`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4817
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4816
msgid "`PATCH_SITES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4817
msgid "`PLIST_DIRS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4819
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4818
msgid "`PLIST_FILES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4820
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4819
msgid "`PLIST_SUB`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4821
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4820
msgid "`PORTDOCS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4822
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4821
msgid "`PORTEXAMPLES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4822
msgid "`SUB_FILES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4824
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4823
msgid "`SUB_LIST`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4825
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4824
msgid "`TEST_TARGET`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4830
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4829
msgid ""
"When option _OPT_ is selected, the value of `OPT_ABOVEVARIABLE`, if defined, "
"is appended to `_ABOVEVARIABLE_`. `OPT_ABOVEVARIABLE_OFF` works the same "
"way, but when `OPT` is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4836
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4835
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tOPT1\n"
"OPT1_USES=\tgmake\n"
"OPT1_CFLAGS_OFF=\t-DTEST\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4851
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4850
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MOPT1}\n"
"USES+=\t\tgmake\n"
".else\n"
"CFLAGS+=\t-DTEST\n"
".endif\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4858
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4857
msgid ""
"Some variables are not in this list, in particular `PKGNAMEPREFIX` and "
"`PKGNAMESUFFIX`. This is intentional. A port _must not_ change its name "
"when its option set changes."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4863
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4862
msgid ""
"Some of these variables, at least `ALL_TARGET`, `DISTFILES` and "
"`INSTALL_TARGET`, have their default values set _after_ the options are "
"processed."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4865
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4864
msgid "With these lines in the [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4869
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4868
#, no-wrap
msgid "ALL_TARGET=\tall\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4871
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4880
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4870
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4879
#, no-wrap
msgid "DOCS_ALL_TARGET=\tdoc\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4874
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4873
msgid ""
"If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of "
"`all doc`; if the option is disabled, it would have a value of `all`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4876
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4875
msgid "With only the options helper line in the [.filename]#Makefile#:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4883
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4882
msgid ""
"If the `DOCS` option is enabled, `ALL_TARGET` will have a final value of "
"`doc`; if the option is disabled, it would have a value of `all`."
msgstr ""
#. type: Title ====
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4886
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4885
#, no-wrap
msgid "Additional Build Targets, `_target_-_OPT_-on` and `_target_-_OPT_-off`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4889
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4888
msgid ""
"These [.filename]#Makefile# targets can accept optional extra build targets:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4891
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4890
msgid "`pre-fetch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4891
msgid "`do-fetch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4892
msgid "`post-fetch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4893
msgid "`pre-extract`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4894
msgid "`do-extract`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4895
msgid "`post-extract`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4896
msgid "`pre-patch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4897
msgid "`do-patch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4898
msgid "`post-patch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4899
msgid "`pre-configure`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4900
msgid "`do-configure`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4901
msgid "`post-configure`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4902
msgid "`pre-build`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4904
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4903
msgid "`do-build`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4905
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4904
msgid "`post-build`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4906
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4905
msgid "`pre-install`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4906
msgid "`do-install`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4908
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4907
msgid "`post-install`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4909
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4908
msgid "`post-stage`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4910
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4909
msgid "`pre-package`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4911
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4910
msgid "`do-package`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4912
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4911
msgid "`post-package`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4916
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4915
msgid ""
"When option _OPT_ is selected, the target `_TARGET_-_OPT_-on`, if defined, "
"is executed after `_TARGET_`. `_TARGET_-_OPT_-off` works the same way, but "
"when `OPT` is _not_ selected. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4923
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4922
#, no-wrap
msgid ""
"post-patch-OPT1-on:\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4926
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4925
#, no-wrap
msgid ""
"post-patch-OPT1-off:\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4942
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4941
#, no-wrap
msgid ""
"post-patch:\n"
".if ${PORT_OPTIONS:MOPT1}\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${EXAMPLESDIR}/|' ${WRKSRC}/Makefile\n"
".else\n"
"\t@${REINPLACE_CMD} -e '/opt1/s|/usr/bin/|${PREFIX}/bin/|' ${WRKSRC}/Makefile\n"
".endif\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4945
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4944
#, no-wrap
msgid "Specifying the Working Directory"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4950
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4949
msgid ""
"Each port is extracted into a working directory, which must be writable. "
"The ports system defaults to having `DISTFILES` unpack in to a directory "
"called `${DISTNAME}`. In other words, if the [.filename]#Makefile# has:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4955
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4954
#, no-wrap
msgid ""
"PORTNAME=\tfoo\n"
"DISTVERSION=\t1.0\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4958
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4957
msgid ""
"then the port's distribution files contain a top-level directory, [."
"filename]#foo-1.0#, and the rest of the files are located under that "
"directory."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4960
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4959
msgid "A number of variables can be overridden if that is not the case."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4962
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4961
#, no-wrap
msgid "`WRKSRC`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4966
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4965
msgid ""
"The variable lists the name of the directory that is created when the "
"application's distfiles are extracted. If our previous example extracted "
"into a directory called [.filename]#foo# (and not [.filename]#foo-1.0#) "
"write:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4970
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4969
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/foo\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4973
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4972
msgid "or possibly"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4977
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4976
#, no-wrap
msgid "WRKSRC=\t${WRKDIR}/${PORTNAME}\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4980
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4979
#, no-wrap
msgid "`WRKSRC_SUBDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4983
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4982
msgid ""
"If the source files needed for the port are in a subdirectory of the "
"extracted distribution file, set `WRKSRC_SUBDIR` to that directory."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4987
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4986
#, no-wrap
msgid "WRKSRC_SUBDIR=\tsrc\n"
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4990
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4989
#, no-wrap
msgid "`NO_WRKSUBDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4993
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4992
msgid ""
"If the port does not extract in to a subdirectory at all, then set "
"`NO_WRKSUBDIR` to indicate that."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4997
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:4996
#, no-wrap
msgid "NO_WRKSUBDIR=\tyes\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5002
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5001
msgid ""
"Because `WRKDIR` is the only directory that is supposed to be writable "
"during the build, and is used to store many files recording the status of "
"the build, the port's extraction will be forced into a subdirectory."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5005
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5004
#, no-wrap
msgid "Conflict Handling"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5008
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5007
msgid ""
"There are three different variables to register a conflict between packages "
"and ports: `CONFLICTS`, `CONFLICTS_INSTALL` and `CONFLICTS_BUILD`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5012
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5011
msgid ""
"The conflict variables automatically set the variable `IGNORE`, which is "
"more fully documented in crossref:porting-dads[dads-noinstall,Marking a Port "
"Not Installable with `BROKEN`, `FORBIDDEN`, or `IGNORE`]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5015
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5014
msgid ""
"When removing one of several conflicting ports, it is advisable to retain "
"`CONFLICTS` in those other ports for a few months to cater for users who "
"only update once in a while."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5020
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5019
msgid ""
"If the package cannot coexist with other packages (because of file "
"conflicts, runtime incompatibilities, etc.). `CONFLICTS_INSTALL` check is "
"done after the build stage and prior to the install stage."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5025
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5024
msgid ""
"If the port cannot be built when other specific ports are already "
"installed. Build conflicts are not recorded in the resulting package."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5030
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5029
msgid ""
"If the port cannot be built if a certain port is already installed and the "
"resulting package cannot coexist with the other package. `CONFLICTS` check "
"is done prior to the build stage and prior to the install stage."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5034
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5033
msgid ""
"Each space-separated item in the `CONFLICTS*` variable values is matched "
"against packages except the one being built, using shell globbing rules. "
"This allows listing all flavors of a port in a conflict list instead of "
"having to take pains to exclude the flavor being built from that list. For "
"example, if git-lite is installed, `CONFLICTS_INSTALL=git git-lite` would "
"allow to perform:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5037
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5036
#, no-wrap
msgid "% make -C devel/git FLAVOR=lite all deinstall install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5040
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5039
msgid ""
"But the following command would report a conflict, since the package base "
"name installed is `git-lite`, while `git` would be built, but cannot be "
"installed in addition to `git-lite`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5043
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5042
#, no-wrap
msgid "% make -C devel/git FLAVOR=default all deinstall install\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5046
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5045
msgid ""
"Without that feature, the Makefile would need one "
"`_flavor__CONFLICTS_INSTALL` for each flavor, listing every other flavor."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5049
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5048
msgid ""
"The most common content of one of these variable is the package base of "
"another port. The package base is the package name without the appended "
"version, it can be obtained by running `make -V PKGBASE`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5051
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5050
#, no-wrap
msgid "Basic usage of `CONFLICTS*`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5057
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5056
msgid ""
"package:dns/bind99[] cannot be installed if package:dns/bind910[] is present "
"because they install same files. First gather the package base to use:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5064
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5063
#, no-wrap
msgid ""
"% make -C dns/bind99 -V PKGBASE\n"
"bind99\n"
"% make -C dns/bind910 -V PKGBASE\n"
"bind910\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5067
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5066
msgid "Then add to the [.filename]#Makefile# of package:dns/bind99[]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5071
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5070
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind910\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5074
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5073
msgid "And add to the [.filename]#Makefile# of package:dns/bind910[]:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5078
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5077
#, no-wrap
msgid "CONFLICTS_INSTALL=\tbind99\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5085
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5084
msgid ""
"Sometimes, only certain versions of another port are incompatible. When "
"this is the case, use the full package name including the version. If "
"necessary, use shell globs like `*` and `?` so that all necessary versions "
"are matched."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5087
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5086
#, no-wrap
msgid "Using `CONFLICTS*` With Globs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5092
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5091
msgid ""
"From versions from 2.0 and up-to 2.4.1_2, package:deskutils/gnotime[] used "
"to install a bundled version of package:databases/qof[]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5094
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5093
msgid ""
"To reflect this past, the [.filename]#Makefile# of package:databases/qof[] "
"contains:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5100
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5099
#, no-wrap
msgid ""
"CONFLICTS_INSTALL=\tgnotime-2.[0-3]* \\\n"
"\t\t\tgnotime-2.4.0* gnotime-2.4.1 \\\n"
"\t\t\tgnotime-2.4.1_[12]\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5103
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5102
msgid ""
"The first entry match versions `2.0` through `2.3`, the second all the "
"revisions of `2.4.0`, the third the exact `2.4.1` version, and the last the "
"first and second revisions of the `2.4.1` version."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5105
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5104
msgid ""
"package:deskutils/gnotime[] does not have any conflicts line because its "
"current version does not conflict with anything else."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5109
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5108
msgid ""
"The variable `DISABLE_CONFLICTS` may be temporarily set when making targets "
"that are not affected by conflicts. The variable is not to be set in port "
"Makefiles."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5113
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5112
#, no-wrap
msgid "% make -DDISABLE_CONFLICTS patch\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5116
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5115
#, no-wrap
msgid "Installing Files"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5123
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5122
msgid ""
"The `install` phase is very important to the end user because it adds files "
"to their system. All the additional commands run in the port [."
"filename]#Makefile#'s `*-install` targets should be echoed to the screen. "
"_Do not_ silence these commands with `@` or `.SILENT`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5126
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5125
#, no-wrap
msgid "`INSTALL_*` Macros"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5133
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5132
msgid ""
"Use the macros provided in [.filename]#bsd.port.mk# to ensure correct modes "
"of files in the port's `*-install` targets. Set ownership directly in [."
"filename]#pkg-plist# with the corresponding entries, such as `@(_owner_,"
"_group_,)`, `@owner _owner_`, and `@group _group_`. These operators work "
"until overridden, or until the end of [.filename]#pkg-plist#, so remember to "
"reset them after they are no longer needed. The default ownership is `root:"
"wheel`. See crossref:plist[plist-keywords-base,Base Keywords] for more "
"information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5135
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5134
msgid "`INSTALL_PROGRAM` is a command to install binary executables."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5136
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5135
msgid "`INSTALL_SCRIPT` is a command to install executable scripts."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5137
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5136
msgid ""
"`INSTALL_LIB` is a command to install shared libraries (but not static "
"libraries)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5138
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5137
msgid ""
"`INSTALL_KLD` is a command to install kernel loadable modules. Some "
"architectures do not like having the modules stripped, so use this command "
"instead of `INSTALL_PROGRAM`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5139
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5138
msgid ""
"`INSTALL_DATA` is a command to install sharable data, including static "
"libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5140
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5139
msgid ""
"`INSTALL_MAN` is a command to install manpages and other documentation (it "
"does not compress anything)."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5142
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5141
msgid ""
"These variables are set to the man:install[1] command with the appropriate "
"flags for each situation."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5146
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5145
msgid ""
"Do not use `INSTALL_LIB` to install static libraries, because stripping them "
"renders them useless. Use `INSTALL_DATA` instead."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5149
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5148
#, no-wrap
msgid "Stripping Binaries and Shared Libraries"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5154
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5153
msgid ""
"Installed binaries should be stripped. Do not strip binaries manually unless "
"absolutely required. The `INSTALL_PROGRAM` macro installs and strips a "
"binary at the same time. The `INSTALL_LIB` macro does the same thing to "
"shared libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5157
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5156
msgid ""
"When a file must be stripped, but neither `INSTALL_PROGRAM` nor "
"`INSTALL_LIB` macros are desirable, `${STRIP_CMD}` strips the program or "
"shared library. This is typically done within the `post-install` target. "
"For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5162
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5161
#, no-wrap
msgid ""
"post-install:\n"
"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/xdl\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5165
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5164
msgid "When multiple files need to be stripped:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5172
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5171
#, no-wrap
msgid ""
"post-install:\n"
".for l in geometry media body track world\n"
"\t${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}-${l}.so.0\n"
".endfor\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5177
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5176
msgid ""
"Use man:file[1] on a file to determine if it has been stripped. Binaries "
"are reported by man:file[1] as `stripped`, or `not stripped`. Additionally, "
"man:strip[1] will detect programs that have already been stripped and exit "
"cleanly."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5181
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5180
msgid "When `WITH_DEBUG` is defined, elf files _must not_ be stripped."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5183
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5182
msgid ""
"The variables (`STRIP_CMD`, `INSTALL_PROGRAM`, `INSTALL_LIB`, ...) and "
"crossref:uses[uses,`USES`] provided by the framework handle this "
"automatically."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5185
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5184
msgid ""
"Some software, add `-s` to their `LDFLAGS`, in this case, either remove `-s` "
"if `WITH_DEBUG` is set, or remove it unconditionally and use `STRIP_CMD` in "
"`post-install`."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5188
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5187
#, no-wrap
msgid "Installing a Whole Tree of Files"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5193
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5192
msgid ""
"Sometimes, a large number of files must be installed while preserving their "
"hierarchical organization. For example, copying over a whole directory tree "
"from `WRKSRC` to a target directory under `PREFIX`. Note that `PREFIX`, "
"`EXAMPLESDIR`, `DATADIR`, and other path variables must always be prepended "
"with `STAGEDIR` to respect staging (see crossref:special[staging,Staging])."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5198
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5197
msgid ""
"Two macros exist for this situation. The advantage of using these macros "
"instead of `cp` is that they guarantee proper file ownership and permissions "
"on target files. The first macro, `COPYTREE_BIN`, will set all the "
"installed files to be executable, thus being suitable for installing into [."
"filename]#PREFIX/bin#. The second macro, `COPYTREE_SHARE`, does not set "
"executable permissions on files, and is therefore suitable for installing "
"files under [.filename]#PREFIX/share# target."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5204
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5203
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n"
"\t(cd ${WRKSRC}/examples && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR})\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5207
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5206
msgid ""
"This example will install the contents of the [.filename]#examples# "
"directory in the vendor distfile to the proper examples location of the port."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5213
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5212
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${DATADIR}/summer\n"
"\t(cd ${WRKSRC}/temperatures && ${COPYTREE_SHARE} \"June July August\" ${STAGEDIR}${DATADIR}/summer)\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5216
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5215
msgid ""
"And this example will install the data of summer months to the [."
"filename]#summer# subdirectory of a [.filename]#DATADIR#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5219
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5218
msgid ""
"Additional `find` arguments can be passed via the third argument to "
"`COPYTREE_*` macros. For example, to install all files from the first "
"example except Makefiles, one can use these commands."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5226
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5225
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${EXAMPLESDIR}\n"
"\t(cd ${WRKSRC}/examples && \\\n"
"\t${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR} \"! -name Makefile\")\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5231
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5230
msgid ""
"These macros do not add the installed files to [.filename]#pkg-plist#. They "
"must be added manually. For optional documentation (`PORTDOCS`, see "
"<<install-documentation>>) and examples (`PORTEXAMPLES`), the `%%PORTDOCS%%` "
"or `%%PORTEXAMPLES%%` prefixes must be prepended in [.filename]#pkg-plist#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5233
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5232
#, no-wrap
msgid "Install Additional Documentation"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5237
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5236
msgid ""
"If the software has some documentation other than the standard man and info "
"pages that is useful for the user, install it under `DOCSDIR`. This can be "
"done, like the previous item, in the `post-install` target."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5242
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5241
msgid ""
"Create a new directory for the port. The directory name is `DOCSDIR`. This "
"usually equals `PORTNAME`. However, if the user might want different "
"versions of the port to be installed at the same time, the whole `PKGNAME` "
"can be used."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5245
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5244
msgid ""
"Since only the files listed in [.filename]#pkg-plist# are installed, it is "
"safe to always install documentation to `STAGEDIR` (see crossref:"
"special[staging,Staging]). Hence `.if` blocks are only needed when the "
"installed files are large enough to cause significant I/O overhead."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5251
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5250
#, no-wrap
msgid ""
"post-install:\n"
"\t${MKDIR} ${STAGEDIR}${DOCSDIR}\n"
-"\t${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}\n"
+"\t${INSTALL_DATA} ${WRKSRC}/docs/xvdocs.ps ${STAGEDIR}${DOCSDIR}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5255
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5254
msgid ""
"On the other hand, if there is a DOCS option in the port, install the "
"documentation in a `post-install-DOCS-on` target. These targets are "
"described in <<options-targets>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5257
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5256
msgid ""
"Here are some handy variables and how they are expanded by default when used "
"in the [.filename]#Makefile#:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5259
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5258
msgid "`DATADIR` gets expanded to [.filename]#PREFIX/share/PORTNAME#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5260
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5259
msgid "`DATADIR_REL` gets expanded to [.filename]#share/PORTNAME#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5261
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5260
msgid "`DOCSDIR` gets expanded to [.filename]#PREFIX/share/doc/PORTNAME#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5262
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5261
msgid "`DOCSDIR_REL` gets expanded to [.filename]#share/doc/PORTNAME#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5263
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5262
msgid ""
"`EXAMPLESDIR` gets expanded to [.filename]#PREFIX/share/examples/PORTNAME#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5264
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5263
msgid ""
"`EXAMPLESDIR_REL` gets expanded to [.filename]#share/examples/PORTNAME#."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5270
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5269
msgid ""
"The `DOCS` option only controls additional documentation installed in "
"`DOCSDIR`. It does not apply to standard man pages and info pages. Things "
"installed in `EXAMPLESDIR` are controlled by the `EXAMPLES` option."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5276
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5275
msgid ""
"These variables are exported to `PLIST_SUB`. Their values will appear there "
"as pathnames relative to [.filename]#PREFIX# if possible. That is, [."
"filename]#share/doc/PORTNAME# will be substituted for `%%DOCSDIR%%` in the "
"packing list by default, and so on. (See more on [.filename]#pkg-plist# "
"substitution crossref:plist[plist-sub,here].)"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5278
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5277
msgid ""
"All conditionally installed documentation files and directories are included "
"in [.filename]#pkg-plist# with the `%%PORTDOCS%%` prefix, for example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5283
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5282
#, no-wrap
msgid ""
"%%PORTDOCS%%%%DOCSDIR%%/AUTHORS\n"
"%%PORTDOCS%%%%DOCSDIR%%/CONTACT\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5292
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5291
msgid ""
"As an alternative to enumerating the documentation files in [.filename]#pkg-"
"plist#, a port can set the variable `PORTDOCS` to a list of file names and "
"shell glob patterns to add to the final packing list. The names will be "
"relative to `DOCSDIR`. Therefore, a port that utilizes `PORTDOCS`, and uses "
"a non-default location for its documentation, must set `DOCSDIR` "
"accordingly. If a directory is listed in `PORTDOCS` or matched by a glob "
"pattern from this variable, the entire subtree of contained files and "
"directories will be registered in the final packing list. If the `DOCS` "
"option has been unset then files and directories listed in `PORTDOCS` would "
"not be installed or added to port packing list. Installing the "
"documentation at `PORTDOCS` as shown above remains up to the port itself. A "
"typical example of utilizing `PORTDOCS`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5296
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5295
#, no-wrap
msgid "PORTDOCS=\tREADME.* ChangeLog docs/*\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5301
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5300
msgid ""
"The equivalents of `PORTDOCS` for files installed under `DATADIR` and "
"`EXAMPLESDIR` are `PORTDATA` and `PORTEXAMPLES`, respectively."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5305
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5304
msgid ""
"The contents of [.filename]#pkg-message# are displayed upon installation. "
"See crossref:pkg-files[porting-message,the section on using [.filename]#pkg-"
"message#] for details. [.filename]#pkg-message# does not need to be added "
"to [.filename]#pkg-plist#."
msgstr ""
#. type: Title ===
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5308
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5307
#, no-wrap
msgid "Subdirectories Under `PREFIX`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5317
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5316
msgid ""
"Try to let the port put things in the right subdirectories of `PREFIX`. "
"Some ports lump everything and put it in the subdirectory with the port's "
"name, which is incorrect. Also, many ports put everything except binaries, "
"header files and manual pages in a subdirectory of [.filename]#lib#, which "
"does not work well with the BSD paradigm. Many of the files must be moved "
"to one of these directories: [.filename]#etc# (setup/configuration files), [."
"filename]#libexec# (executables started internally), [.filename]#sbin# "
"(executables for superusers/managers), [.filename]#info# (documentation for "
"info browser) or [.filename]#share# (architecture independent files). See "
"man:hier[7] for details; the rules governing [.filename]#/usr# pretty much "
"apply to [.filename]#/usr/local# too. The exception are ports dealing with "
"USENET \"news\". They may use [.filename]#PREFIX/news# as a destination for "
"their files."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5319
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5318
#, no-wrap
msgid "Use `BINARY_ALIAS` to Rename Commands Instead of Patching the Build"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5322
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5321
msgid ""
"When `BINARY_ALIAS` is defined it will create symlinks of the given commands "
"in a directory which will be prepended to `PATH`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5324
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5323
msgid ""
"Use it to substitute hardcoded commands the build phase relies on without "
"having to patch any build files."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5326
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5325
#, no-wrap
msgid "Using `BINARY_ALIAS` to Make `gsed` Available as `sed`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5331
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5330
msgid ""
"Some ports expect `sed` to behave like GNU sed and use features that man:"
"sed[1] does not provide. GNU sed is available from package:textproc/gsed[] "
"on FreeBSD."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5333
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5332
msgid ""
"Use `BINARY_ALIAS` to substitute `sed` with `gsed` for the duration of the "
"build:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5339
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5338
#, no-wrap
msgid ""
"BUILD_DEPENDS=\tgsed:textproc/gsed\n"
"...\n"
"BINARY_ALIAS=\tsed=gsed\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5344
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5343
#, no-wrap
msgid "Using `BINARY_ALIAS` to Provide Aliases for Hardcoded `python3` Commands"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5349
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5348
msgid ""
"A port that has a hardcoded reference to `python3` in its build scripts will "
"need to have it available in `PATH` at build time. Use `BINARY_ALIAS` to "
"create an alias that points to the right Python 3 binary:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5355
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5354
#, no-wrap
msgid ""
"USES=\tpython:3.4+,build\n"
"...\n"
"BINARY_ALIAS=\tpython3=${PYTHON_CMD}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5358
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5357
msgid ""
"See crossref:special[using-python,Using Python] for more information about "
"`USES=python`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5365
+#: documentation/content/en/books/porters-handbook/makefiles/_index.adoc:5364
msgid ""
"Binary aliases are created after the dependencies provided via "
"`BUILD_DEPENDS` and `LIB_DEPENDS` are processed and before the `configure` "
"target. This leads to various limitations. For example, programs installed "
"via `TEST_DEPENDS` cannot be used to create a binary alias as test "
"dependencies specified this way are processed after binary aliases are "
"created."
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/pkg-files/_index.po b/documentation/content/en/books/porters-handbook/pkg-files/_index.po
index df7db65520..7a15bf5c2f 100644
--- a/documentation/content/en/books/porters-handbook/pkg-files/_index.po
+++ b/documentation/content/en/books/porters-handbook/pkg-files/_index.po
@@ -1,583 +1,681 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-16 17:06-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:1
#, no-wrap
msgid "Tricks about the pkg-* files"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:1
#, no-wrap
msgid "Chapter 9. pkg-*"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:13
#, no-wrap
msgid "pkg-*"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:51
msgid ""
"There are some tricks we have not mentioned yet about the [.filename]#pkg-*# "
"files that come in handy sometimes."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:53
#, no-wrap
msgid "pkg-message"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:57
msgid ""
"To display a message when the package is installed, place the message in [."
"filename]#pkg-message#. This capability is often useful to display "
"additional installation steps to be taken after a `pkg install` or `pkg "
"upgrade`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:61
msgid ""
"[.filename]#pkg-message# must contain only information that is _vital_ to "
"setup and operation on FreeBSD, and that is unique to the port in question."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:62
msgid ""
"Setup information should only be shown on initial install. Upgrade "
"instructions should be shown only when upgrading from the relevant version."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:63
msgid ""
"Do not surround the messages with either whitespace or lines of symbols "
"(like `----------`, `**********`, or `==========`). Leave the formatting to "
"man:pkg[8]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:64
msgid ""
"Committers have blanket approval to constrain existing messages to install "
"or upgrade ranges using the UCL format specifications."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:68
msgid "pkg-message supports two formats:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:69
#, no-wrap
msgid "raw"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:72
msgid "A regular plain text file. Its message is only displayed on install."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:73
#, no-wrap
msgid "UCL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:76
msgid ""
"If the file starts with \"`[`\" then it is considered to be a UCL file. The "
"UCL format is described on https://github.com/vstakhov/libucl[libucl's "
"GitHub page]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:80
msgid ""
"Do not add an entry for [.filename]#pkg-message# in [.filename]#pkg-plist#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:83
#, no-wrap
msgid "UCL in pkg-message"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:88
msgid ""
"The format is the following. It should be an array of objects. The objects "
"themselves can have these keywords:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:89
#, no-wrap
msgid "`message`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:92
msgid "The actual message to be displayed. This keyword is mandatory."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:93
#, no-wrap
msgid "`type`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:95
msgid "When the message should be displayed."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:96
#, no-wrap
msgid "`maximum_version`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:99
msgid ""
"Only if `type` is `upgrade`. Display if upgrading from a version strictly "
"lower than the version specified."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:100
#, no-wrap
msgid "`minimum_version`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:103
msgid ""
"Only if `type` is `upgrade`. Display if upgrading from a version strictly "
"greater than the version specified."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:105
msgid "The `maximum_version` and `minimum_version` keywords can be combined."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:107
msgid "The `type` keyword can have three values:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:108
#, no-wrap
msgid "`install`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:110
msgid "The message should only be displayed when the package is installed."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:111
#, no-wrap
msgid "`remove`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:113
msgid "The message should only be displayed when the package is removed."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:114
#, no-wrap
msgid "`upgrade`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:116
msgid "the message should only be displayed during an upgrade of the package.."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:121
msgid ""
"To preserve the compatibility with non UCL [.filename]#pkg-message# files, "
"the first line of a UCL [.filename]#pkg-message# _MUST be_ a single \"`[`\", "
"and the last line _MUST be_ a single \"`]`\"."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:124
#, no-wrap
msgid "UCL Short Strings"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:129
msgid ""
"The message is delimited by double quotes `\"`, this is used for simple "
"single line strings:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:137
#, no-wrap
msgid ""
"[\n"
"{ type: install\n"
" message: \"Simple message\"\n"
"}\n"
"]\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:142
#, no-wrap
msgid "UCL Multiline Strings"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:150
msgid ""
"Multiline strings use the standard here document notation. The multiline "
"delimiter _must_ start just after `<<` symbols without any whitespace and it "
"_must_ consist of capital letters only. To finish a multiline string, add "
"the delimiter string on a line of its own without any whitespace. The "
"message from <<porting-message-ucl-short-ex>> can be written as:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:160
#, no-wrap
msgid ""
"[\n"
"{ type: install\n"
" message: <<EOM\n"
"Simple message\n"
"EOM\n"
"}\n"
"]\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:165
#, no-wrap
msgid "Display a Message on Install/Deinstall"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:170
msgid ""
"When a message only needs to be displayed on installation or uninstallation, "
"set the type:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:180
#, no-wrap
msgid ""
"[\n"
"{\n"
" type: remove\n"
" message: \"package being removed.\"\n"
"}\n"
"{ type: install, message: \"package being installed.\"}\n"
"]\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:185
#, no-wrap
msgid "Display a Message on Upgrade"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:190
msgid ""
"When a port is upgraded, the message displayed can be even more tailored to "
"the port's needs."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:215
#, no-wrap
msgid ""
"[\n"
"{\n"
" type: upgrade\n"
" message: \"Package is being upgraded.\"\n"
"}\n"
"{\n"
" type: upgrade\n"
" maximum_version: \"1.0\"\n"
" message: \"Upgrading from before 1.0 need to do this.\"\n"
"}\n"
"{\n"
" type: upgrade\n"
" minimum_version: \"1.0\"\n"
" message: \"Upgrading from after 1.0 should do that.\"\n"
"}\n"
"{\n"
" type: upgrade\n"
" maximum_version: \"3.0\"\n"
" minimum_version: \"1.0\"\n"
" message: \"Upgrading from > 1.0 and < 3.0 remove that file.\"\n"
"}\n"
"]\n"
msgstr ""
#. type: delimited block * 4
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:221
msgid ""
"When displaying a message on upgrade, it is important to limit when it is "
"being shown to the user. Most of the time it is by using `maximum_version` "
"to limit its usage to upgrades from before a certain version when something "
"specific needs to be done."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:226
#, no-wrap
-msgid "pkg-install"
+msgid "pkg-install, pkg-pre-install, and pkg-post-install"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:233
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:232
msgid ""
"If the port needs to execute commands when the binary package is installed "
-"with `pkg add` or `pkg install`, use [.filename]#pkg-install#. This script "
-"will automatically be added to the package. It will be run twice by `pkg`, "
-"the first time as `${SH} pkg-install ${PKGNAME} PRE-INSTALL` before the "
-"package is installed, and the second time as `${SH} pkg-install ${PKGNAME} "
-"POST-INSTALL` after it has been installed. `$2` can be tested to determine "
-"which mode the script is being run in. The `PKG_PREFIX` environmental "
-"variable will be set to the package installation directory."
+"with `pkg add` or `pkg install`, use [.filename]#pkg-install#. It is run "
+"twice by `pkg`, the first time as `${SH} pkg-install ${PKGNAME} PRE-INSTALL` "
+"before the package is installed, and the second time as `${SH} pkg-install "
+"${PKGNAME} POST-INSTALL` after it has been installed. `$2` can be tested to "
+"determine which mode the script is being run in. The `PKG_PREFIX` "
+"environment variable is set to the package installation directory."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:236
+msgid ""
+"If using [.filename]#pkg-pre-install# or [.filename]#pkg-post-install# "
+"instead, the script is run only once (before or after installing the "
+"package), with the single argument `${PKGNAME}`. Using [.filename]#pkg-pre-"
+"install.lua# or [.filename]#pkg-post-install.lua# will run a lua script "
+"instead of a shell script. Lua scripts run by `pkg` provide some extensions "
+"and a few restrictions, both explained in man:pkg-lua-script[5]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:238
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:254
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:240
+msgid ""
+"Using [.filename]#pkg-pre-install# (or [.filename]#pkg-pre-install.lua#) and "
+"[.filename]#pkg-post-install# (or [.filename]#pkg-post-install.lua#) is "
+"preferred to using [.filename]#pkg-install#."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:243
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:270
+msgid "These scripts are automatically added to the packing list."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:248
msgid ""
-"This script is here to help you set up the package so that it is as ready to "
-"use as possible. It _must not_ be abused to start services, stop services, "
+"These scripts are here to simplify package configuration after "
+"installation. They _must not_ be abused to start services, stop services, "
"or run any other commands that will modify the currently running system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:241
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:251
#, no-wrap
-msgid "pkg-deinstall"
+msgid "pkg-deinstall, pkg-pre-deinstall, and pkg-post-deinstall"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:244
-msgid "This script executes when a package is removed."
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:254
+msgid "These scripts execute when a package is removed."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:259
+msgid ""
+"The [.filename]#pkg-deinstall# script is run twice by `pkg delete`. The "
+"first time as `${SH} pkg-deinstall ${PKGNAME} DEINSTALL` before the port is "
+"de-installed and the second time as `${SH} pkg-deinstall ${PKGNAME} POST-"
+"DEINSTALL` after the port has been de-installed. `$2` can be tested to "
+"determine which mode the script is being run in. The `PKG_PREFIX` "
+"environment variable is set to the package installation directory."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:249
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:263
msgid ""
-"This script will be run twice by `pkg delete`. The first time as `${SH} pkg-"
-"deinstall ${PKGNAME} DEINSTALL` before the port is de-installed and the "
-"second time as `${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL` after the "
-"port has been de-installed. `$2` can be tested to determine which mode the "
-"script is being run in. The `PKG_PREFIX` environmental variable will be set "
-"to the package installation directory"
+"If using [.filename]#pkg-pre-deinstall# or [.filename]#pkg-post-deinstall# "
+"instead, the script is run only once (before or after deinstalling the "
+"package), with the single argument `${PKGNAME}`. Using [.filename]#pkg-pre-"
+"deinstall.lua# or [.filename]#pkg-post-deinstall.lua# will run a lua script "
+"instead of a shell script. Lua scripts run by `pkg` provide some extensions "
+"and a few restrictions, both explained in man:pkg-lua-script[5]."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:267
+msgid ""
+"Using [.filename]#pkg-pre-deinstall# (or [.filename]#pkg-pre-deinstall.lua#) "
+"and [.filename]#pkg-post-deinstall# (or [.filename]#pkg-post-deinstall.lua#) "
+"is preferred to using [.filename]#pkg-deinstall#."
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:275
+msgid ""
+"These scripts are here to simplify cleanup after package deinstallation. "
+"They _must not_ be abused to start services, stop services, or run any other "
+"commands that will modify the currently running system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:257
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:278
#, no-wrap
msgid "Changing the Names of pkg-*"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:262
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:283
msgid ""
"All the names of [.filename]#pkg-\\*# are defined using variables that can "
"be changed in the [.filename]#Makefile# if needed. This is especially "
"useful when sharing the same [.filename]#pkg-*# files among several ports or "
"when it is necessary to write to one of these files. See crossref:porting-"
"dads[porting-wrkdir,writing to places other than `WRKDIR`] for why it is a "
"bad idea to write directly into the directory containing the [.filename]#pkg-"
"*# files."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:265
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:286
msgid ""
"Here is a list of variable names and their default values. (`PKGDIR` "
"defaults to `${MASTERDIR}`.)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:270
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:291
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:272
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:293
#, no-wrap
msgid "Default value"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:273
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:294
#, no-wrap
msgid "`DESCR`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:275
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:296
#, no-wrap
msgid "`${PKGDIR}/pkg-descr`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:276
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:297
#, no-wrap
msgid "`PLIST`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:278
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:299
#, no-wrap
msgid "`${PKGDIR}/pkg-plist`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:279
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:300
#, no-wrap
msgid "`PKGINSTALL`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:281
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:302
#, no-wrap
msgid "`${PKGDIR}/pkg-install`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:282
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:303
+#, no-wrap
+msgid "`PKGPREINSTALL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:305
+#, no-wrap
+msgid "`${PKGDIR}/pkg-pre-install`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:306
+#, no-wrap
+msgid "`PKGPOSTINSTALL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:308
+#, no-wrap
+msgid "`${PKGDIR}/pkg-post-install`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:309
#, no-wrap
msgid "`PKGDEINSTALL`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:284
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:311
#, no-wrap
msgid "`${PKGDIR}/pkg-deinstall`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:285
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:312
+#, no-wrap
+msgid "`PKGPREDEINSTALL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:314
+#, no-wrap
+msgid "`${PKGDIR}/pkg-pre-deinstall`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:315
+#, no-wrap
+msgid "`PKGPOSTDEINSTALL`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:317
+#, no-wrap
+msgid "`${PKGDIR}/pkg-post-deinstall`"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:318
#, no-wrap
msgid "`PKGMESSAGE`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:286
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:319
#, no-wrap
msgid "`${PKGDIR}/pkg-message`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:289
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:322
#, no-wrap
msgid "Making Use of `SUB_FILES` and `SUB_LIST`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:292
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:325
msgid ""
"`SUB_FILES` and `SUB_LIST` are useful for dynamic values in port files, such "
"as the installation `PREFIX` in [.filename]#pkg-message#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:298
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:331
msgid ""
"`SUB_FILES` specifies a list of files to be automatically modified. Each [."
"filename]#file# in the `SUB_FILES` list must have a corresponding [."
"filename]#file.in# present in `FILESDIR`. A modified version will be "
"created as [.filename]#${WRKDIR}/file#. Files defined as a value of "
"`USE_RC_SUBR` are automatically added to `SUB_FILES`. For the files [."
"filename]#pkg-message#, [.filename]#pkg-install#, and [.filename]#pkg-"
"deinstall#, the corresponding Makefile variable is automatically set to "
"point to the processed version."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:303
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:336
msgid ""
"`SUB_LIST` is a list of `VAR=VALUE` pairs. For each pair, `%%VAR%%` will be "
"replaced with `VALUE` in each file listed in `SUB_FILES`. Several common "
"pairs are automatically defined: `PREFIX`, `LOCALBASE`, `DATADIR`, "
"`DOCSDIR`, `EXAMPLESDIR`, `WWWDIR`, and `ETCDIR`. Any line beginning with "
"`@comment` followed by a space, will be deleted from resulting files after a "
"variable substitution."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:305
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:338
msgid ""
"This example replaces `%%ARCH%%` with the system architecture in a [."
"filename]#pkg-message#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:310
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:343
#, no-wrap
msgid ""
"SUB_FILES=\tpkg-message\n"
"SUB_LIST=\tARCH=${ARCH}\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:313
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:346
msgid ""
"Note that for this example, [.filename]#pkg-message.in# must exist in "
"`FILESDIR`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:315
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:348
msgid "Example of a good [.filename]#pkg-message.in#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:321
+#: documentation/content/en/books/porters-handbook/pkg-files/_index.adoc:354
#, no-wrap
msgid ""
"Now it is time to configure this package.\n"
"Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory\n"
"as .putsy.conf and edit it.\n"
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/porting-dads/_index.po b/documentation/content/en/books/porters-handbook/porting-dads/_index.po
index fe7c0480f1..5bbad04acd 100644
--- a/documentation/content/en/books/porters-handbook/porting-dads/_index.po
+++ b/documentation/content/en/books/porters-handbook/porting-dads/_index.po
@@ -1,1142 +1,1141 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-07-07 23:22-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:1
#, no-wrap
msgid "A list of common dos and don'ts that are encountered during the FreeBSD porting process"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:1
#, no-wrap
msgid "Chapter 13. Dos and Don'ts"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:13
#, no-wrap
msgid "Dos and Don'ts"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:53
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:59
msgid ""
"Here is a list of common dos and don'ts that are encountered during the "
"porting process. Check the port against this list, but also check ports in "
"the https://bugs.FreeBSD.org/search/[PR database] that others have "
"submitted. Submit any comments on ports as described in extref:"
"{contributing}[Bug Reports and General Commentary, CONTRIB-GENERAL]. "
"Checking ports in the PR database will both make it faster for us to commit "
"them, and prove that you know what you are doing."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:61
#, no-wrap
msgid "`WRKDIR`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:65
msgid ""
"Do not write anything to files outside `WRKDIR`. `WRKDIR` is the only place "
"that is guaranteed to be writable during the port build (see extref:"
"{handbook}[ installing ports from a CDROM, PORTS-CD] for an example of "
"building ports from a read-only tree). The [.filename]##pkg-*## files can "
"be modified by crossref:pkg-files[pkg-names,redefining a variable] rather "
"than overwriting the file."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:67
#, no-wrap
msgid "`WRKDIRPREFIX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:72
msgid ""
"Make sure the port honors `WRKDIRPREFIX`. Most ports do not have to worry "
"about this. In particular, when referring to a `WRKDIR` of another port, "
"note that the correct location is [.filename]#${WRKDIRPREFIX}${PORTSDIR}/"
"subdir/name/work# not [.filename]#${PORTSDIR}/subdir/name/work# or [."
"filename]#${.CURDIR}/../../subdir/name/work# or some such."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:74
#, no-wrap
msgid "Differentiating Operating Systems and OS Versions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:78
msgid ""
"Some code needs modifications or conditional compilation based upon what "
"version of FreeBSD Unix it is running under. The preferred way to tell "
"FreeBSD versions apart are the `{freebsd-version}` and `{freebsd}` macros "
"defined in https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]. "
"If this file is not included add the code,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:82
#, no-wrap
msgid "#include <sys/param.h>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:85
msgid "to the proper place in the [.filename]#.c# file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:88
msgid ""
"`{freebsd}` is defined in all versions of FreeBSD as their major version "
"number. For example, in FreeBSD 9.x, `{freebsd}` is defined to be `9`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:96
#, no-wrap
msgid ""
"#if __FreeBSD__ >= 9\n"
"# if __FreeBSD_version >= 901000\n"
"\t /* 9.1+ release specific code here */\n"
"# endif\n"
"#endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:99
msgid ""
"A complete list of `{freebsd-version}` values is available in crossref:"
"versions[versions,__FreeBSD_version Values]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:101
#, no-wrap
msgid "Writing Something After bsd.port.mk"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:105
msgid ""
"Do not write anything after the `.include <bsd.port.mk>` line. It usually "
"can be avoided by including [.filename]#bsd.port.pre.mk# somewhere in the "
"middle of the [.filename]#Makefile# and [.filename]#bsd.port.post.mk# at the "
"end."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:109
msgid ""
"Include either the [.filename]#bsd.port.pre.mk#/[.filename]#bsd.port.post."
"mk# pair or [.filename]#bsd.port.mk# only; do not mix these two usages."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:112
msgid ""
"[.filename]#bsd.port.pre.mk# only defines a few variables, which can be used "
"in tests in the [.filename]#Makefile#, [.filename]#bsd.port.post.mk# defines "
"the rest."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:114
msgid ""
"Here are some important variables defined in [.filename]#bsd.port.pre.mk# "
"(this is not the complete list, please read [.filename]#bsd.port.mk# for the "
"complete list)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:119
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:121
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:122
#, no-wrap
msgid "`ARCH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:124
#, no-wrap
msgid "The architecture as returned by `uname -m` (for example, `i386`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:125
#, no-wrap
msgid "`OPSYS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:127
#, no-wrap
msgid "The operating system type, as returned by `uname -s` (for example, `FreeBSD`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:128
#, no-wrap
msgid "`OSREL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:130
#, no-wrap
msgid "The release version of the operating system (for example, `2.1.5` or `2.2.7`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:131
#, no-wrap
msgid "`OSVERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:133
#, no-wrap
msgid "The numeric version of the operating system; the same as crossref:versions[versions,`{freebsd-version}`]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:134
#, no-wrap
msgid "`LOCALBASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:136
#, no-wrap
msgid "The base of the \"local\" tree (for example, `/usr/local`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:137
#, no-wrap
msgid "`PREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:138
#, no-wrap
msgid "Where the port installs itself (see crossref:testing[porting-prefix,more on `PREFIX`])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:143
msgid ""
"When `MASTERDIR` is needed, always define it before including [."
"filename]#bsd.port.pre.mk#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:146
msgid ""
"Here are some examples of things that can be added after [.filename]#bsd."
"port.pre.mk#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:153
#, no-wrap
msgid ""
"# no need to compile lang/perl5 if perl5 is already in system\n"
".if ${OSVERSION} > 300003\n"
"BROKEN=\tperl is in system\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:156
msgid "Always use tab instead of spaces after `BROKEN=`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:158
#, no-wrap
msgid "Use the `exec` Statement in Wrapper Scripts"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:163
msgid ""
"If the port installs a shell script whose purpose is to launch another "
"program, and if launching that program is the last action performed by the "
"script, make sure to launch the program using the `exec` statement, for "
"instance:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:168
#, no-wrap
msgid ""
"#!/bin/sh\n"
"exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar \"$@\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:173
msgid ""
"The `exec` statement replaces the shell process with the specified program. "
"If `exec` is omitted, the shell process remains in memory while the program "
"is executing, and needlessly consumes system resources."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:175
#, no-wrap
msgid "Do Things Rationally"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:180
msgid ""
"The [.filename]#Makefile# should do things in a simple and reasonable "
"manner. Making it a couple of lines shorter or more readable is always "
"better. Examples include using a make `.if` construct instead of a shell "
"`if` construct, not redefining `do-extract` if redefining `EXTRACT*` is "
-"enough, and using `GNU_CONFIGURE` instead of `CONFIGURE_ARGS += --prefix="
-"${PREFIX}`."
+"enough, and using `GNU_CONFIGURE` instead of `CONFIGURE_ARGS += --"
+"prefix=${PREFIX}`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:183
msgid ""
"If a lot of new code is needed to do something, there may already be an "
"implementation of it in [.filename]#bsd.port.mk#. While hard to read, there "
"are a great many seemingly-hard problems for which [.filename]#bsd.port.mk# "
"already provides a shorthand solution."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:185
#, no-wrap
msgid "Respect Both `CC` and `CXX`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:191
msgid ""
"The port must respect both `CC` and `CXX`. What we mean by this is that the "
"port must not set the values of these variables absolutely, overriding "
"existing values; instead, it may append whatever values it needs to the "
"existing values. This is so that build options that affect all ports can be "
"set globally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:193
msgid ""
"If the port does not respect these variables, please add `NO_PACKAGE=ignores "
"either cc or cxx` to the [.filename]#Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:196
msgid ""
"Here is an example of a [.filename]#Makefile# respecting both `CC` and "
"`CXX`. Note the `?=`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:200
#, no-wrap
msgid "CC?= gcc\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:205
#, no-wrap
msgid "CXX?= g++\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:208
msgid "Here is an example which respects neither `CC` nor `CXX`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:212
#, no-wrap
msgid "CC= gcc\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:217
#, no-wrap
msgid "CXX= g++\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:222
msgid ""
"Both `CC` and `CXX` can be defined on FreeBSD systems in [.filename]#/etc/"
"make.conf#. The first example defines a value if it was not previously set "
"in [.filename]#/etc/make.conf#, preserving any system-wide definitions. The "
"second example clobbers anything previously defined."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:224
#, no-wrap
msgid "Respect `CFLAGS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:230
msgid ""
"The port must respect `CFLAGS`. What we mean by this is that the port must "
"not set the value of this variable absolutely, overriding the existing "
"value. Instead, it may append whatever values it needs to the existing "
"value. This is so that build options that affect all ports can be set "
"globally."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:232
msgid ""
"If it does not, please add `NO_PACKAGE=ignores cflags` to the [."
"filename]#Makefile#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:234
msgid ""
-"Here is an example of a [.filename]#Makefile# respecting `CFLAGS`. Note the `"
-"+=`:"
+"Here is an example of a [.filename]#Makefile# respecting `CFLAGS`. Note the "
+"`+=`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:238
#, no-wrap
msgid "CFLAGS+= -Wall -Werror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:241
msgid "Here is an example which does not respect `CFLAGS`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:245
#, no-wrap
msgid "CFLAGS= -Wall -Werror\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:250
msgid ""
"`CFLAGS` is defined on FreeBSD systems in [.filename]#/etc/make.conf#. The "
"first example appends additional flags to `CFLAGS`, preserving any system-"
"wide definitions. The second example clobbers anything previously defined."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:254
msgid ""
"Remove optimization flags from the third party [.filename]##Makefile##s. "
"The system `CFLAGS` contains system-wide optimization flags. An example "
"from an unmodified [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:258
#, no-wrap
msgid "CFLAGS= -O3 -funroll-loops -DHAVE_SOUND\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:261
msgid ""
"Using system optimization flags, the [.filename]#Makefile# would look "
"similar to this example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:265
#, no-wrap
msgid "CFLAGS+= -DHAVE_SOUND\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:268
#, no-wrap
msgid "Verbose Build Logs"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:272
msgid ""
"Make the port build system display all commands executed during the build "
"stage. Complete build logs are crucial to debugging port problems."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:274
msgid "Non-informative build log example (bad):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:280
#, no-wrap
msgid ""
" CC source1.o\n"
" CC source2.o\n"
" CCLD someprogram\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:283
msgid "Verbose build log example (good):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:289
#, no-wrap
msgid ""
"cc -O2 -pipe -I/usr/local/include -c -o source1.o source1.c\n"
"cc -O2 -pipe -I/usr/local/include -c -o source2.o source2.c\n"
"cc -o someprogram source1.o source2.o -L/usr/local/lib -lsomelib\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:293
msgid ""
"Some build systems such as CMake, ninja, and GNU configure are set up for "
"verbose logging by the ports framework. In other cases, ports might need "
"individual tweaks."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:295
#, no-wrap
msgid "Feedback"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:299
msgid ""
"Do send applicable changes and patches to the upstream maintainer for "
"inclusion in the next release of the code. This makes updating to the next "
"release that much easier."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:301
#, no-wrap
msgid "README.html"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:305
msgid ""
"[.filename]#README.html# is not part of the port, but generated by `make "
"readme`. Do not include this file in patches or commits."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:309
msgid ""
"If `make readme` fails, make sure that the default value of `ECHO_MSG` has "
"not been modified by the port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:312
#, no-wrap
msgid "Marking a Port Not Installable with `BROKEN`, `FORBIDDEN`, or `IGNORE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:319
msgid ""
"In certain cases, users must be prevented from installing a port. There are "
"several variables that can be used in a port's [.filename]#Makefile# to tell "
"the user that the port cannot be installed. The value of these make "
"variables will be the reason that is shown to users for why the port refuses "
"to install itself. Please use the correct make variable. Each variable "
"conveys radically different meanings, both to users and to automated systems "
"that depend on [.filename]##Makefile##s, such as crossref:keeping-up[build-"
"cluster,the ports build cluster], and crossref:keeping-up[freshports,"
"FreshPorts]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:321
#, no-wrap
msgid "Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:324
msgid ""
"`BROKEN` is reserved for ports that currently do not compile, install, "
"deinstall, or run correctly. Use it for ports where the problem is believed "
"to be temporary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:327
msgid ""
"If instructed, the build cluster will still attempt to try to build them to "
"see if the underlying problem has been resolved. (However, in general, the "
"cluster is run without this.)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:329
msgid "For instance, use `BROKEN` when a port:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:331
msgid "does not compile"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:332
msgid "fails its configuration or installation process"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:333
msgid "installs files outside of [.filename]#${PREFIX}#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:334
msgid ""
"does not remove all its files cleanly upon deinstall (however, it may be "
"acceptable, and desirable, for the port to leave user-modified files behind)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:335
msgid "has runtime issues on systems where it is supposed to run fine."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:337
msgid ""
"`FORBIDDEN` is used for ports that contain a security vulnerability or "
"induce grave concern regarding the security of a FreeBSD system with a given "
"port installed (for example, a reputably insecure program or a program that "
"provides easily exploitable services). Mark ports as `FORBIDDEN` as soon as "
"a particular piece of software has a vulnerability and there is no released "
"upgrade. Ideally upgrade ports as soon as possible when a security "
"vulnerability is discovered so as to reduce the number of vulnerable FreeBSD "
"hosts (we like being known for being secure), however sometimes there is a "
"noticeable time gap between disclosure of a vulnerability and an updated "
"release of the vulnerable software. Do not mark a port `FORBIDDEN` for any "
"reason other than security."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:338
msgid ""
"`IGNORE` is reserved for ports that must not be built for some other reason. "
"Use it for ports where the problem is believed to be structural. The build "
"cluster will not, under any circumstances, build ports marked as `IGNORE`. "
"For instance, use `IGNORE` when a port:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:340
msgid "does not work on the installed version of FreeBSD"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:341
msgid ""
"has a distfile which may not be automatically fetched due to licensing "
"restrictions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:342
msgid ""
"does not work with some other currently installed port (for instance, the "
-"port depends on package:www/apache20[] but package:www/apache22[] is "
-"installed)"
+"port depends on package:www/drupal7[] but package:www/drupal8[] is installed)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:347
msgid ""
"If a port would conflict with a currently installed port (for example, if "
"they install a file in the same place that performs a different function), "
"crossref:makefiles[conflicts,use `CONFLICTS` instead]. `CONFLICTS` will set "
"`IGNORE` by itself."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:350
#, no-wrap
msgid "Implementation Notes"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:354
msgid ""
"Do not quote the values of `BROKEN`, `IGNORE`, and related variables. Due "
"to the way the information is shown to the user, the wording of messages for "
"each variable differ:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:358
#, no-wrap
msgid "BROKEN=\tfails to link with base -lcrypto\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:363
#, no-wrap
msgid "IGNORE=\tunsupported on recent versions\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:366
msgid "resulting in this output from `make describe`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:370
#, no-wrap
msgid "===> foobar-0.1 is marked as broken: fails to link with base -lcrypto.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:375
#, no-wrap
msgid "===> foobar-0.1 is unsupported on recent versions.\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:378
#, no-wrap
msgid "Architectural Considerations"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:381
#, no-wrap
msgid "General Notes on Architectures"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:385
msgid ""
"FreeBSD runs on many more processor architectures than just the well-known "
"x86-based ones. Some ports have constraints which are particular to one or "
"more of these architectures."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:387
msgid "For the list of supported architectures, run:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:391
#, no-wrap
msgid "cd ${SRCDIR}; make targets\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:396
msgid ""
"The values are shown in the form `TARGET`/`TARGET_ARCH`. The ports read-"
"only makevar `ARCH` is set based on the value of `TARGET_ARCH`. Port [."
"filename]##Makefile##s should test the value of this Makevar."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:398
#, no-wrap
msgid "Marking a Port as Architecture Neutral"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:401
msgid ""
"Ports that do not have any architecture-dependent files or requirements are "
"identified by setting `NO_ARCH=yes`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:407
msgid ""
"`NO_ARCH` is meant to indicate that there is no need to build a package for "
"each of the supported architectures. The goal is to reduce the amount of "
"resources spent on building and distributing the packages such as network "
"bandwidth and disk space on mirrors and on distribution media. Currently, "
"however, our package infrastructure (e.g., package managers, mirrors, and "
"package builders) is not set up to fully benefit from `NO_ARCH`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:410
#, no-wrap
msgid "Marking a Port as Ignored Only On Certain Architectures"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:413
msgid ""
"To mark a port as ``IGNORE``d only on certain architectures, there are two "
"other convenience variables that will automatically set `IGNORE`: "
"`ONLY_FOR_ARCHS` and `NOT_FOR_ARCHS`. Examples:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:417
#, no-wrap
msgid "ONLY_FOR_ARCHS=\ti386 amd64\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:422
#, no-wrap
msgid "NOT_FOR_ARCHS=\tia64 sparc64\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:426
msgid ""
"A custom `IGNORE` message can be set using `ONLY_FOR_ARCHS_REASON` and "
"`NOT_FOR_ARCHS_REASON`. Per architecture entries are possible with "
"`ONLY_FOR_ARCHS_REASON_ARCH` and `NOT_FOR_ARCHS_REASON_ARCH`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:429
msgid ""
"If a port fetches i386 binaries and installs them, set `IA32_BINARY_PORT`. "
"If this variable is set, [.filename]#/usr/lib32# must be present for IA32 "
"versions of libraries and the kernel must support IA32 compatibility. If one "
"of these two dependencies is not satisfied, `IGNORE` will be set "
"automatically."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:431
#, no-wrap
msgid "Cluster-Specific Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:434
msgid ""
"Some ports attempt to tune themselves to the exact machine they are being "
"built on by specifying `-march=native` to the compiler. This should be "
"avoided: either list it under an off-by-default option, or delete it "
"entirely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:436
msgid ""
"Otherwise, the default package produced by the build cluster might not run "
"on every single machine of that `ARCH`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:438
#, no-wrap
msgid "Marking a Port for Removal with `DEPRECATED` or `EXPIRATION_DATE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:442
msgid ""
"Do remember that `BROKEN` and `FORBIDDEN` are to be used as a temporary "
"resort if a port is not working. Permanently broken ports will be removed "
"from the tree entirely."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:446
msgid ""
"When it makes sense to do so, users can be warned about a pending port "
"removal with `DEPRECATED` and `EXPIRATION_DATE`. The former is a string "
"stating why the port is scheduled for removal; the latter is a string in ISO "
"8601 format (YYYY-MM-DD). Both will be shown to the user."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:448
msgid ""
"It is possible to set `DEPRECATED` without an `EXPIRATION_DATE` (for "
"instance, recommending a newer version of the port), but the converse does "
"not make any sense."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:452
msgid ""
"There is no set policy on how much notice to give. Current practice seems "
"to be one month for security-related issues and two months for build "
"issues. This also gives any interested committers a little time to fix the "
"problems."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:454
#, no-wrap
msgid "Avoid Use of the `.error` Construct"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:458
msgid ""
"The correct way for a [.filename]#Makefile# to signal that the port cannot "
"be installed due to some external factor (for instance, the user has "
"specified an illegal combination of build options) is to set a non-blank "
"value to `IGNORE`. This value will be formatted and shown to the user by "
"`make install`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:464
msgid ""
"It is a common mistake to use `.error` for this purpose. The problem with "
"this is that many automated tools that work with the ports tree will fail in "
"this situation. The most common occurrence of this is seen when trying to "
"build [.filename]#/usr/ports/INDEX# (see crossref:testing[make-describe,"
"Running `make describe`]). However, even more trivial commands such as "
"`make maintainer` also fail in this scenario. This is not acceptable."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:466
#, no-wrap
msgid "How to Avoid Using `.error`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:471
msgid ""
"The first of the next two [.filename]#Makefile# snippets will cause `make "
"index` to fail, while the second one will not:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:475
#, no-wrap
msgid ".error \"option is not supported\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:480
#, no-wrap
msgid "IGNORE=option is not supported\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:485
#, no-wrap
msgid "Usage of sysctl"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:490
msgid ""
"The usage of [.filename]#sysctl# is discouraged except in targets. This is "
"because the evaluation of any ``makevar``s, such as used during `make "
"index`, then has to run the command, further slowing down that process."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:492
msgid ""
"Only use man:sysctl[8] through `SYSCTL`, as it contains the fully qualified "
"path and can be overridden, if one has such a special need."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:494
#, no-wrap
msgid "Rerolling Distfiles"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:499
msgid ""
"Sometimes the authors of software change the content of released distfiles "
"without changing the file's name. Verify that the changes are official and "
"have been performed by the author. It has happened in the past that the "
"distfile was silently altered on the download servers with the intent to "
"cause harm or compromise end user security."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:502
msgid ""
"Put the old distfile aside, download the new one, unpack them and compare "
"the content with man:diff[1]. If there is nothing suspicious, update [."
"filename]#distinfo#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:506
msgid ""
"Be sure to summarize the differences in the PR and commit log, so that other "
"people know that nothing bad has happened."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:509
msgid "Contact the authors of the software and confirm the changes with them."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:511
#, no-wrap
msgid "Use POSIX Standards"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:515
msgid ""
"FreeBSD ports generally expect POSIX compliance. Some software and build "
"systems make assumptions based on a particular operating system or "
"environment that can cause problems when used in a port."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:518
msgid ""
"Do not use [.filename]#/proc# if there are any other ways of getting the "
"information. For example, `setprogname(argv[0])` in `main()` and then man:"
"getprogname[3] to know the executable name."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:520
msgid "Do not rely on behavior that is undocumented by POSIX."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:524
msgid ""
"Do not record timestamps in the critical path of the application if it also "
"works without. Getting timestamps may be slow, depending on the accuracy of "
"timestamps in the OS. If timestamps are really needed, determine how "
"precise they have to be and use an API which is documented to just deliver "
"the needed precision."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:528
msgid ""
"A number of simple syscalls (for example man:gettimeofday[2], man:getpid[2]) "
"are much faster on Linux(R) than on any other operating system due to "
"caching and the vsyscall performance optimizations. Do not rely on them "
"being cheap in performance-critical applications. In general, try hard to "
"avoid syscalls if possible."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:531
msgid ""
"Do not rely on Linux(R)-specific socket behavior. In particular, default "
"socket buffer sizes are different (call man:setsockopt[2] with `SO_SNDBUF` "
"and `SO_RCVBUF`, and while Linux(R)'s man:send[2] blocks when the socket "
"buffer is full, FreeBSD's will fail and set `ENOBUFS` in errno."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:533
msgid ""
"If relying on non-standard behavior is required, encapsulate it properly "
"into a generic API, do a check for the behavior in the configure stage, and "
"stop if it is missing."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:535
msgid ""
"Check the https://www.freebsd.org/cgi/man.cgi[man pages] to see if the "
"function used is a POSIX interface (in the \"STANDARDS\" section of the man "
"page)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:538
msgid ""
"Do not assume that [.filename]#/bin/sh# is bash. Ensure that a command line "
"passed to man:system[3] will work with a POSIX compliant shell."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:540
msgid ""
"A list of common bashisms is available https://wiki.ubuntu.com/"
"DashAsBinSh[here]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:543
msgid ""
"Check that headers are included in the POSIX or man page recommended way. "
"For example, [.filename]#sys/types.h# is often forgotten, which is not as "
"much of a problem for Linux(R) as it is for FreeBSD."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:545
#, no-wrap
msgid "Miscellanea"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:549
msgid ""
"Always double-check [.filename]#pkg-descr# and [.filename]#pkg-plist#. If "
"reviewing a port and a better wording can be achieved, do so."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/porting-dads/_index.adoc:550
msgid ""
"Please be careful to note any legal issues! Do not let us illegally "
"distribute software!"
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/special/_index.po b/documentation/content/en/books/porters-handbook/special/_index.po
index 0090fd50e0..cc43ab75b7 100644
--- a/documentation/content/en/books/porters-handbook/special/_index.po
+++ b/documentation/content/en/books/porters-handbook/special/_index.po
@@ -1,12655 +1,12658 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-01 10:13-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1
#, no-wrap
msgid "Special considerations when creating a new FreeBSD Port"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1
#, no-wrap
msgid "Chapter 6. Special Considerations"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/special/_index.adoc:13
#, no-wrap
msgid "Special Considerations"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:51
msgid ""
"This section explains the most common things to consider when creating a "
"port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:53
#, no-wrap
msgid "Staging"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:60
msgid ""
"[.filename]#bsd.port.mk# expects ports to work with a \"stage directory\". "
"This means that a port must not install files directly to the regular "
"destination directories (that is, under `PREFIX`, for example) but instead "
"into a separate directory from which the package is then built. In many "
"cases, this does not require root privileges, making it possible to build "
"packages as an unprivileged user. With staging, the port is built and "
"installed into the stage directory, `STAGEDIR`. A package is created from "
"the stage directory and then installed on the system. Automake tools refer "
"to this concept as `DESTDIR`, but in FreeBSD, `DESTDIR` has a different "
"meaning (see crossref:testing[porting-prefix,`PREFIX` and `DESTDIR`])."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:67
msgid ""
"No port _really_ needs to be root. It can mostly be avoided by using "
"crossref:uses[uses-uidfix,`USES=uidfix`]. If the port still runs commands "
"like man:chown[8], man:chgrp[1], or forces owner or group with man:"
"install[1] then use crossref:uses[uses-fakeroot,`USES=fakeroot`] to fake "
"those calls. Some patching of the port's [.filename]#Makefiles# will be "
"needed."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:72
msgid ""
"Meta ports, or ports that do not install files themselves but only depend on "
"other ports, must avoid needlessly extracting the man:mtree[8] to the stage "
"directory. This is the basic directory layout of the package, and these "
"empty directories will be seen as orphans. To prevent man:mtree[8] "
"extraction, add this line:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:76
#, no-wrap
msgid "NO_MTREE=\tyes\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:82
msgid ""
"Metaports should use <<uses-metaport,`USES=metaport`>>. It sets up defaults "
"for ports that do not fetch, build, or install anything."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:88
msgid ""
"Staging is enabled by prepending `STAGEDIR` to paths used in the `pre-"
"install`, `do-install`, and `post-install` targets (see the examples through "
"the book). Typically, this includes `PREFIX`, `ETCDIR`, `DATADIR`, "
"`EXAMPLESDIR`, `MANPREFIX`, `DOCSDIR`, and so on. Directories should be "
"created as part of the `post-install` target. Avoid using absolute paths "
"whenever possible."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:92
msgid ""
"Ports that install kernel modules must prepend `STAGEDIR` to their "
"destination, by default [.filename]#/boot/modules#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:95
#, no-wrap
msgid "Handling Symbolic Links"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:100
msgid ""
-"When creating a symbolic link, relative ones are strongly recommended. Use `"
-"${RLN}` to create relative symbolic links. It uses man:install[1] under the "
-"hood to automatically figure out the relative link to create."
+"When creating a symbolic link, relative ones are strongly recommended. Use "
+"`${RLN}` to create relative symbolic links. It uses man:install[1] under "
+"the hood to automatically figure out the relative link to create."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:102
#, no-wrap
msgid "Create Relative Symbolic Links Automatically"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:106
msgid ""
"`${RLN}` uses man:install[1]'s relative symbolic feature which frees the "
"porter of computing the relative path."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:112
#, no-wrap
msgid ""
"${RLN} ${STAGEDIR}${PREFIX}/lib/libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/libfoo.so\n"
"${RLN} ${STAGEDIR}${PREFIX}/libexec/foo/bar ${STAGEDIR}${PREFIX}/bin/bar\n"
"${RLN} ${STAGEDIR}/var/cache/foo ${STAGEDIR}${PREFIX}/share/foo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:115
msgid "Will generate:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:125
#, no-wrap
msgid ""
"% ls -lF ${STAGEDIR}${PREFIX}/lib\n"
"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 libfoo.so@ -> libfoo.so.42\n"
"-rwxr-xr-x 1 nobody nobody 15 Aug 3 11:24 libfoo.so.42*\n"
"% ls -lF ${STAGEDIR}${PREFIX}/bin\n"
"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 bar@ -> ../libexec/foo/bar\n"
"% ls -lF ${STAGEDIRDIR}${PREFIX}/share\n"
"lrwxr-xr-x 1 nobody nobody 181 Aug 3 11:27 foo@ -> ../../../var/cache/foo\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:130
#, no-wrap
msgid "Bundled Libraries"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:133
msgid ""
"This section explains why bundled dependencies are considered bad and what "
"to do about them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:135
#, no-wrap
msgid "Why Bundled Libraries Are Bad"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:140
msgid ""
"Some software requires the porter to locate third-party libraries and add "
"the required dependencies to the port. Other software bundles all necessary "
"libraries into the distribution file. The second approach seems easier at "
"first, but there are some serious drawbacks:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:142
msgid ""
"This list is loosely based on the https://fedoraproject.org/wiki/Packaging:"
"No_Bundled_Libraries[Fedora] and https://wiki.gentoo.org/wiki/"
"Why_not_bundle_dependencies[Gentoo] wikis, both licensed under the https://"
"creativecommons.org/licenses/by-sa/3.0/[CC-BY-SA 3.0] license."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:143
#, no-wrap
msgid "Security"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:149
msgid ""
"If vulnerabilities are found in the upstream library and fixed there, they "
"might not be fixed in the library bundled with the port. One reason could "
"be that the author is not aware of the problem. This means that the porter "
"must fix them, or upgrade to a non-vulnerable version, and send a patch to "
"the author. This all takes time, which results in software being vulnerable "
"longer than necessary. This in turn makes it harder to coordinate a fix "
"without unnecessarily leaking information about the vulnerability."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:150
#, no-wrap
msgid "Bugs"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:152
msgid ""
"This problem is similar to the problem with security in the last paragraph, "
"but generally less severe."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:153
#, no-wrap
msgid "Forking"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:157
msgid ""
"It is easier for the author to fork the upstream library once it is "
"bundled. While convenient on first sight, it means that the code diverges "
"from upstream making it harder to address security or other problems with "
"the software. A reason for this is that patching becomes harder."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:160
msgid ""
"Another problem of forking is that because code diverges from upstream, bugs "
"get solved over and over again instead of just once at a central location. "
"This defeats the idea of open source software in the first place."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:161
#, no-wrap
msgid "Symbol collision"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:166
msgid ""
"When a library is installed on the system, it might collide with the bundled "
"version. This can cause immediate errors at compile or link time. It can "
"also cause errors when running the program which might be harder to track "
"down. The latter problem could be caused because the versions of the two "
"libraries are incompatible."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:167
#, no-wrap
msgid "Licensing"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:169
msgid ""
"When bundling projects from different sources, license issues can arise more "
"easily, especially when licenses are incompatible."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:170
#, no-wrap
msgid "Waste of resources"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:174
msgid ""
"Bundled libraries waste resources on several levels. It takes longer to "
"build the actual application, especially if these libraries are already "
"present on the system. At run-time, they can take up unnecessary memory "
"when the system-wide library is already loaded by one program and the "
"bundled library is loaded by another program."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:175
#, no-wrap
msgid "Waste of effort"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:179
msgid ""
"When a library needs patches for FreeBSD, these patches have to be "
"duplicated again in the bundled library. This wastes developer time because "
"the patches might not apply cleanly. It can also be hard to notice that "
"these patches are required in the first place."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:181
#, no-wrap
msgid "What to do About Bundled Libraries"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:185
msgid ""
"Whenever possible, use the unbundled version of the library by adding a "
"`LIB_DEPENDS` to the port. If such a port does not exist yet, consider "
"creating it."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:187
msgid ""
"Only use bundled libraries if the upstream has a good track record on "
"security and using unbundled versions leads to overly complex patches."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:195
msgid ""
"In some very special cases, for example emulators, like Wine, a port has to "
"bundle libraries, because they are in a different architecture, or they have "
"been modified to fit the software's use. In that case, those libraries "
"should not be exposed to other ports for linking. Add `BUNDLE_LIBS=yes` to "
"the port's [.filename]#Makefile#. This will tell man:pkg[8] to not compute "
"provided libraries. Always ask the {portmgr} before adding this to a port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:198
#, no-wrap
msgid "Shared Libraries"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:202
msgid ""
"If the port installs one or more shared libraries, define a `USE_LDCONFIG` "
-"make variable, which will instruct a [.filename]#bsd.port.mk# to run `"
-"${LDCONFIG} -m` on the directory where the new library is installed (usually "
-"[.filename]#PREFIX/lib#) during `post-install` target to register it into "
-"the shared library cache. This variable, when defined, will also facilitate "
-"addition of an appropriate `@exec /sbin/ldconfig -m` and `@unexec /sbin/"
-"ldconfig -R` pair into [.filename]#pkg-plist#, so that a user who installed "
-"the package can start using the shared library immediately and de-"
-"installation will not cause the system to still believe the library is there."
+"make variable, which will instruct a [.filename]#bsd.port.mk# to run "
+"`${LDCONFIG} -m` on the directory where the new library is installed "
+"(usually [.filename]#PREFIX/lib#) during `post-install` target to register "
+"it into the shared library cache. This variable, when defined, will also "
+"facilitate addition of an appropriate `@exec /sbin/ldconfig -m` and "
+"`@unexec /sbin/ldconfig -R` pair into [.filename]#pkg-plist#, so that a user "
+"who installed the package can start using the shared library immediately and "
+"de-installation will not cause the system to still believe the library is "
+"there."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:206
#, no-wrap
msgid "USE_LDCONFIG=\tyes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:210
msgid ""
"The default directory can be overridden by setting `USE_LDCONFIG` to a list "
"of directories into which shared libraries are to be installed. For "
"example, if the port installs shared libraries into [.filename]#PREFIX/lib/"
"foo# and [.filename]#PREFIX/lib/bar# use this in [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:214
#, no-wrap
msgid "USE_LDCONFIG=\t${PREFIX}/lib/foo ${PREFIX}/lib/bar\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:217
msgid ""
"Please double-check, often this is not necessary at all or can be avoided "
"through `-rpath` or setting `LD_RUN_PATH` during linking (see package:lang/"
"mosml[] for an example), or through a shell-wrapper which sets "
"`LD_LIBRARY_PATH` before invoking the binary, like package:www/seamonkey[] "
"does."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:219
msgid ""
"When installing 32-bit libraries on a 64-bit system, use `USE_LDCONFIG32` "
"instead."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:221
msgid ""
"If the software uses <<using-autotools,autotools>>, and specifically "
"`libtool`, add crossref:uses[uses-libtool,`USES=libtool`]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:223
msgid ""
"When the major library version number increments in the update to the new "
"port version, all other ports that link to the affected library must have "
"their `PORTREVISION` incremented, to force recompilation with the new "
"library version."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:225
#, no-wrap
msgid "Ports with Distribution Restrictions or Legal Concerns"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:228
msgid ""
"Licenses vary, and some of them place restrictions on how the application "
"can be packaged, whether it can be sold for profit, and so on."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:233
msgid ""
"It is the responsibility of a porter to read the licensing terms of the "
"software and make sure that the FreeBSD project will not be held accountable "
"for violating them by redistributing the source or compiled binaries either "
"via FTP/HTTP or CD-ROM. If in doubt, please contact the {freebsd-ports}."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:236
msgid ""
"In situations like this, the variables described in the next sections can be "
"set."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:238
#, no-wrap
msgid "`NO_PACKAGE`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:242
msgid ""
"This variable indicates that we may not generate a binary package of the "
"application. For instance, the license may disallow binary redistribution, "
"or it may prohibit distribution of packages created from patched sources."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:245
msgid ""
"However, the port's `DISTFILES` may be freely mirrored on FTP/HTTP. They "
"may also be distributed on a CD-ROM (or similar media) unless `NO_CDROM` is "
"set as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:248
msgid ""
"If the binary package is not generally useful, and the application must "
"always be compiled from the source code, use `NO_PACKAGE`. For example, if "
"the application has configuration information that is site specific hard "
"coded into it at compile time, set `NO_PACKAGE`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:250
msgid ""
"Set `NO_PACKAGE` to a string describing the reason why the package cannot be "
"generated."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:252
#, no-wrap
msgid "`NO_CDROM`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:256
msgid ""
"This variable alone indicates that, although we are allowed to generate "
"binary packages, we may put neither those packages nor the port's "
"`DISTFILES` onto a CD-ROM (or similar media) for resale. However, the "
"binary packages and the port's `DISTFILES` will still be available via FTP/"
"HTTP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:258
msgid ""
"If this variable is set along with `NO_PACKAGE`, then only the port's "
"`DISTFILES` will be available, and only via FTP/HTTP."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:261
msgid ""
"Set `NO_CDROM` to a string describing the reason why the port cannot be "
"redistributed on CD-ROM. For instance, use this if the port's license is "
"for \"non-commercial\" use only."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:263
#, no-wrap
msgid "`NOFETCHFILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:267
msgid ""
"Files defined in `NOFETCHFILES` are not fetchable from any of "
"`MASTER_SITES`. An example of such a file is when the file is supplied on "
"CD-ROM by the vendor."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:269
msgid ""
"Tools which check for the availability of these files on `MASTER_SITES` have "
"to ignore these files and not report about them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:271
#, no-wrap
msgid "`RESTRICTED`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:274
msgid ""
"Set this variable alone if the application's license permits neither "
"mirroring the application's `DISTFILES` nor distributing the binary package "
"in any way."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:276
msgid ""
"Do not set `NO_CDROM` or `NO_PACKAGE` along with `RESTRICTED`, since the "
"latter variable implies the former ones."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:280
msgid ""
"Set `RESTRICTED` to a string describing the reason why the port cannot be "
"redistributed. Typically, this indicates that the port contains proprietary "
"software and that the user will need to manually download the `DISTFILES`, "
"possibly after registering for the software or agreeing to accept the terms "
"of an EULA."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:282
#, no-wrap
msgid "`RESTRICTED_FILES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:286
msgid ""
-"When `RESTRICTED` or `NO_CDROM` is set, this variable defaults to `"
-"${DISTFILES} ${PATCHFILES}`, otherwise it is empty. If only some of the "
+"When `RESTRICTED` or `NO_CDROM` is set, this variable defaults to "
+"`${DISTFILES} ${PATCHFILES}`, otherwise it is empty. If only some of the "
"distribution files are restricted, then set this variable to list them."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:288
#, no-wrap
msgid "`LEGAL_TEXT`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:292
msgid ""
"If the port has legal concerns not addressed by the above variables, set "
"`LEGAL_TEXT` to a string explaining the concern. For example, if special "
"permission was obtained for FreeBSD to redistribute the binary, this "
"variable must indicate so."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:294
#, no-wrap
msgid "[.filename]#/usr/ports/LEGAL# and `LEGAL`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:300
msgid ""
"A port which sets any of the above variables must also be added to [."
"filename]#/usr/ports/LEGAL#. The first column is a glob which matches the "
"restricted distfiles. The second column is the port's origin. The third "
"column is the output of `make -VLEGAL`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:302
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4247
#, no-wrap
msgid "Examples"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:305
msgid ""
"The preferred way to state \"the distfiles for this port must be fetched "
"manually\" is as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:311
#, no-wrap
msgid ""
".if !exists(${DISTDIR}/${DISTNAME}${EXTRACT_SUFX})\n"
"IGNORE=\tmay not be redistributed because of licensing reasons. Please visit some-website to accept their license and download ${DISTFILES} into ${DISTDIR}\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:314
msgid ""
"This both informs the user, and sets the proper metadata on the user's "
"machine for use by automated programs."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:316
msgid ""
"Note that this stanza must be preceded by an inclusion of [.filename]#bsd."
"port.pre.mk#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:318
#, no-wrap
msgid "Building Mechanisms"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:321
#, no-wrap
msgid "Building Ports in Parallel"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:325
msgid ""
"The FreeBSD ports framework supports parallel building using multiple `make` "
"sub-processes, which allows SMP systems to utilize all of their available "
"CPU power, allowing port builds to be faster and more effective."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:330
msgid ""
"This is achieved by passing `-jX` flag to man:make[1] running on vendor "
"code. This is the default build behavior of ports. Unfortunately, not all "
"ports handle parallel building well and it may be required to explicitly "
"disable this feature by adding the `MAKE_JOBS_UNSAFE=yes` variable. It is "
"used when a port is known to be broken with `-jX` due to race conditions "
"causing intermittent build failures."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:335
msgid ""
"When setting `MAKE_JOBS_UNSAFE`, it is very important to explain either with "
"a comment in the [.filename]#Makefile#, or at least in the commit message, "
"_why_ the port does not build when enabling. Otherwise, it is almost "
"impossible to either fix the problem, or test if it has been fixed when "
"committing an update at a later date."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:338
#, no-wrap
msgid "`make`, `gmake`, and `imake`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:341
msgid ""
"Several differing `make` implementations exist. Ported software often "
"requires a particular implementation, like GNU`make`, known in FreeBSD as "
"`gmake`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:343
msgid "If the port uses GNU make, add `gmake` to `USES`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:346
msgid ""
"`MAKE_CMD` can be used to reference the specific command configured by the "
"`USES` setting in the port's [.filename]#Makefile#. Only use `MAKE_CMD` "
"within the application [.filename]##Makefile##s in `WRKSRC` to call the "
"`make` implementation expected by the ported software."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:349
msgid ""
"If the port is an X application that uses imake to create [."
"filename]##Makefile##s from [.filename]##Imakefile##s, set `USES= imake`. "
"See the crossref:uses[uses-imake,`USES=imake`] section of crossref:uses[uses,"
"Using `USES` Macros] for more details."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:352
msgid ""
"If the port's source [.filename]#Makefile# has something other than `all` as "
"the main build target, set `ALL_TARGET` accordingly. The same goes for "
"`install` and `INSTALL_TARGET`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:354
#, no-wrap
msgid "`configure` Script"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:359
msgid ""
"If the port uses the `configure` script to generate [.filename]#Makefile# "
"from [.filename]#Makefile.in#, set `GNU_CONFIGURE=yes`. To give extra "
-"arguments to the `configure` script (the default argument is `--prefix="
-"${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man --build="
-"${CONFIGURE_TARGET}`), set those extra arguments in `CONFIGURE_ARGS`. Extra "
-"environment variables can be passed using `CONFIGURE_ENV`."
+"arguments to the `configure` script (the default argument is `--"
+"prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man "
+"--build=${CONFIGURE_TARGET}`), set those extra arguments in "
+"`CONFIGURE_ARGS`. Extra environment variables can be passed using "
+"`CONFIGURE_ENV`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:361
#, no-wrap
msgid "Variables for Ports That Use `configure`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:365
#: documentation/content/en/books/porters-handbook/special/_index.adoc:393
#: documentation/content/en/books/porters-handbook/special/_index.adoc:419
#: documentation/content/en/books/porters-handbook/special/_index.adoc:502
#: documentation/content/en/books/porters-handbook/special/_index.adoc:782
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2413
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2433
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3136
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3167
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3678
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3703
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3809
#, no-wrap
msgid "Variable"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:367
#: documentation/content/en/books/porters-handbook/special/_index.adoc:395
#: documentation/content/en/books/porters-handbook/special/_index.adoc:421
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1295
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3138
#, no-wrap
msgid "Means"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:368
#, no-wrap
msgid "`GNU_CONFIGURE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:370
#, no-wrap
msgid "The port uses `configure` script to prepare build."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:371
#, no-wrap
msgid "`HAS_CONFIGURE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:373
#, no-wrap
msgid "Same as `GNU_CONFIGURE`, except default configure target is not added to `CONFIGURE_ARGS`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:374
#, no-wrap
msgid "`CONFIGURE_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:376
#, no-wrap
msgid "Additional arguments passed to `configure` script."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:377
#: documentation/content/en/books/porters-handbook/special/_index.adoc:411
#, no-wrap
msgid "`CONFIGURE_ENV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:379
#, no-wrap
msgid "Additional environment variables to be set for `configure` script run."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:380
#, no-wrap
msgid "`CONFIGURE_TARGET`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:381
#, no-wrap
msgid "Override default configure target. Default value is `${MACHINE_ARCH}-portbld-freebsd${OSREL}`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:384
#, no-wrap
msgid "Using `cmake`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:387
msgid "For ports that use CMake, define `USES= cmake`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:389
#, no-wrap
msgid "Variables for Ports That Use `cmake`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:396
#, no-wrap
msgid "`CMAKE_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:398
#, no-wrap
msgid "Port specific CMake flags to be passed to the `cmake` binary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:399
#, no-wrap
msgid "`CMAKE_ON`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:401
#, no-wrap
msgid "For each entry in `CMAKE_ON`, an enabled boolean value is added to `CMAKE_ARGS`. See <<using-cmake-example2>>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:402
#, no-wrap
msgid "`CMAKE_OFF`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:404
#, no-wrap
msgid "For each entry in `CMAKE_OFF`, a disabled boolean value is added to `CMAKE_ARGS`. See <<using-cmake-example2>>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:405
#, no-wrap
msgid "`CMAKE_BUILD_TYPE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:407
#, no-wrap
msgid "Type of build (CMake predefined build profiles). Default is `Release`, or `Debug` if `WITH_DEBUG` is set."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:408
#, no-wrap
msgid "`CMAKE_SOURCE_PATH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:410
#, no-wrap
msgid "Path to the source directory. Default is `${WRKSRC}`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:412
#, no-wrap
msgid "Additional environment variables to be set for the `cmake` binary."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:415
#, no-wrap
msgid "Variables the Users Can Define for `cmake` Builds"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:422
#, no-wrap
msgid "`CMAKE_NOCOLOR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:423
#, no-wrap
msgid "Disables color build output. Default not set, unless `BATCH` or `PACKAGE_BUILDING` are set."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:430
msgid ""
"CMake supports these build profiles: `Debug`, `Release`, `RelWithDebInfo` "
"and `MinSizeRel`. `Debug` and `Release` profiles respect system `\\*FLAGS`, "
"`RelWithDebInfo` and `MinSizeRel` will set `CFLAGS` to `-O2 -g` and `-Os -"
"DNDEBUG` correspondingly. The lower-cased value of `CMAKE_BUILD_TYPE` is "
"exported to `PLIST_SUB` and must be used if the port installs [.filename]#*."
"cmake# depending on the build type (see package:devel/kf5-kcrash[] for an "
"example). Please note that some projects may define their own build "
"profiles and/or force particular build type by setting `CMAKE_BUILD_TYPE` in "
"[.filename]#CMakeLists.txt#. To make a port for such a project respect "
"`CFLAGS` and `WITH_DEBUG`, the `CMAKE_BUILD_TYPE` definitions must be "
"removed from those files."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:435
msgid ""
"Most CMake-based projects support an out-of-source method of building. The "
"out-of-source build for a port is the default setting. An in-source build "
"can be requested by using the `:insource` suffix. With out-of-source "
"builds, `CONFIGURE_WRKSRC`, `BUILD_WRKSRC` and `INSTALL_WRKSRC` will be set "
"to `${WRKDIR}/.build` and this directory will be used to keep all files "
"generated during configuration and build stages, leaving the source "
"directory intact."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:437
#, no-wrap
msgid "`USES= cmake` Example"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:442
msgid ""
"This snippet demonstrates the use of CMake for a port. `CMAKE_SOURCE_PATH` "
"is not usually required, but can be set when the sources are not located in "
"the top directory, or if only a subset of the project is intended to be "
"built by the port."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:447
#, no-wrap
msgid ""
"USES=\t\t\tcmake\n"
"CMAKE_SOURCE_PATH=\t${WRKSRC}/subproject\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:452
#, no-wrap
msgid "`CMAKE_ON` and `CMAKE_OFF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:456
msgid ""
"When adding boolean values to `CMAKE_ARGS`, it is easier to use the "
"`CMAKE_ON` and `CMAKE_OFF` variables instead. This:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:461
#, no-wrap
msgid ""
"CMAKE_ON=\tVAR1 VAR2\n"
"CMAKE_OFF=\tVAR3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:464
msgid "Is equivalent to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:468
#, no-wrap
msgid "CMAKE_ARGS=\t-DVAR1:BOOL=TRUE -DVAR2:BOOL=TRUE -DVAR3:BOOL=FALSE\n"
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/special/_index.adoc:474
msgid ""
"This is only for the default values off `CMAKE_ARGS`. The helpers described "
"in crossref:makefiles[options-cmake_bool,`OPT_CMAKE_BOOL` and "
"`OPT_CMAKE_BOOL_OFF`] use the same semantics, but for optional values."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:479
#, no-wrap
msgid "Using `scons`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:482
msgid "If the port uses SCons, define `USES=scons`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:484
msgid ""
"To make third party [.filename]#SConstruct# respect everything that is "
"passed to SCons in the environment (that is, most importantly, `CC/CXX/"
"CFLAGS/CXXFLAGS`), patch [.filename]#SConstruct# so build `Environment` is "
"constructed like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:488
#, no-wrap
msgid "env = Environment(**ARGUMENTS)\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:491
msgid "It may be then modified with `env.Append` and `env.Replace`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:493
#, no-wrap
msgid "Building Rust Applications with `cargo`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:496
msgid "For ports that use Cargo, define `USES=cargo`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:498
#, no-wrap
msgid "Variables the Users Can Define for `cargo` Builds"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:503
#, no-wrap
msgid "Default"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:505
#: documentation/content/en/books/porters-handbook/special/_index.adoc:784
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1699
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1867
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1885
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2053
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2119
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2363
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2380
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2415
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2435
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2511
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3090
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3680
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3704
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3810
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3844
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3887
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3913
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4017
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4187
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4239
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:506
#, no-wrap
msgid "`CARGO_CRATES`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:509
#, no-wrap
msgid "List of crates the port depends on. Each entry needs to have a format like `cratename-semver` for example, `libc-0.2.40`. Port maintainers can generate this list from [.filename]#Cargo.lock# using `make cargo-crates`. Manually bumping crate versions is possible but be mindful of transitive dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:510
#, no-wrap
msgid "`CARGO_FEATURES`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:513
#, no-wrap
msgid "List of application features to build (space separated list). To deactivate all default features add the special token `--no-default-features` to `CARGO_FEATURES`. Manually passing it to `CARGO_BUILD_ARGS`, `CARGO_INSTALL_ARGS`, and `CARGO_TEST_ARGS` is not needed."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:514
#, no-wrap
msgid "`CARGO_CARGOTOML`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:515
#, no-wrap
msgid "`${WRKSRC}/Cargo.toml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:517
#, no-wrap
msgid "The path to the [.filename]#Cargo.toml# to use."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:518
#, no-wrap
msgid "`CARGO_CARGOLOCK`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:519
#, no-wrap
msgid "`${WRKSRC}/Cargo.lock`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:521
#, no-wrap
msgid "The path to the [.filename]#Cargo.lock# to use for `make cargo-crates`. It is possible to specify more than one lock file when necessary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:522
#, no-wrap
msgid "`CARGO_ENV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:525
#, no-wrap
msgid "A list of environment variables to pass to Cargo similar to `MAKE_ENV`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:526
#, no-wrap
msgid "`RUSTFLAGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:529
#, no-wrap
msgid "Flags to pass to the Rust compiler."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:530
#, no-wrap
msgid "`CARGO_CONFIGURE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:531
#: documentation/content/en/books/porters-handbook/special/_index.adoc:539
#: documentation/content/en/books/porters-handbook/special/_index.adoc:547
#: documentation/content/en/books/porters-handbook/special/_index.adoc:555
#: documentation/content/en/books/porters-handbook/special/_index.adoc:567
#, no-wrap
msgid "`yes`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:533
#, no-wrap
msgid "Use the default `do-configure`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:534
#, no-wrap
msgid "`CARGO_UPDATE_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:537
#, no-wrap
msgid "Extra arguments to pass to Cargo during the configure phase. Valid arguments can be looked up with `cargo update --help`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:538
#, no-wrap
msgid "`CARGO_BUILDDEP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:541
#, no-wrap
msgid "Add a build dependency on package:lang/rust[]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:542
#, no-wrap
msgid "`CARGO_CARGO_BIN`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:543
#, no-wrap
msgid "`${LOCALBASE}/bin/cargo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:545
#, no-wrap
msgid "Location of the `cargo` binary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:546
#, no-wrap
msgid "`CARGO_BUILD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:549
#, no-wrap
msgid "Use the default `do-build`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:550
#, no-wrap
msgid "`CARGO_BUILD_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:553
#, no-wrap
msgid "Extra arguments to pass to Cargo during the build phase. Valid arguments can be looked up with `cargo build --help`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:554
#, no-wrap
msgid "`CARGO_INSTALL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:557
#, no-wrap
msgid "Use the default `do-install`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:558
#, no-wrap
msgid "`CARGO_INSTALL_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:561
#, no-wrap
msgid "Extra arguments to pass to Cargo during the install phase. Valid arguments can be looked up with `cargo install --help`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:562
#, no-wrap
msgid "`CARGO_INSTALL_PATH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:563
#, no-wrap
msgid "`.`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:565
#, no-wrap
msgid "Path to the crate to install. This is passed to `cargo install` via its `--path` argument. When multiple paths are specified `cargo install` is run multiple times."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:566
#, no-wrap
msgid "`CARGO_TEST`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:569
#, no-wrap
msgid "Use the default `do-test`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:570
#, no-wrap
msgid "`CARGO_TEST_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:573
#, no-wrap
msgid "Extra arguments to pass to Cargo during the test phase. Valid arguments can be looked up with `cargo test --help`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:574
#, no-wrap
msgid "`CARGO_TARGET_DIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:575
#, no-wrap
msgid "`${WRKDIR}/target`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:577
#, no-wrap
msgid "Location of the cargo output directory."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:578
#, no-wrap
msgid "`CARGO_DIST_SUBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:579
#, no-wrap
msgid "[.filename]#rust/crates#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:581
#, no-wrap
msgid "Directory relative to `DISTDIR` where the crate distribution files will be stored."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:582
#, no-wrap
msgid "`CARGO_VENDOR_DIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:583
#, no-wrap
msgid "`${WRKSRC}/cargo-crates`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:585
#, no-wrap
msgid "Location of the vendor directory where all crates will be extracted to. Try to keep this under `PATCH_WRKSRC`, so that patches can be applied easily."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:586
#, no-wrap
msgid "`CARGO_USE_GITHUB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:587
#: documentation/content/en/books/porters-handbook/special/_index.adoc:591
#, no-wrap
msgid "`no`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:589
#, no-wrap
msgid "Enable fetching of crates locked to specific Git commits on GitHub via `GH_TUPLE`. This will try to patch all [.filename]#Cargo.toml# under `WRKDIR` to point to the offline sources instead of fetching them from a Git repository during the build."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:590
#, no-wrap
msgid "`CARGO_USE_GITLAB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:592
#, no-wrap
msgid "Same as `CARGO_USE_GITHUB` but for GitLab instances and `GL_TUPLE`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:595
#, no-wrap
msgid "Creating a Port for a Simple Rust Application"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:600
msgid ""
"Creating a Cargo based port is a three stage process. First we need to "
"provide a ports template that fetches the application distribution file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:607
#: documentation/content/en/books/porters-handbook/special/_index.adoc:652
#, no-wrap
msgid ""
"PORTNAME=\ttokei\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t7.0.2\n"
"CATEGORIES=\tdevel\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:611
#: documentation/content/en/books/porters-handbook/special/_index.adoc:656
#, no-wrap
msgid ""
"MAINTAINER=\ttobik@FreeBSD.org\n"
"COMMENT=\tDisplay statistics about your code\n"
"WWW=\t\thttps://github.com/XAMPPRocky/tokei/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:615
#: documentation/content/en/books/porters-handbook/special/_index.adoc:660
#, no-wrap
msgid ""
"USES=\t\tcargo\n"
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tAaronepower\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:617
#: documentation/content/en/books/porters-handbook/special/_index.adoc:670
#: documentation/content/en/books/porters-handbook/special/_index.adoc:837
#: documentation/content/en/books/porters-handbook/special/_index.adoc:860
#: documentation/content/en/books/porters-handbook/special/_index.adoc:918
#: documentation/content/en/books/porters-handbook/special/_index.adoc:989
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1076
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1092
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1106
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1223
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1244
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1613
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3437
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3497
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3613
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4271
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4295
#, no-wrap
msgid ".include <bsd.port.mk>\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:620
#: documentation/content/en/books/porters-handbook/special/_index.adoc:863
msgid "Generate an initial [.filename]#distinfo#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:628
#, no-wrap
msgid ""
"% make makesum\n"
"=> Aaronepower-tokei-v7.0.2_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://codeload.github.com/Aaronepower/tokei/tar.gz/v7.0.2?dummy=/Aaronepower-tokei-v7.0.2_GH0.tar.gz\n"
"fetch: https://codeload.github.com/Aaronepower/tokei/tar.gz/v7.0.2?dummy=/Aaronepower-tokei-v7.0.2_GH0.tar.gz: size of remote file is not known\n"
"Aaronepower-tokei-v7.0.2_GH0.tar.gz 45 kB 239 kBps 00m00s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:631
msgid ""
"Now the distribution file is ready to use and we can go ahead and extract "
"crate dependencies from the bundled [.filename]#Cargo.lock#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:642
#, no-wrap
msgid ""
"% make cargo-crates\n"
"CARGO_CRATES= aho-corasick-0.6.4 \\\n"
" ansi_term-0.11.0 \\\n"
" arrayvec-0.4.7 \\\n"
" atty-0.2.9 \\\n"
" bitflags-1.0.1 \\\n"
" byteorder-1.2.2 \\\n"
" [...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:645
#: documentation/content/en/books/porters-handbook/special/_index.adoc:893
msgid ""
"The output of this command needs to be pasted directly into the Makefile:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:668
#, no-wrap
msgid ""
"CARGO_CRATES= aho-corasick-0.6.4 \\\n"
" ansi_term-0.11.0 \\\n"
" arrayvec-0.4.7 \\\n"
" atty-0.2.9 \\\n"
" bitflags-1.0.1 \\\n"
" byteorder-1.2.2 \\\n"
" [...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:673
msgid ""
"[.filename]#distinfo# needs to be regenerated to contain all the crate "
"distribution files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:691
#, no-wrap
msgid ""
"% make makesum\n"
"=> rust/crates/aho-corasick-0.6.4.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://crates.io/api/v1/crates/aho-corasick/0.6.4/download?dummy=/rust/crates/aho-corasick-0.6.4.tar.gz\n"
"rust/crates/aho-corasick-0.6.4.tar.gz 100% of 24 kB 6139 kBps 00m00s\n"
"=> rust/crates/ansi_term-0.11.0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://crates.io/api/v1/crates/ansi_term/0.11.0/download?dummy=/rust/crates/ansi_term-0.11.0.tar.gz\n"
"rust/crates/ansi_term-0.11.0.tar.gz 100% of 16 kB 21 MBps 00m00s\n"
"=> rust/crates/arrayvec-0.4.7.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://crates.io/api/v1/crates/arrayvec/0.4.7/download?dummy=/rust/crates/arrayvec-0.4.7.tar.gz\n"
"rust/crates/arrayvec-0.4.7.tar.gz 100% of 22 kB 3237 kBps 00m00s\n"
"=> rust/crates/atty-0.2.9.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://crates.io/api/v1/crates/atty/0.2.9/download?dummy=/rust/crates/atty-0.2.9.tar.gz\n"
"rust/crates/atty-0.2.9.tar.gz 100% of 5898 B 81 MBps 00m00s\n"
"=> rust/crates/bitflags-1.0.1.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:694
#: documentation/content/en/books/porters-handbook/special/_index.adoc:937
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1049
msgid ""
"The port is now ready for a test build and further adjustments like creating "
"a plist, writing a description, adding license information, options, etc. as "
"normal."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:696
#: documentation/content/en/books/porters-handbook/special/_index.adoc:939
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1051
msgid ""
"If you are not testing your port in a clean environment like with Poudriere, "
"remember to run `make clean` before any testing."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:699
#, no-wrap
msgid "Enabling Additional Application Features"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:704
msgid ""
"Some applications define additional features in their [.filename]#Cargo."
"toml#. They can be compiled in by setting `CARGO_FEATURES` in the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:706
msgid "Here we enable Tokei's `json` and `yaml` features:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:710
#, no-wrap
msgid "CARGO_FEATURES=\tjson yaml\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:715
#, no-wrap
msgid "Encoding Application Features As Port Options"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:719
msgid ""
"An example `[features]` section in [.filename]#Cargo.toml# could look like "
"this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:726
#, no-wrap
msgid ""
"[features]\n"
"pulseaudio_backend = [\"librespot-playback/pulseaudio-backend\"]\n"
"portaudio_backend = [\"librespot-playback/portaudio-backend\"]\n"
"default = [\"pulseaudio_backend\"]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:731
msgid ""
"`pulseaudio_backend` is a default feature. It is always enabled unless we "
"explicitly turn off default features by adding `--no-default-features` to "
"`CARGO_FEATURES`. Here we turn the `portaudio_backend` and "
"`pulseaudio_backend` features into port options:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:735
#, no-wrap
msgid "CARGO_FEATURES=\t--no-default-features\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:737
#, no-wrap
msgid "OPTIONS_DEFINE=\tPORTAUDIO PULSEAUDIO\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:740
#, no-wrap
msgid ""
"PORTAUDIO_VARS=\t\tCARGO_FEATURES+=portaudio_backend\n"
"PULSEAUDIO_VARS=\tCARGO_FEATURES+=pulseaudio_backend\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:745
#, no-wrap
msgid "Listing Crate Licenses"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:751
msgid ""
"Crates have their own licenses. It is important to know what they are when "
"adding a `LICENSE` block to the port (see crossref:makefiles[licenses,"
"Licenses]). The helper target `cargo-crates-licenses` will try to list all "
"the licenses of all crates defined in `CARGO_CRATES`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:762
#, no-wrap
msgid ""
"% make cargo-crates-licenses\n"
"aho-corasick-0.6.4 Unlicense/MIT\n"
"ansi_term-0.11.0 MIT\n"
"arrayvec-0.4.7 MIT/Apache-2.0\n"
"atty-0.2.9 MIT\n"
"bitflags-1.0.1 MIT/Apache-2.0\n"
"byteorder-1.2.2 Unlicense/MIT\n"
"[...]\n"
msgstr ""
#. type: delimited block = 6
#: documentation/content/en/books/porters-handbook/special/_index.adoc:768
msgid ""
"The license names `make cargo-crates-licenses` outputs are SPDX 2.1 licenses "
"expression which do not match the license names defined in the ports "
"framework. They need to be translated to the names from crossref:"
"makefiles[licenses-license-list,Predefined License List]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:773
#, no-wrap
msgid "Using `meson`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:776
msgid "For ports that use Meson, define `USES=meson`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:778
#, no-wrap
msgid "Variables for Ports That Use `meson`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:785
#, no-wrap
msgid "`MESON_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:787
#, no-wrap
msgid "Port specific Meson flags to be passed to the `meson` binary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:788
#, no-wrap
msgid "`MESON_BUILD_DIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:789
#, no-wrap
msgid "Path to the build directory relative to `WRKSRC`. Default is `_build`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:792
#, no-wrap
msgid "`USES=meson` Example"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:796
msgid "This snippet demonstrates the use of Meson for a port."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:801
#, no-wrap
msgid ""
"USES=\t\tmeson\n"
"MESON_ARGS=\t-Dfoo=enabled\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:806
#, no-wrap
msgid "Building Go Applications"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:810
msgid ""
"For ports that use Go, define `USES=go`. Refer to crossref:uses[uses-go,"
"`go`] for a list of variables that can be set to control the build process."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:812
#, no-wrap
msgid "Creating a Port for a Go Modules Based Application"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:816
msgid ""
"In most cases, it is sufficient to set the `GO_MODULE` variable to the value "
"specified by the `module` directive in `go.mod`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:823
#, no-wrap
msgid ""
"PORTNAME= hey\n"
"PORTVERSION= 0.1.4\n"
"DISTVERSIONPREFIX= v\n"
"CATEGORIES= benchmarks\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:827
#, no-wrap
msgid ""
"MAINTAINER= dmgk@FreeBSD.org\n"
"COMMENT= Tiny program that sends some load to a web application\n"
"WWW= https://github.com/rakyll/hey/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:830
#, no-wrap
msgid ""
"LICENSE= APACHE20\n"
"LICENSE_FILE= ${WRKSRC}/LICENSE\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:833
#, no-wrap
msgid ""
"USES= go:modules\n"
"GO_MODULE= github.com/rakyll/hey\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:835
#, no-wrap
msgid "PLIST_FILES= bin/hey\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:840
msgid ""
"If the \"easy\" way is not adequate or more control over dependencies is "
"needed, the full porting process is described below."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:843
msgid ""
"Creating a Go-based port is a five-stage process. First we need to provide "
"a ports template that fetches the application distribution file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:850
#: documentation/content/en/books/porters-handbook/special/_index.adoc:900
#, no-wrap
msgid ""
"PORTNAME=\tghq\n"
"DISTVERSIONPREFIX=\tv\n"
"DISTVERSION=\t0.12.5\n"
"CATEGORIES=\tdevel\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:854
#: documentation/content/en/books/porters-handbook/special/_index.adoc:904
#, no-wrap
msgid ""
"MAINTAINER=\ttobik@FreeBSD.org\n"
"COMMENT=\tRemote repository management made easy\n"
"WWW=\t\thttps://github.com/x-motemen/ghq/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:858
#, no-wrap
msgid ""
"USES=\t\tgo:modules\n"
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tmotemen\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:872
#, no-wrap
msgid ""
"% make makesum\n"
"===> License MIT accepted by the user\n"
"=> motemen-ghq-v0.12.5_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz\n"
"fetch: https://codeload.github.com/motemen/ghq/tar.gz/v0.12.5?dummy=/motemen-ghq-v0.12.5_GH0.tar.gz: size of remote file is not known\n"
"motemen-ghq-v0.12.5_GH0.tar.gz 32 kB 177 kBps 00s\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:876
msgid ""
"Now the distribution file is ready to use and we can extract the required Go "
"module dependencies. This step requires having package:ports-mgmt/"
"modules2tuple[] installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:890
#, no-wrap
msgid ""
"% make gomod-vendor\n"
"[...]\n"
"GH_TUPLE=\t\\\n"
"\t\tSongmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \\\n"
"\t\tdaviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \\\n"
"\t\tgo-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \\\n"
"\t\tgolang:net:3ec191127204:golang_net/vendor/golang.org/x/net \\\n"
"\t\tgolang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \\\n"
"\t\tgolang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \\\n"
"\t\tmotemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \\\n"
"\t\turfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:916
#, no-wrap
msgid ""
"USES=\t\tgo:modules\n"
"USE_GITHUB=\tyes\n"
"GH_ACCOUNT=\tmotemen\n"
"GH_TUPLE=\tSongmu:gitconfig:v0.0.2:songmu_gitconfig/vendor/github.com/Songmu/gitconfig \\\n"
"\t\tdaviddengcn:go-colortext:186a3d44e920:daviddengcn_go_colortext/vendor/github.com/daviddengcn/go-colortext \\\n"
"\t\tgo-yaml:yaml:v2.2.2:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \\\n"
"\t\tgolang:net:3ec191127204:golang_net/vendor/golang.org/x/net \\\n"
"\t\tgolang:sync:112230192c58:golang_sync/vendor/golang.org/x/sync \\\n"
"\t\tgolang:xerrors:3ee3066db522:golang_xerrors/vendor/golang.org/x/xerrors \\\n"
"\t\tmotemen:go-colorine:45d19169413a:motemen_go_colorine/vendor/github.com/motemen/go-colorine \\\n"
"\t\turfave:cli:v1.20.0:urfave_cli/vendor/github.com/urfave/cli\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:921
msgid ""
"[.filename]#distinfo# needs to be regenerated to contain all the "
"distribution files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:934
#, no-wrap
msgid ""
"% make makesum\n"
"=> Songmu-gitconfig-v0.0.2_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz\n"
"fetch: https://codeload.github.com/Songmu/gitconfig/tar.gz/v0.0.2?dummy=/Songmu-gitconfig-v0.0.2_GH0.tar.gz: size of remote file is not known\n"
"Songmu-gitconfig-v0.0.2_GH0.tar.gz 5662 B 936 kBps 00s\n"
"=> daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz doesn't seem to exist in /usr/ports/distfiles/.\n"
"=> Attempting to fetch https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz\n"
"fetch: https://codeload.github.com/daviddengcn/go-colortext/tar.gz/186a3d44e920?dummy=/daviddengcn-go-colortext-186a3d44e920_GH0.tar.gz: size of remote file is not known\n"
"daviddengcn-go-colortext-186a3d44e920_GH0.tar. 4534 B 1098 kBps 00s\n"
"[...]\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:942
#, no-wrap
msgid "Setting Output Binary Name or Installation Path"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:947
msgid ""
"Some ports need to install the resulting binary under a different name or to "
"a path other than the default `${PREFIX}/bin`. This can be done by using "
"`GO_TARGET` tuple syntax, for example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:951
#, no-wrap
msgid "GO_TARGET= ./cmd/ipfs:ipfs-go\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:954
msgid "will install `ipfs` binary as `${PREFIX}/bin/ipfs-go` and"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:958
#, no-wrap
msgid "GO_TARGET= ./dnscrypt-proxy:${PREFIX}/sbin/dnscrypt-proxy\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:961
msgid "will install `dnscrypt-proxy` to `${PREFIX}/sbin`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:964
#, no-wrap
msgid "Building Haskell Applications with `cabal`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:968
msgid ""
"For ports that use Cabal, build system defines `USES=cabal`. Refer to "
"crossref:uses[uses-cabal,`cabal`] for a list of variables that can be set to "
"control the build process."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:970
#, no-wrap
msgid "Creating a Port for a Hackage-hosted Haskell Application"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:975
msgid ""
"When preparing a Haskell Cabal port, package:devel/hs-cabal-install[] and "
"package:ports-mgmt/hs-cabal2tuple[] programs are required, so make sure they "
"are installed beforehand. First we need to define common ports variables "
"that allow cabal-install to fetch the package distribution file:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:981
#, no-wrap
msgid ""
"PORTNAME=\tShellCheck\n"
"DISTVERSION=\t0.6.0\n"
"CATEGORIES=\tdevel\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:985
#, no-wrap
msgid ""
"MAINTAINER=\thaskell@FreeBSD.org\n"
"COMMENT=\tShell script analysis tool\n"
"WWW=\t\thttps://www.shellcheck.net/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:987
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1070
#, no-wrap
msgid "USES=\t\tcabal\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:992
msgid ""
"This minimal Makefile fetches the distribution file with the `cabal-extract` "
"helper target:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1002
#, no-wrap
msgid ""
"% make cabal-extract\n"
"[...]\n"
"Downloading the latest package list from hackage.haskell.org\n"
"cabal get ShellCheck-0.6.0\n"
"Downloading ShellCheck-0.6.0\n"
"Downloaded ShellCheck-0.6.0\n"
"Unpacking to ShellCheck-0.6.0/\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1005
msgid ""
"Now that we have ShellCheck.cabal package description file under `${WRKSRC}"
"`, we can use `cabal-configure` to generate the build plan:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1016
#, no-wrap
msgid ""
"% make cabal-configure\n"
"[...]\n"
"Resolving dependencies...\n"
"Build profile: -w ghc-8.10.7 -O1\n"
"In order, the following would be built (use -v for more details):\n"
" - Diff-0.4.1 (lib) (requires download & build)\n"
" - OneTuple-0.3.1 (lib) (requires download & build)\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1019
msgid "Once done, a list of required dependencies can generated:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1027
#, no-wrap
msgid ""
"% make make-use-cabal\n"
"USE_CABAL=\tQuickCheck-2.12.6.1 \\\n"
"\t\thashable-1.3.0.0 \\\n"
"\t\tinteger-logarithms-1.0.3 \\\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1033
msgid ""
"Haskell packages may contain revisions, just like FreeBSD ports. Revisions "
"can affect [.filename]#.cabal# files only. Note additional version numbers "
"after the `_` symbol. Put newly generated `USE_CABAL` list instead of an "
"old one."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1035
msgid ""
"Finally, [.filename]#distinfo# needs to be regenerated to contain all the "
"distribution files:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1046
#, no-wrap
msgid ""
"% make makesum\n"
"=> ShellCheck-0.6.0.tar.gz doesn't seem to exist in /usr/local/poudriere/ports/git/distfiles/cabal.\n"
"=> Attempting to fetch https://hackage.haskell.org/package/ShellCheck-0.6.0/ShellCheck-0.6.0.tar.gz\n"
"ShellCheck-0.6.0.tar.gz 136 kB 642 kBps 00s\n"
"=> QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz doesn't seem to exist in /usr/local/poudriere/ports/git/distfiles/cabal.\n"
"=> Attempting to fetch https://hackage.haskell.org/package/QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz\n"
"QuickCheck-2.12.6.1/QuickCheck-2.12.6.1.tar.gz 65 kB 361 kBps 00s\n"
"[...]\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1056
msgid ""
"Some Haskell ports install various data files under `share/${PORTNAME}`. For "
"such cases special handling is required on the port side. The port should "
"define the `CABAL_WRAPPER_SCRIPTS` knob listing each executable that is "
"going to use data files. Moreover, in rare cases the program being ported "
"uses data files of other Haskell packages, in which case the "
"`FOO_DATADIR_VARS` comes to the rescue."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1058
#, no-wrap
msgid "Handling Data Files in a Haskell Port"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1062
msgid ""
"`devel/hs-profiteur` is a Haskell application that generates a single-page "
"HTML with some content."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1066
#, no-wrap
msgid "PORTNAME=\tprofiteur\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1068
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1083
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1101
#, no-wrap
msgid "[...]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1074
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1087
#, no-wrap
msgid ""
"USE_CABAL=\tOneTuple-0.3.1_2 \\\n"
"\t\tQuickCheck-2.14.2 \\\n"
"\t\t[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1079
msgid ""
"It installs HTML templates under `share/profiteur`, so we need to add "
"`CABAL_WRAPPER_SCRIPTS` knob:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1090
#, no-wrap
msgid "CABAL_WRAPPER_SCRIPTS=\t\t${CABAL_EXECUTABLES}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1097
msgid ""
"The program also tries to access the `jquery.js` file, which is a part of "
"`js-jquery-3.3.1` Haskell package. For that file to be found, we need to "
"make the wrapper script to look for `js-jquery` data files in `share/"
"profiteur` too. We use `profiteur_DATADIR_VARS` for this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1104
#, no-wrap
msgid ""
"CABAL_WRAPPER_SCRIPTS=\t\t${CABAL_EXECUTABLES}\n"
"profiteur_DATADIR_VARS=\t\tjs-jquery\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1109
msgid ""
"Now the port will install the actual binary into `libexec/cabal/profiteur` "
"and the script into `bin/profiteur`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1114
msgid ""
"There is no easy way to find out a proper value for the `FOO_DATADIR_VARS` "
"knob apart from running the program and checking that everything works. "
"Luckily, the need to use `FOO_DATADIR_VARS` is very rare."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1116
msgid ""
"Another corner case when porting complex Haskell programs is the presence of "
"VCS dependencies in the `cabal.project` file."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1118
#, no-wrap
msgid "Porting Haskell Applications with VCS Dependencies"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1123
msgid ""
"`net-p2p/cardano-node` is an extremely complex piece of software. In its "
"`cabal.project` there are a lot of blocks like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1132
#, no-wrap
msgid ""
"[...]\n"
"source-repository-package\n"
" type: git\n"
" location: https://github.com/input-output-hk/cardano-crypto\n"
" tag: f73079303f663e028288f9f4a9e08bcca39a923e\n"
"[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1138
msgid ""
"Dependencies of type `source-repository-package` are automatically pulled in "
"by `cabal` during the build process. Unfortunately, this makes use of the "
"network after the `fetch` stage. This is disallowed by the ports framework. "
"These sources need to be listed in the port's Makefile. The `make-use-cabal` "
"helper target can make it easy for packages hosted on GitHub. Running this "
"target after the usual `cabal-extract` and `cabal-configure` will produce "
"not only the `USE_CABAL` knob, but also `GH_TUPLE`:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1146
#, no-wrap
msgid ""
"% make make-use-cabal\n"
"USE_CABAL=\tDiff-0.4.1 \\\n"
"\t\tGlob-0.10.2_3 \\\n"
"\t\tHUnit-1.6.2.0 \\\n"
"\t\t[...]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1150
#, no-wrap
msgid ""
"GH_TUPLE=\t\tinput-output-hk:cardano-base:0f3a867493059e650cda69e20a5cbf1ace289a57:cardano_base/dist-newstyle/src/cardano-b_-c8db9876882556ed \\\n"
"\t\tinput-output-hk:cardano-crypto:f73079303f663e028288f9f4a9e08bcca39a923e:cardano_crypto/dist-newstyle/src/cardano-c_-253fd88117badd8f \\\n"
"\t\t[...]\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1153
msgid ""
"It might be useful to separate the `GH_TUPLE` items coming from `make-use-"
"cabal` from the other ones to make it easy to update the port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1159
#, no-wrap
msgid ""
"GH_TUPLE=\tinput-output-hk:cardano-base:0f3a867493059e650cda69e20a5cbf1ace289a57:cardano_base/dist-newstyle/src/cardano-b_-c8db9876882556ed \\\n"
"\t\tinput-output-hk:cardano-crypto:f73079303f663e028288f9f4a9e08bcca39a923e:cardano_crypto/dist-newstyle/src/cardano-c_-253fd88117badd8f \\\n"
"\t\t[...]\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1161
#, no-wrap
msgid "GH_TUPLE+=\tbitcoin-core:secp256k1:ac83be33d0956faf6b7f61a60ab524ef7d6a473a:secp\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1164
msgid ""
"Haskell ports with VCS dependencies also require the following hack for the "
"time being:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1168
#, no-wrap
msgid "BINARY_ALIAS=\tgit=true\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1173
#, no-wrap
msgid "Using GNU Autotools"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1177
msgid ""
"If a port needs any of the GNU Autotools software, add `USES=autoreconf`. "
"See crossref:uses[uses-autoreconf,`autoreconf`] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1179
#, no-wrap
msgid "Using GNU `gettext`"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1182
#, no-wrap
msgid "Basic Usage"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1186
msgid ""
"If the port requires `gettext`, set `USES= gettext`, and the port will "
"inherit a dependency on [.filename]#libintl.so# from package:devel/"
"gettext[]. Other values for `gettext` usage are listed in crossref:"
"uses[uses-gettext,`USES=gettext`]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1189
msgid ""
"A rather common case is a port using `gettext` and `configure`. Generally, "
"GNU `configure` should be able to locate `gettext` automatically."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1194
#, no-wrap
msgid ""
"USES=\tgettext\n"
"GNU_CONFIGURE=\tyes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1197
msgid ""
"If it ever fails to, hints at the location of `gettext` can be passed in "
"`CPPFLAGS` and `LDFLAGS` using `localbase` as follows:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1202
#, no-wrap
msgid ""
"USES=\tgettext localbase:ldflags\n"
"GNU_CONFIGURE=\tyes\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1205
#, no-wrap
msgid "Optional Usage"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1211
msgid ""
"Some software products allow for disabling NLS. For example, through "
"passing `--disable-nls` to `configure`. In that case, the port must use "
"`gettext` conditionally, depending on the status of the `NLS` option. For "
"ports of low to medium complexity, use this idiom:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1215
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1230
#, no-wrap
msgid "GNU_CONFIGURE=\t\tyes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1218
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\t\tNLS\n"
"OPTIONS_SUB=\t\tyes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1221
#, no-wrap
msgid ""
"NLS_USES=\t\tgettext\n"
"NLS_CONFIGURE_ENABLE=\tnls\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1226
msgid "Or using the older way of using options:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1232
#, no-wrap
msgid "OPTIONS_DEFINE=\t\tNLS\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1234
#, no-wrap
msgid ".include <bsd.port.options.mk>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1242
#, no-wrap
msgid ""
".if ${PORT_OPTIONS:MNLS}\n"
"USES+=\t\t\tgettext\n"
"PLIST_SUB+=\t\tNLS=\"\"\n"
".else\n"
"CONFIGURE_ARGS+=\t--disable-nls\n"
"PLIST_SUB+=\t\tNLS=\"@comment \"\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1253
msgid ""
"The next item on the to-do list is to arrange so that the message catalog "
"files are included in the packing list conditionally. The [."
"filename]#Makefile# part of this task is already provided by the idiom. It "
"is explained in the section on crossref:plist[plist-sub,advanced [."
"filename]#pkg-plist# practices]. In a nutshell, each occurrence of `%%NLS%"
"%` in [.filename]#pkg-plist# will be replaced by \"`@comment `\" if NLS is "
"disabled, or by a null string if NLS is enabled. Consequently, the lines "
"prefixed by `%%NLS%%` will become mere comments in the final packing list if "
"NLS is off; otherwise the prefix will be just left out. Then insert `%%NLS%"
"%` before each path to a message catalog file in [.filename]#pkg-plist#. "
"For example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1258
#, no-wrap
msgid ""
"%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo\n"
"%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1261
msgid ""
"In high complexity cases, more advanced techniques may be needed, such as "
"crossref:plist[plist-dynamic,dynamic packing list generation]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1263
#, no-wrap
msgid "Handling Message Catalog Directories"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1270
msgid ""
"There is a point to note about installing message catalog files. The target "
"directories for them, which reside under [.filename]#LOCALBASE/share/"
"locale#, must not be created and removed by a port. The most popular "
"languages have their respective directories listed in [.filename]#PORTSDIR/"
"Templates/BSD.local.dist#. The directories for many other languages are "
"governed by the package:devel/gettext[] port. Consult its [.filename]#pkg-"
"plist# and see whether the port is going to install a message catalog file "
"for a unique language."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1272
#, no-wrap
msgid "Using Perl"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1280
msgid ""
"If `MASTER_SITES` is set to `CPAN`, the correct subdirectory is usually "
"selected automatically. If the default subdirectory is wrong, `CPAN/Module` "
"can be used to change it. `MASTER_SITES` can also be set to the old "
"`MASTER_SITE_PERL_CPAN`, then the preferred value of `MASTER_SITE_SUBDIR` is "
"the top-level hierarchy name. For example, the recommended value for `p5-"
"Module-Name` is `Module`. The top-level hierarchy can be examined at "
"https://cpan.org/modules/by-module/[cpan.org]. This keeps the port working "
"when the author of the module changes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1285
msgid ""
"The exception to this rule is when the relevant directory does not exist or "
"the distfile does not exist in that directory. In such case, using author's "
"id as `MASTER_SITE_SUBDIR` is allowed. The `CPAN:AUTHOR` macro can be used, "
"which will be translated to the hashed author directory. For example, `CPAN:"
"AUTHOR` will be converted to `authors/id/A/AU/AUTHOR`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1287
msgid ""
"When a port needs Perl support, it must set `USES=perl5` with the optional "
"`USE_PERL5` described in crossref:uses[uses-perl5,the perl5 USES "
"description]."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1289
#, no-wrap
msgid "Read-Only Variables for Ports That Use Perl"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1293
#, no-wrap
msgid "Read only variables"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1296
#, no-wrap
msgid "`PERL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1298
#, no-wrap
msgid "The full path of the Perl 5 interpreter, either in the system or installed from a port, but without the version number. Use this when the software needs the path to the Perl interpreter. To replace \"``#!``\"lines in scripts, use crossref:uses[uses-shebangfix,`shebangfix`]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1299
#, no-wrap
msgid "`PERL_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1301
#, no-wrap
msgid "The full version of Perl installed (for example, `5.8.9`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1302
#, no-wrap
msgid "`PERL_LEVEL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1304
#, no-wrap
msgid "The installed Perl version as an integer of the form `MNNNPP` (for example, `500809`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1305
#, no-wrap
msgid "`PERL_ARCH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1307
#, no-wrap
msgid "Where Perl stores architecture dependent libraries. Defaults to `${ARCH}-freebsd`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1308
#, no-wrap
msgid "`PERL_PORT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1310
#, no-wrap
msgid "Name of the Perl port that is installed (for example, `perl5`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1311
#, no-wrap
msgid "`SITE_PERL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1312
#, no-wrap
msgid "Directory name where site specific Perl packages go. This value is added to `PLIST_SUB`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1318
msgid ""
"Ports of Perl modules which do not have an official website must link to "
"`cpan.org` in the WWW line of [.filename]#Makefile#. The preferred URL form "
"is `https://search.cpan.org/dist/Module-Name/` (including the trailing "
"slash)."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1326
msgid ""
"Do not use `${SITE_PERL}` in dependency declarations. Doing so assumes that "
"[.filename]#perl5.mk# has been included, which is not always true. Ports "
"depending on this port will have incorrect dependencies if this port's files "
"move later in an upgrade. The right way to declare Perl module dependencies "
"is shown in the example below."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1329
#, no-wrap
msgid "Perl Dependency Example"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1335
#, no-wrap
msgid "p5-IO-Tee>=0.64:devel/p5-IO-Tee\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1340
msgid ""
"For Perl ports that install manual pages, the macro `PERL5_MAN3` and "
"`PERL5_MAN1` can be used inside [.filename]#pkg-plist#. For example,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1345
#, no-wrap
msgid ""
"lib/perl5/5.14/man/man1/event.1.gz\n"
"lib/perl5/5.14/man/man3/AnyEvent::I3.3.gz\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1348
msgid "can be replaced with"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1353
#, no-wrap
msgid ""
"%%PERL5_MAN1%%/event.1.gz\n"
"%%PERL5_MAN3%%/AnyEvent::I3.3.gz\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1358
msgid ""
"There are no `PERL5_MAN_x_` macros for the other sections (_x_ in `2` and "
"`4` to `9`) because those get installed in the regular directories."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1361
#, no-wrap
msgid "A Port Which Only Requires Perl to Build"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1365
msgid "As the default USE_PERL5 value is build and run, set it to:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1370
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tbuild\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1375
#, no-wrap
msgid "A Port Which Also Requires Perl to Patch"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1380
msgid ""
"From time to time, using man:sed[1] for patching is not enough. When using "
"man:perl[1] is easier, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1385
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tpatch build run\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1390
#, no-wrap
msgid "A Perl Module Which Needs `ExtUtils::MakeMaker` to Build"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1395
msgid ""
"Most Perl modules come with a [.filename]#Makefile.PL# configure script. In "
"this case, set:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1400
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tconfigure\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1405
#, no-wrap
msgid "A Perl Module Which Needs `Module::Build` to Build"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1409
msgid ""
"When a Perl module comes with a [.filename]#Build.PL# configure script, it "
"can require Module::Build, in which case, set"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1414
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tmodbuild\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1417
msgid "If it instead requires Module::Build::Tiny, set"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1422
#, no-wrap
msgid ""
"USES=\t\tperl5\n"
"USE_PERL5=\tmodbuildtiny\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1427
#, no-wrap
msgid "Using X11"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1430
#, no-wrap
msgid "X.Org Components"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1435
msgid ""
"The X11 implementation available in The Ports Collection is X.Org. If the "
"application depends on X components, add `USES= xorg` and set `USE_XORG` to "
"the list of required components. A full list can be found in crossref:"
"uses[uses-xorg,`xorg`]."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1440
msgid ""
"The Mesa Project is an effort to provide free OpenGL implementation. To "
"specify a dependency on various components of this project, use `USES= gl` "
"and `USE_GL`. See crossref:uses[uses-gl,`gl`] for a full list of available "
"components. For backwards compatibility, the value of `yes` maps to `glu`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1442
#, no-wrap
msgid "`USE_XORG` Example"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1450
#, no-wrap
msgid ""
"USES=\t\tgl xorg\n"
"USE_GL=\t\tglu\n"
"USE_XORG=\txrender xft xkbfile xt xaw\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1455
#, no-wrap
msgid "Variables for Ports That Use X"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1459
#, no-wrap
msgid "`USES= imake`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1461
#, no-wrap
msgid "The port uses `imake`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1462
#, no-wrap
msgid "`XMKMF`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1463
#, no-wrap
msgid "Set to the path of `xmkmf` if not in the `PATH`. Defaults to `xmkmf -a`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1466
#, no-wrap
msgid "Using X11-Related Variables"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1474
#, no-wrap
msgid ""
"# Use some X11 libraries\n"
"USES=\t\txorg\n"
"USE_XORG=\tx11 xpm\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1479
#, no-wrap
msgid "Ports That Require Motif"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1485
msgid ""
"If the port requires a Motif library, define `USES= motif` in the [."
"filename]#Makefile#. Default Motif implementation is package:x11-toolkits/"
"open-motif[]. Users can choose package:x11-toolkits/lesstif[] instead by "
"setting `WANT_LESSTIF` in their [.filename]#make.conf#. Similarly package:"
"x11-toolkits/open-motif-devel[] can be chosen by setting "
"`WANT_OPEN_MOTIF_DEVEL` in [.filename]#make.conf#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1488
msgid ""
"`MOTIFLIB` will be set by [.filename]#motif.mk# to reference the appropriate "
"Motif library. Please patch the source of the port to use `${MOTIFLIB}` "
"wherever the Motif library is referenced in the original [."
"filename]#Makefile# or [.filename]#Imakefile#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1490
msgid "There are two common cases:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1492
msgid ""
"If the port refers to the Motif library as `-lXm` in its [."
"filename]#Makefile# or [.filename]#Imakefile#, substitute `${MOTIFLIB}` for "
"it."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1493
msgid ""
-"If the port uses `XmClientLibs` in its [.filename]#Imakefile#, change it to `"
-"${MOTIFLIB} ${XTOOLLIB} ${XLIB}`."
+"If the port uses `XmClientLibs` in its [.filename]#Imakefile#, change it to "
+"`${MOTIFLIB} ${XTOOLLIB} ${XLIB}`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1495
msgid ""
"Note that `MOTIFLIB` (usually) expands to `-L/usr/local/lib -lXm -lXp` or `/"
"usr/local/lib/libXm.a`, so there is no need to add `-L` or `-l` in front."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1497
#, no-wrap
msgid "X11 Fonts"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1500
msgid ""
"If the port installs fonts for the X Window System, put them in [."
"filename]#LOCALBASE/lib/X11/fonts/local#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1502
#, no-wrap
msgid "Getting a Fake `DISPLAY` with Xvfb"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1509
msgid ""
"Some applications require a working X11 display for compilation to succeed. "
"This poses a problem for machines that operate headless. When this variable "
"is used, the build infrastructure will start the virtual framebuffer X "
"server. The working `DISPLAY` is then passed to the build. See crossref:"
"uses[uses-display,`USES=display`] for the possible arguments."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1513
#, no-wrap
msgid "USES=\tdisplay\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1517
#, no-wrap
msgid "Desktop Entries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1523
msgid ""
"Desktop entries (https://standards.freedesktop.org/desktop-entry-spec/latest/"
"[a Freedesktop standard]) provide a way to automatically adjust desktop "
"features when a new program is installed, without requiring user "
"intervention. For example, newly-installed programs automatically appear in "
"the application menus of compatible desktop environments. Desktop entries "
"originated in the GNOME desktop environment, but are now a standard and also "
"work with KDE and Xfce. This bit of automation provides a real benefit to "
"the user, and desktop entries are encouraged for applications which can be "
"used in a desktop environment."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1525
#, no-wrap
msgid "Using Predefined [.filename]#.desktop# Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1529
msgid ""
"Ports that include predefined [.filename]#*.desktop# must include those "
-"files in [.filename]#pkg-plist# and install them in the [.filename]#"
-"$LOCALBASE/share/applications# directory. The crossref:makefiles[install-"
-"macros,`INSTALL_DATA` macro] is useful for installing these files."
+"files in [.filename]#pkg-plist# and install them in the [."
+"filename]#$LOCALBASE/share/applications# directory. The crossref:"
+"makefiles[install-macros,`INSTALL_DATA` macro] is useful for installing "
+"these files."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1531
#, no-wrap
msgid "Updating Desktop Database"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1535
msgid ""
"If a port has a MimeType entry in its [.filename]#portname.desktop#, the "
"desktop database must be updated after install and deinstall. To do this, "
"define `USES`= desktop-file-utils."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1537
#, no-wrap
msgid "Creating Desktop Entries with `DESKTOP_ENTRIES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1542
msgid ""
"Desktop entries can be easily created for applications by using "
"`DESKTOP_ENTRIES`. A file named [.filename]#name.desktop# will be created, "
"installed, and added to [.filename]#pkg-plist# automatically. Syntax is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1546
#, no-wrap
msgid "DESKTOP_ENTRIES=\t\"NAME\" \"COMMENT\" \"ICON\" \"COMMAND\" \"CATEGORY\" StartupNotify\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1553
msgid ""
"The list of possible categories is available on the https://standards."
"freedesktop.org/menu-spec/latest/apa.html[Freedesktop website]. "
"`StartupNotify` indicates whether the application is compatible with "
"_startup notifications_. These are typically a graphic indicator like a "
"clock that appear at the mouse pointer, menu, or panel to give the user an "
"indication when a program is starting. A program that is compatible with "
"startup notifications clears the indicator after it has started. Programs "
"that are not compatible with startup notifications would never clear the "
"indicator (potentially confusing and infuriating the user), and must have "
"`StartupNotify` set to `false` so the indicator is not shown at all."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1555
msgid "Example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1562
#, no-wrap
msgid ""
"DESKTOP_ENTRIES=\t\"ToME\" \"Roguelike game based on JRR Tolkien's work\" \\\n"
"\t\t\t\"${DATADIR}/xtra/graf/tome-128.png\" \\\n"
"\t\t\t\"tome -v -g\" \"Application;Game;RolePlaying;\" \\\n"
"\t\t\tfalse\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1566
#, no-wrap
msgid "Using GNOME"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1569
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3788
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4089
#, no-wrap
msgid "Introduction"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1573
msgid ""
"This chapter explains the GNOME framework as used by ports. The framework "
"can be loosely divided into the base components, GNOME desktop components, "
"and a few special macros that simplify the work of port maintainers."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1575
#, no-wrap
msgid "Using `USE_GNOME`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1583
msgid ""
"Adding this variable to the port allows the use of the macros and components "
"defined in [.filename]#bsd.gnome.mk#. The code in [.filename]#bsd.gnome.mk# "
"adds the needed build-time, run-time or library dependencies or the handling "
"of special files. GNOME applications under FreeBSD use the `USE_GNOME` "
"infrastructure. Include all the needed components as a space-separated "
"list. The `USE_GNOME` components are divided into these virtual lists: "
"basic components, GNOME 3 components and legacy components. If the port "
"needs only GTK3 libraries, this is the shortest way to define it:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1587
#, no-wrap
msgid "USE_GNOME=\tgtk30\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1591
msgid ""
"`USE_GNOME` components automatically add the dependencies they need. Please "
"see <<gnome-components>> for an exhaustive list of all `USE_GNOME` "
"components and which other components they imply and their dependencies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1594
msgid ""
"Here is an example [.filename]#Makefile# for a GNOME port that uses many of "
"the techniques outlined in this document. Please use it as a guide for "
"creating new ports."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1601
#, no-wrap
msgid ""
"PORTNAME=\tregexxer\n"
"DISTVERSION=\t0.10\n"
"CATEGORIES=\tdevel textproc gnome\n"
"MASTER_SITES=\tGNOME\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1605
#, no-wrap
msgid ""
"MAINTAINER=\tkwm@FreeBSD.org\n"
"COMMENT=\tInteractive tool for performing search and replace operations\n"
"WWW=\t\thttp://regexxer.sourceforge.net/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1609
#, no-wrap
msgid ""
"USES=\t\tgettext gmake localbase:ldflags pathfix pkgconfig tar:xz\n"
"GNU_CONFIGURE=\tyes\n"
"USE_GNOME=\tgnomeprefix intlhack gtksourceviewmm3\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1611
#, no-wrap
msgid "GLIB_SCHEMAS=\torg.regexxer.gschema.xml\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1619
msgid ""
"The `USE_GNOME` macro without any arguments does not add any dependencies to "
"the port. `USE_GNOME` cannot be set after [.filename]#bsd.port.pre.mk#."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1622
#, no-wrap
msgid "Variables"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1628
msgid ""
"This section explains which macros are available and how they are used. "
"Like they are used in the above example. The <<gnome-components>> has a "
"more in-depth explanation. `USE_GNOME` has to be set for these macros to be "
"of use."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1629
#, no-wrap
msgid "`GLIB_SCHEMAS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1632
msgid ""
"List of all the glib schema files the port installs. The macro will add the "
"files to the port plist and handle the registration of these files on "
"install and deinstall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1637
msgid ""
"The glib schema files are written in XML and end with the [."
"filename]#gschema.xml# extension. They are installed in the [."
"filename]#share/glib-2.0/schemas/# directory. These schema files contain "
"all application config values with their default settings. The actual "
"database used by the applications is built by glib-compile-schema, which is "
"run by the `GLIB_SCHEMAS` macro."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1641
#, no-wrap
msgid "GLIB_SCHEMAS=foo.gschema.xml\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1647
msgid ""
"Do not add glib schemas to the [.filename]#pkg-plist#. If they are listed "
"in [.filename]#pkg-plist#, they will not be registered and the applications "
"might not work properly."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1649
#, no-wrap
msgid "`GCONF_SCHEMAS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1652
msgid ""
"List all the gconf schema files. The macro will add the schema files to the "
"port plist and will handle their registration on install and deinstall."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1657
msgid ""
"GConf is the XML-based database that virtually all GNOME applications use "
"for storing their settings. These files are installed into the [."
"filename]#etc/gconf/schemas# directory. This database is defined by "
"installed schema files that are used to generate [.filename]#%gconf.xml# key "
"files. For each schema file installed by the port, there must be an entry "
"in the [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1661
#, no-wrap
msgid "GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1667
msgid ""
"Gconf schemas are listed in the `GCONF_SCHEMAS` macro rather than [."
"filename]#pkg-plist#. If they are listed in [.filename]#pkg-plist#, they "
"will not be registered and the applications might not work properly."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1669
#, no-wrap
msgid "`INSTALLS_OMF`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1673
msgid ""
"Open Source Metadata Framework (OMF) files are commonly used by GNOME 2 "
"applications. These files contain the application help file information, "
"and require special processing by ScrollKeeper/rarian. To properly register "
"OMF files when installing GNOME applications from packages, make sure that "
"`omf` files are listed in `pkg-plist` and that the port [."
"filename]#Makefile# has `INSTALLS_OMF` defined:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1677
#, no-wrap
msgid "INSTALLS_OMF=yes\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1680
msgid ""
"When set, [.filename]#bsd.gnome.mk# automatically scans [.filename]#pkg-"
"plist# and adds appropriate `@exec` and `@unexec` directives for each [."
"filename]#.omf# to track in the OMF registration database."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1682
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1692
#, no-wrap
msgid "GNOME Components"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1690
msgid ""
"For further help with a GNOME port, look at some of the link:https://www."
"FreeBSD.org/ports/gnome.html[existing ports] for examples. The link:https://"
"www.FreeBSD.org/gnome/[FreeBSD GNOME page] has contact information if more "
"help is needed. The components are divided into GNOME components that are "
"currently in use and legacy components. If the component supports argument, "
"they are listed between parenthesis in the description. The first is the "
"default. \"Both\" is shown if the component defaults to adding to both "
"build and run dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1696
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1865
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1882
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2051
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3930
#, no-wrap
msgid "Component"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1697
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1883
#, no-wrap
msgid "Associated program"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1700
#, no-wrap
msgid "`atk`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1701
#, no-wrap
msgid "accessibility/atk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1703
#, no-wrap
msgid "Accessibility toolkit (ATK)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1704
#, no-wrap
msgid "`atkmm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1705
#, no-wrap
msgid "accessibility/atkmm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1707
#, no-wrap
msgid "c++ bindings for atk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1708
#, no-wrap
msgid "`cairo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1709
#, no-wrap
msgid "graphics/cairo"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1711
#, no-wrap
msgid "Vector graphics library with cross-device output support"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1712
#, no-wrap
msgid "`cairomm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1713
#, no-wrap
msgid "graphics/cairomm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1715
#, no-wrap
msgid "c++ bindings for cairo"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1716
#, no-wrap
msgid "`dconf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1717
#, no-wrap
msgid "devel/dconf"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1719
#, no-wrap
msgid "Configuration database system (both, build, run)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1720
#, no-wrap
msgid "`evolutiondataserver3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1721
#, no-wrap
msgid "databases/evolution-data-server"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1723
#, no-wrap
msgid "Data backends for the Evolution integrated mail/PIM suite"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1724
#, no-wrap
msgid "`gdkpixbuf2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1725
#, no-wrap
msgid "graphics/gdk-pixbuf2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1727
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1909
#, no-wrap
msgid "Graphics library for GTK+"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1728
#, no-wrap
msgid "`glib20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1729
#, no-wrap
msgid "devel/glib20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1731
#, no-wrap
msgid "GNOME core library `glib20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1732
#, no-wrap
msgid "`glibmm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1733
#, no-wrap
msgid "devel/glibmm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1735
#, no-wrap
msgid "c++ bindings for glib20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1736
#, no-wrap
msgid "`gnomecontrolcenter3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1737
#, no-wrap
msgid "sysutils/gnome-control-center"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1739
#, no-wrap
msgid "GNOME 3 Control Center"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1740
#, no-wrap
msgid "`gnomedesktop3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1741
#, no-wrap
msgid "x11/gnome-desktop"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1743
#, no-wrap
msgid "GNOME 3 desktop UI library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1744
#, no-wrap
msgid "`gsound`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1745
#, no-wrap
msgid "audio/gsound"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1747
#, no-wrap
msgid "GObject library for playing system sounds (both, build, run)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1748
#, no-wrap
msgid "`gtk-update-icon-cache`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1749
#, no-wrap
msgid "graphics/gtk-update-icon-cache"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1751
#, no-wrap
msgid "Gtk-update-icon-cache utility from the Gtk+ toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1752
#, no-wrap
msgid "`gtk20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1753
#, no-wrap
msgid "x11-toolkits/gtk20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1755
#, no-wrap
msgid "Gtk+ 2 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1756
#, no-wrap
msgid "`gtk30`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1757
#, no-wrap
msgid "x11-toolkits/gtk30"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1759
#, no-wrap
msgid "Gtk+ 3 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1760
#, no-wrap
msgid "`gtkmm20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1761
#, no-wrap
msgid "x11-toolkits/gtkmm20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1763
#, no-wrap
msgid "c++ bindings 2.0 for the gtk20 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1764
#, no-wrap
msgid "`gtkmm24`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1765
#, no-wrap
msgid "x11-toolkits/gtkmm24"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1767
#, no-wrap
msgid "c++ bindings 2.4 for the gtk20 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1768
#, no-wrap
msgid "`gtkmm30`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1769
#, no-wrap
msgid "x11-toolkits/gtkmm30"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1771
#, no-wrap
msgid "c++ bindings 3.0 for the gtk30 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1772
#, no-wrap
msgid "`gtksourceview2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1773
#, no-wrap
msgid "x11-toolkits/gtksourceview2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1775
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1953
#, no-wrap
msgid "Widget that adds syntax highlighting to GtkTextView"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1776
#, no-wrap
msgid "`gtksourceview3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1777
#, no-wrap
msgid "x11-toolkits/gtksourceview3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1779
#, no-wrap
msgid "Text widget that adds syntax highlighting to the GtkTextView widget"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1780
#, no-wrap
msgid "`gtksourceviewmm3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1781
#, no-wrap
msgid "x11-toolkits/gtksourceviewmm3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1783
#, no-wrap
msgid "c++ bindings for the gtksourceview3 library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1784
#, no-wrap
msgid "`gvfs`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1785
#, no-wrap
msgid "devel/gvfs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1787
#, no-wrap
msgid "GNOME virtual file system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1788
#, no-wrap
msgid "`intltool`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1789
#, no-wrap
msgid "textproc/intltool"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1791
#, no-wrap
msgid "Tool for internationalization (also see intlhack)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1792
#, no-wrap
msgid "`introspection`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1793
#, no-wrap
msgid "devel/gobject-introspection"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1795
#, no-wrap
msgid "Basic introspection bindings and tools to generate introspection bindings. Most of the time :build is enough, :both/:run is only need for applications that use introspection bindings. (both, build, run)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1796
#, no-wrap
msgid "`libgda5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1797
#, no-wrap
msgid "databases/libgda5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1799
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1969
#, no-wrap
msgid "Provides uniform access to different kinds of data sources"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1800
#, no-wrap
msgid "`libgda5-ui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1801
#, no-wrap
msgid "databases/libgda5-ui"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1803
#, no-wrap
msgid "UI library from the libgda5 library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1804
#, no-wrap
msgid "`libgdamm5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1805
#, no-wrap
msgid "databases/libgdamm5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1807
#, no-wrap
msgid "c++ bindings for the libgda5 library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1808
#, no-wrap
msgid "`libgsf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1809
#, no-wrap
msgid "devel/libgsf"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1811
#, no-wrap
msgid "Extensible I/O abstraction for dealing with structured file formats"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1812
#, no-wrap
msgid "`librsvg2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1813
#, no-wrap
msgid "graphics/librsvg2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1815
#, no-wrap
msgid "Library for parsing and rendering SVG vector-graphic files"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1816
#, no-wrap
msgid "`libsigc++20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1817
#, no-wrap
msgid "devel/libsigc++20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1819
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2013
#, no-wrap
msgid "Callback Framework for C++"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1820
#, no-wrap
msgid "`libxml++26`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1821
#, no-wrap
msgid "textproc/libxml++26"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1823
#, no-wrap
msgid "c++ bindings for the libxml2 library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1824
#, no-wrap
msgid "`libxml2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1825
#, no-wrap
msgid "textproc/libxml2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1827
#, no-wrap
msgid "XML parser library (both, build, run)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1828
#, no-wrap
msgid "`libxslt`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1829
#, no-wrap
msgid "textproc/libxslt"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1831
#, no-wrap
msgid "XSLT C library (both, build, run)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1832
#, no-wrap
msgid "`metacity`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1833
#, no-wrap
msgid "x11-wm/metacity"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1835
#, no-wrap
msgid "Window manager from GNOME"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1836
#, no-wrap
msgid "`nautilus3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1837
#, no-wrap
msgid "x11-fm/nautilus"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1839
#, no-wrap
msgid "GNOME file manager"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1840
#, no-wrap
msgid "`pango`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1841
#, no-wrap
msgid "x11-toolkits/pango"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1843
#, no-wrap
msgid "Open-source framework for the layout and rendering of i18n text"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1844
#, no-wrap
msgid "`pangomm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1845
#, no-wrap
msgid "x11-toolkits/pangomm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1847
#, no-wrap
msgid "c++ bindings for the pango library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1848
#, no-wrap
msgid "`py3gobject3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1849
#, no-wrap
msgid "devel/py3-gobject3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1851
#, no-wrap
msgid "Python 3, GObject 3.0 bindings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1852
#, no-wrap
msgid "`pygobject3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1853
#, no-wrap
msgid "devel/py-gobject3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1855
#, no-wrap
msgid "Python 2, GObject 3.0 bindings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1856
#, no-wrap
msgid "`vte3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1857
#, no-wrap
msgid "x11-toolkits/vte3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1858
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2044
#, no-wrap
msgid "Terminal widget with improved accessibility and I18N support"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1861
#, no-wrap
msgid "GNOME Macro Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1868
#, no-wrap
msgid "`gnomeprefix`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1870
#, no-wrap
msgid "Supply `configure` with some default locations."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1871
#, no-wrap
msgid "`intlhack`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1873
#, no-wrap
msgid "Same as intltool, but patches to make sure [.filename]#share/locale/# is used. Please only use when `intltool` alone is not enough."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1874
#, no-wrap
msgid "`referencehack`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1875
#, no-wrap
msgid "This macro is there to help splitting of the API or reference documentation into its own port."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1878
#, no-wrap
msgid "GNOME Legacy Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1886
#, no-wrap
msgid "`atspi`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1887
#, no-wrap
msgid "accessibility/at-spi"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1889
#, no-wrap
msgid "Assistive Technology Service Provider Interface"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1890
#, no-wrap
msgid "`esound`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1891
#, no-wrap
msgid "audio/esound"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1893
#, no-wrap
msgid "Enlightenment sound package"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1894
#, no-wrap
msgid "`gal2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1895
#, no-wrap
msgid "x11-toolkits/gal2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1897
#, no-wrap
msgid "Collection of widgets taken from GNOME 2 gnumeric"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1898
#, no-wrap
msgid "`gconf2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1899
#, no-wrap
msgid "devel/gconf2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1901
#, no-wrap
msgid "Configuration database system for GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1902
#, no-wrap
msgid "`gconfmm26`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1903
#, no-wrap
msgid "devel/gconfmm26"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1905
#, no-wrap
msgid "c++ bindings for gconf2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1906
#, no-wrap
msgid "`gdkpixbuf`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1907
#, no-wrap
msgid "graphics/gdk-pixbuf"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1910
#, no-wrap
msgid "`glib12`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1911
#, no-wrap
msgid "devel/glib12"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1913
#, no-wrap
msgid "glib 1.2 core library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1914
#, no-wrap
msgid "`gnomedocutils`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1915
#, no-wrap
msgid "textproc/gnome-doc-utils"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1917
#, no-wrap
msgid "GNOME doc utils"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1918
#, no-wrap
msgid "`gnomemimedata`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1919
#, no-wrap
msgid "misc/gnome-mime-data"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1921
#, no-wrap
msgid "MIME and Application database for GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1922
#, no-wrap
msgid "`gnomesharp20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1923
#, no-wrap
msgid "x11-toolkits/gnome-sharp20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1925
#, no-wrap
msgid "GNOME 2 interfaces for the .NET runtime"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1926
#, no-wrap
msgid "`gnomespeech`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1927
#, no-wrap
msgid "accessibility/gnome-speech"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1929
#, no-wrap
msgid "GNOME 2 text-to-speech API"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1930
#, no-wrap
msgid "`gnomevfs2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1931
#, no-wrap
msgid "devel/gnome-vfs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1933
#, no-wrap
msgid "GNOME 2 Virtual File System"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1934
#, no-wrap
msgid "`gtk12`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1935
#, no-wrap
msgid "x11-toolkits/gtk12"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1937
#, no-wrap
msgid "Gtk+ 1.2 toolkit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1938
#, no-wrap
msgid "`gtkhtml3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1939
#, no-wrap
msgid "www/gtkhtml3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1941
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1945
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2001
#, no-wrap
msgid "Lightweight HTML rendering/printing/editing engine"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1942
#, no-wrap
msgid "`gtkhtml4`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1943
#, no-wrap
msgid "www/gtkhtml4"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1946
#, no-wrap
msgid "`gtksharp20`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1947
#, no-wrap
msgid "x11-toolkits/gtk-sharp20"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1949
#, no-wrap
msgid "GTK+ and GNOME 2 interfaces for the .NET runtime"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1950
#, no-wrap
msgid "`gtksourceview`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1951
#, no-wrap
msgid "x11-toolkits/gtksourceview"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1954
#, no-wrap
msgid "`libartgpl2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1955
#, no-wrap
msgid "graphics/libart_lgpl"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1957
#, no-wrap
msgid "Library for high-performance 2D graphics"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1958
#, no-wrap
msgid "`libbonobo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1959
#, no-wrap
msgid "devel/libbonobo"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1961
#, no-wrap
msgid "Component and compound document system for GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1962
#, no-wrap
msgid "`libbonoboui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1963
#, no-wrap
msgid "x11-toolkits/libbonoboui"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1965
#, no-wrap
msgid "GUI frontend to the libbonobo component of GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1966
#, no-wrap
msgid "`libgda4`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1967
#, no-wrap
msgid "databases/libgda4"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1970
#, no-wrap
msgid "`libglade2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1971
#, no-wrap
msgid "devel/libglade2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1973
#, no-wrap
msgid "GNOME 2 glade library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1974
#, no-wrap
msgid "`libgnome`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1975
#, no-wrap
msgid "x11/libgnome"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1977
#, no-wrap
msgid "Libraries for GNOME 2, a GNU desktop environment"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1978
#, no-wrap
msgid "`libgnomecanvas`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1979
#, no-wrap
msgid "graphics/libgnomecanvas"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1981
#, no-wrap
msgid "Graphics library for GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1982
#, no-wrap
msgid "`libgnomekbd`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1983
#, no-wrap
msgid "x11/libgnomekbd"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1985
#, no-wrap
msgid "GNOME 2 keyboard shared library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1986
#, no-wrap
msgid "`libgnomeprint`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1987
#, no-wrap
msgid "print/libgnomeprint"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1989
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1993
#, no-wrap
msgid "Gnome 2 print support library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1990
#, no-wrap
msgid "`libgnomeprintui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1991
#, no-wrap
msgid "x11-toolkits/libgnomeprintui"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1994
#, no-wrap
msgid "`libgnomeui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1995
#, no-wrap
msgid "x11-toolkits/libgnomeui"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1997
#, no-wrap
msgid "Libraries for the GNOME 2 GUI, a GNU desktop environment"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1998
#, no-wrap
msgid "`libgtkhtml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:1999
#, no-wrap
msgid "www/libgtkhtml"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2002
#, no-wrap
msgid "`libgtksourceviewmm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2003
#, no-wrap
msgid "x11-toolkits/libgtksourceviewmm"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2005
#, no-wrap
msgid "c++ binding of GtkSourceView"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2006
#, no-wrap
msgid "`libidl`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2007
#, no-wrap
msgid "devel/libIDL"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2009
#, no-wrap
msgid "Library for creating trees of CORBA IDL file"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2010
#, no-wrap
msgid "`libsigc++12`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2011
#, no-wrap
msgid "devel/libsigc++12"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2014
#, no-wrap
msgid "`libwnck`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2015
#, no-wrap
msgid "x11-toolkits/libwnck"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2017
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2021
#, no-wrap
msgid "Library used for writing pagers and taskslists"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2018
#, no-wrap
msgid "`libwnck3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2019
#, no-wrap
msgid "x11-toolkits/libwnck3"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2022
#, no-wrap
msgid "`orbit2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2023
#, no-wrap
msgid "devel/ORBit2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2025
#, no-wrap
msgid "High-performance CORBA ORB with support for the C language"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2026
#, no-wrap
msgid "`pygnome2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2027
#, no-wrap
msgid "x11-toolkits/py-gnome2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2029
#, no-wrap
msgid "Python bindings for GNOME 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2030
#, no-wrap
msgid "`pygobject`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2031
#, no-wrap
msgid "devel/py-gobject"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2033
#, no-wrap
msgid "Python 2, GObject 2.0 bindings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2034
#, no-wrap
msgid "`pygtk2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2035
#, no-wrap
msgid "x11-toolkits/py-gtk2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2037
#, no-wrap
msgid "Set of Python bindings for GTK+"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2038
#, no-wrap
msgid "`pygtksourceview`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2039
#, no-wrap
msgid "x11-toolkits/py-gtksourceview"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2041
#, no-wrap
msgid "Python bindings for GtkSourceView 2"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2042
#, no-wrap
msgid "`vte`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2043
#, no-wrap
msgid "x11-toolkits/vte"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2047
#, no-wrap
msgid "Deprecated Components: Do Not Use"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2054
#, no-wrap
msgid "`pangox-compat`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2055
#, no-wrap
msgid "pangox-compat has been deprecated and split off from the pango package."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2058
#, no-wrap
msgid "Using Qt"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2063
msgid ""
"For ports that are part of Qt itself, see crossref:uses[uses-qt-dist,`qt-"
"dist`]."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2066
#, no-wrap
msgid "Ports That Require Qt"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2071
msgid ""
"The Ports Collection provides support for Qt 5 and Qt 6 with `USES+=qt:5` "
"and `USES+=qt:6` respectively. Set `USE_QT` to the list of required Qt "
"components (libraries, tools, plugins)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2073
msgid ""
"The Qt framework exports a number of variables which can be used by ports, "
"some of them listed below:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2075
#, no-wrap
msgid "Variables Provided to Ports That Use Qt"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2079
#, no-wrap
msgid "`QMAKE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2081
#, no-wrap
msgid "Full path to `qmake` binary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2082
#, no-wrap
msgid "`LRELEASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2084
#, no-wrap
msgid "Full path to `lrelease` utility."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2085
#, no-wrap
msgid "`MOC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2087
#, no-wrap
msgid "Full path to `moc`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2088
#, no-wrap
msgid "`RCC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2090
#, no-wrap
msgid "Full path to `rcc`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2091
#, no-wrap
msgid "`UIC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2093
#, no-wrap
msgid "Full path to `uic`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2094
#, no-wrap
msgid "`QT_INCDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2096
#, no-wrap
msgid "Qt include directory."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2097
#, no-wrap
msgid "`QT_LIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2099
#, no-wrap
msgid "Qt libraries path."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2100
#, no-wrap
msgid "`QT_PLUGINDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2101
#, no-wrap
msgid "Qt plugins path."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2104
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3876
#, no-wrap
msgid "Component Selection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2111
msgid ""
"Individual Qt tool and library dependencies must be specified in `USE_QT`. "
"Every component can be suffixed with `_build` or `_run`, the suffix "
"indicating whether the dependency on the component is at buildtime or "
"runtime. If unsuffixed, the component will be depended on at both build- "
"and runtime. Usually, library components are specified unsuffixed, tool "
"components are mostly specified with the `_build` suffix and plugin "
"components are specified with the `_run` suffix. The most commonly used "
"components are listed below (all available components are listed in "
"`_USE_QT_ALL`, which is generated from `_USE_QT_COMMON` and "
"`_USE_QT[56]_ONLY` in [.filename]#/usr/ports/Mk/Uses/qt.mk#):"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2113
#, no-wrap
msgid "Available Qt Library Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2117
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2361
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2378
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2509
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3088
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3866
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3886
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3911
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4015
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4185
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4237
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2120
#, no-wrap
msgid "`3d`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2122
#, no-wrap
msgid "Qt3D module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2123
#, no-wrap
msgid "`5compat`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2125
#, no-wrap
msgid "Qt 5 compatibility module for Qt 6"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2126
#, no-wrap
msgid "`assistant`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2128
#, no-wrap
msgid "Qt 5 documentation browser"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2129
#, no-wrap
msgid "`base`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2131
#, no-wrap
msgid "Qt 6 base module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2132
#, no-wrap
msgid "`canvas3d`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2134
#, no-wrap
msgid "Qt canvas3d module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2135
#, no-wrap
msgid "`charts`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2137
#, no-wrap
msgid "Qt 5 charts module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2138
#, no-wrap
msgid "`concurrent`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2140
#, no-wrap
msgid "Qt multi-threading module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2141
#, no-wrap
msgid "`connectivity`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2143
#, no-wrap
msgid "Qt connectivity (Bluetooth/NFC) module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2144
#, no-wrap
msgid "`core`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2146
#, no-wrap
msgid "Qt core non-graphical module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2147
#, no-wrap
msgid "`datavis3d`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2149
#, no-wrap
msgid "Qt 5 3D data visualization module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2150
#, no-wrap
msgid "`dbus`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2152
#, no-wrap
msgid "Qt D-Bus inter-process communication module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2153
#, no-wrap
msgid "`declarative`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2155
#, no-wrap
msgid "Qt declarative framework for dynamic user interfaces"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2156
#, no-wrap
msgid "`designer`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2158
#, no-wrap
msgid "Qt 5 graphical user interface designer"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2159
#, no-wrap
msgid "`diag`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2161
#, no-wrap
msgid "Tool for reporting diagnostic information about Qt and its environment"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2162
#, no-wrap
msgid "`doc`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2164
#, no-wrap
msgid "Qt 5 documentation"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2165
#, no-wrap
msgid "`examples`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2167
#, no-wrap
msgid "Qt 5 examples sourcecode"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2168
#, no-wrap
msgid "`gamepad`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2170
#, no-wrap
msgid "Qt 5 Gamepad Module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2171
#, no-wrap
msgid "`graphicaleffects`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2173
#, no-wrap
msgid "Qt Quick graphical effects"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2174
#, no-wrap
msgid "`gui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2176
#, no-wrap
msgid "Qt graphical user interface module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2177
#, no-wrap
msgid "`help`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2179
#, no-wrap
msgid "Qt online help integration module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2180
#, no-wrap
msgid "`l10n`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2182
#, no-wrap
msgid "Qt localized messages"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2183
#, no-wrap
msgid "`languageserver`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2185
#, no-wrap
msgid "Qt 6 Language Server Protocol implementation"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2186
#, no-wrap
msgid "`linguist`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2188
#, no-wrap
msgid "Qt 5 translation tool"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2189
#, no-wrap
msgid "`location`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2191
#, no-wrap
msgid "Qt location module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2192
#, no-wrap
msgid "`lottie`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2194
#, no-wrap
msgid "Qt 6 QML API for rendering graphics and animations"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2195
#, no-wrap
msgid "`multimedia`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2197
#, no-wrap
msgid "Qt audio, video, radio and camera support module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2198
#, no-wrap
msgid "`network`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2200
#, no-wrap
msgid "Qt network module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2201
#, no-wrap
msgid "`networkauth`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2203
#, no-wrap
msgid "Qt network auth module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2204
#, no-wrap
msgid "`opengl`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2206
#, no-wrap
msgid "Qt 5-compatible OpenGL support module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2207
#, no-wrap
msgid "`paths`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2209
#, no-wrap
msgid "Command line client to QStandardPaths"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2210
#, no-wrap
msgid "`phonon4`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2212
#, no-wrap
msgid "KDE multimedia framework"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2213
#, no-wrap
msgid "`pixeltool`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2215
#, no-wrap
msgid "Qt 5 screen magnifier"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2216
#, no-wrap
msgid "`plugininfo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2218
#, no-wrap
msgid "Qt 5 plugin metadata dumper"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2219
#, no-wrap
msgid "`positioning`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2221
#, no-wrap
msgid "Qt 6 positioning API from sources such as satellite, wifi or text files."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2222
#, no-wrap
msgid "`printsupport`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2224
#, no-wrap
msgid "Qt print support module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2225
#, no-wrap
msgid "`qdbus`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2227
#, no-wrap
msgid "Qt command-line interface to D-Bus"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2228
#, no-wrap
msgid "`qdbusviewer`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2230
#, no-wrap
msgid "Qt 5 graphical interface to D-Bus"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2231
#, no-wrap
msgid "`qdoc`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2233
#, no-wrap
msgid "Qt documentation generator"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2234
#, no-wrap
msgid "`qdoc-data`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2236
#, no-wrap
msgid "QDoc configuration files"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2237
#, no-wrap
msgid "`qev`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2239
#, no-wrap
msgid "Qt QWidget events introspection tool"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2240
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2370
#, no-wrap
msgid "`qmake`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2242
#, no-wrap
msgid "Qt Makefile generator"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2243
#, no-wrap
msgid "`quickcontrols`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2245
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2248
#, no-wrap
msgid "Set of controls for building complete interfaces in Qt Quick"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2246
#, no-wrap
msgid "`quickcontrols2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2249
#, no-wrap
msgid "`remoteobjects`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2251
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2260
#, no-wrap
msgid "Qt 5 SXCML module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2252
#, no-wrap
msgid "`script`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2254
#, no-wrap
msgid "Qt 4-compatible scripting module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2255
#, no-wrap
msgid "`scripttools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2257
#, no-wrap
msgid "Qt Script additional components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2258
#, no-wrap
msgid "`scxml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2261
#, no-wrap
msgid "`sensors`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2263
#, no-wrap
msgid "Qt sensors module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2264
#, no-wrap
msgid "`serialbus`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2266
#, no-wrap
msgid "Qt functions to access industrial bus systems"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2267
#, no-wrap
msgid "`serialport`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2269
#, no-wrap
msgid "Qt functions to access serial ports"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2270
#, no-wrap
msgid "`shadertools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2272
#, no-wrap
msgid "Qt 6 tools for the cross-platform Qt shader pipeline"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2273
#, no-wrap
msgid "`speech`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2275
#, no-wrap
msgid "Accessibility features for Qt5"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2276
#, no-wrap
msgid "`sql`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2278
#, no-wrap
msgid "Qt SQL database integration module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2279
#, no-wrap
msgid "`sql-ibase`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2281
#, no-wrap
msgid "Qt InterBase/Firebird database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2282
#, no-wrap
msgid "`sql-mysql`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2284
#, no-wrap
msgid "Qt MySQL database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2285
#, no-wrap
msgid "`sql-odbc`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2287
#, no-wrap
msgid "Qt Open Database Connectivity plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2288
#, no-wrap
msgid "`sql-pgsql`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2290
#, no-wrap
msgid "Qt PostgreSQL database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2291
#, no-wrap
msgid "`sql-sqlite2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2293
#, no-wrap
msgid "Qt SQLite 2 database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2294
#, no-wrap
msgid "`sql-sqlite3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2296
#, no-wrap
msgid "Qt SQLite 3 database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2297
#, no-wrap
msgid "`sql-tds`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2299
#, no-wrap
msgid "Qt TDS Database Connectivity database plugin"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2300
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3945
#, no-wrap
msgid "`svg`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2302
#, no-wrap
msgid "Qt SVG support module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2303
#, no-wrap
msgid "`testlib`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2305
#, no-wrap
msgid "Qt unit testing module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2306
#, no-wrap
msgid "`tools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2308
#, no-wrap
msgid "Qt 6 assorted tools"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2309
#, no-wrap
msgid "`translations`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2311
#, no-wrap
msgid "Qt 6 translation module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2312
#, no-wrap
msgid "`uiplugin`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2314
#, no-wrap
msgid "Custom Qt widget plugin interface for Qt Designer"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2315
#, no-wrap
msgid "`uitools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2317
#, no-wrap
msgid "Qt Designer UI forms support module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2318
#, no-wrap
msgid "`virtualkeyboard`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2320
#, no-wrap
msgid "Qt 5 Virtual Keyboard Module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2321
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3043
#, no-wrap
msgid "`wayland`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2323
#, no-wrap
msgid "Qt 5 wrapper for Wayland"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2324
#, no-wrap
msgid "`webchannel`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2326
#, no-wrap
msgid "Qt 5 library for integration of C++/QML with HTML/js clients"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2327
#, no-wrap
msgid "`webengine`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2329
#, no-wrap
msgid "Qt 5 library to render web content"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2330
#, no-wrap
msgid "`webkit`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2332
#, no-wrap
msgid "QtWebKit with a more modern WebKit code base"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2333
#, no-wrap
msgid "`websockets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2335
#, no-wrap
msgid "Qt implementation of WebSocket protocol"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2336
#, no-wrap
msgid "`websockets-qml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2338
#, no-wrap
msgid "Qt implementation of WebSocket protocol (QML bindings)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2339
#, no-wrap
msgid "`webview`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2341
#, no-wrap
msgid "Qt component for displaying web content"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2342
#, no-wrap
msgid "`widgets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2344
#, no-wrap
msgid "Qt C++ widgets module"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2345
#, no-wrap
msgid "`x11extras`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2347
#, no-wrap
msgid "Qt platform-specific features for X11-based systems"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2348
#, no-wrap
msgid "`xml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2350
#, no-wrap
msgid "Qt SAX and DOM implementations"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2351
#, no-wrap
msgid "`xmlpatterns`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2352
#, no-wrap
msgid "Qt support for XPath, XQuery, XSLT and XML Schema"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2355
msgid ""
"To determine the libraries an application depends on, run `ldd` on the main "
"executable after a successful compilation."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2357
#, no-wrap
msgid "Available Qt Tool Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2364
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3091
#, no-wrap
msgid "`buildtools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2366
#, no-wrap
msgid "build tools (`moc`, `rcc`), needed for almost every Qt application."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2367
#, no-wrap
msgid "`linguisttools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2369
#, no-wrap
msgid "localization tools: `lrelease`, `lupdate`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2371
#, no-wrap
msgid "Makefile generator/build utility"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2374
#, no-wrap
msgid "Available Qt Plugin Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2381
#, no-wrap
msgid "`imageformats`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2382
#, no-wrap
msgid "plugins for TGA, TIFF, and MNG image formats"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2385
#, no-wrap
msgid "Selecting Qt 5 Components"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2391
msgid ""
"In this example, the ported application uses the Qt 5 graphical user "
"interface library, the Qt 5 core library, all of the Qt 5 code generation "
"tools and Qt 5's Makefile generator. Since the `gui` library implies a "
"dependency on the core library, `core` does not need to be specified. The "
"Qt 5 code generation tools `moc`, `uic` and `rcc`, as well as the Makefile "
"generator `qmake` are only needed at buildtime, thus they are specified with "
"the `_build` suffix:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2396
#, no-wrap
msgid ""
"USES=\tqt:5\n"
"USE_QT=\tgui buildtools_build qmake_build\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2401
#, no-wrap
msgid "Using `qmake`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2407
msgid ""
"If the application provides a qmake project file ([.filename]#*.pro#), "
"define `USES= qmake` along with `USE_QT`. `USES= qmake` already implies a "
"build dependency on qmake, therefore the qmake component can be omitted from "
"`USE_QT`. Similar to <<using-cmake,CMake>>, qmake supports out-of-source "
"builds, which can be enabled by specifying the `outsource` argument (see "
"<<using-qmake-example,`USES= qmake` example>>). Also see <<using-qmake-"
"arguments>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2409
#, no-wrap
msgid "Possible Arguments for `USES= qmake`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2416
#, no-wrap
msgid "`no_configure`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2418
#, no-wrap
msgid "Do not add the configure target. This is implied by `HAS_CONFIGURE=yes` and `GNU_CONFIGURE=yes`. It is required when the build only needs the environment setup from `USES= qmake`, but otherwise runs `qmake` on its own."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2419
#, no-wrap
msgid "`no_env`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2421
#, no-wrap
msgid "Suppress modification of the configure and make environments. It is only required when `qmake` is used to configure the software and the build fails to understand the environment setup by `USES= qmake`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2422
#, no-wrap
msgid "`norecursive`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2424
#, no-wrap
msgid "Do not pass the `-recursive` argument to `qmake`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2425
#, no-wrap
msgid "`outsource`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2426
#, no-wrap
msgid "Perform an out-of-source build."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2429
#, no-wrap
msgid "Variables for Ports That Use `qmake`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2436
#, no-wrap
msgid "`QMAKE_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2438
#, no-wrap
msgid "Port specific qmake flags to be passed to the `qmake` binary."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2439
#, no-wrap
msgid "`QMAKE_ENV`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2441
#, no-wrap
msgid "Environment variables to be set for the `qmake` binary. The default is `${CONFIGURE_ENV}`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2442
#, no-wrap
msgid "`QMAKE_SOURCE_PATH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2443
#, no-wrap
msgid "Path to qmake project files ([.filename]#.pro#). The default is `${WRKSRC}` if an out-of-source build is requested, empty otherwise."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2446
msgid "When using `USES= qmake`, these settings are deployed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2453
#, no-wrap
msgid ""
"CONFIGURE_ARGS+=\t--with-qt-includes=${QT_INCDIR} \\\n"
"\t\t\t--with-qt-libraries=${QT_LIBDIR} \\\n"
"\t\t\t--with-extra-libs=${LOCALBASE}/lib \\\n"
"\t\t\t--with-extra-includes=${LOCALBASE}/include\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2457
#, no-wrap
msgid ""
"CONFIGURE_ENV+=\tQTDIR=\"${QT_PREFIX}\" QMAKE=\"${QMAKE}\" \\\n"
"\t\tMOC=\"${MOC}\" RCC=\"${RCC}\" UIC=\"${UIC}\" \\\n"
"\t\tQMAKESPEC=\"${QMAKESPEC}\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2461
#, no-wrap
msgid ""
"PLIST_SUB+=\tQT_INCDIR=${QT_INCDIR_REL} \\\n"
"\t\tQT_LIBDIR=${QT_LIBDIR_REL} \\\n"
"\t\tQT_PLUGINDIR=${QT_PLUGINDIR_REL}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2465
msgid ""
"Some configure scripts do not support the arguments above. To suppress "
"modification of `CONFIGURE_ENV` and `CONFIGURE_ARGS`, set `USES= qmake:"
"no_env`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2467
#, no-wrap
msgid "`USES= qmake` Example"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2471
msgid "This snippet demonstrates the use of qmake for a Qt 5 port:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2476
#, no-wrap
msgid ""
"USES=\tqmake:outsource qt:5\n"
"USE_QT=\tbuildtools_build\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2481
msgid ""
"Qt applications are often written to be cross-platform and often X11/Unix is "
"not the platform they are developed on, which in turn leads to certain loose "
"ends, like:"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2483
msgid ""
"_Missing additional include paths._ Many applications come with system tray "
"icon support, but neglect to look for includes and/or libraries in the X11 "
"directories. To add directories to `qmake`'s include and library search "
"paths via the command line, use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2488
#, no-wrap
msgid ""
"QMAKE_ARGS+=\tINCLUDEPATH+=${LOCALBASE}/include \\\n"
"\t\tLIBS+=-L${LOCALBASE}/lib\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2491
msgid ""
"_Bogus installation paths._ Sometimes data such as icons or .desktop files "
"are by default installed into directories which are not scanned by XDG-"
"compatible applications. package:editors/texmaker[] is an example for this - "
"look at [.filename]#patch-texmaker.pro# in the [.filename]#files# directory "
"of that port for a template on how to remedy this directly in the `qmake` "
"project file."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2493
#, no-wrap
msgid "Using KDE"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2496
#, no-wrap
msgid "KDE Variable Definitions"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2503
msgid ""
"If the application depends on KDE, set `USES+=kde:5` and `USE_KDE` to the "
"list of required components. `_build` and `_run` suffixes can be used to "
"force components dependency type (for example, `baseapps_run`). If no "
"suffix is set, a default dependency type will be used. To force both types, "
"add the component twice with both suffixes (for example, `ecm_build "
"ecm_run`). Available components are listed below (up-to-date components are "
"also listed in [.filename]#/usr/ports/Mk/Uses/kde.mk#):"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2505
#, no-wrap
msgid "Available KDE Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2512
#, no-wrap
msgid "`activities`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2514
#, no-wrap
msgid "KF5 runtime and library to organize work in separate activities"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2515
#, no-wrap
msgid "`activities-stats`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2517
#, no-wrap
msgid "KF5 statistics for activities"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2518
#, no-wrap
msgid "`activitymanagerd`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2520
#, no-wrap
msgid "System service to manage user's activities, track the usage patterns"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2521
#, no-wrap
msgid "`akonadi`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2523
#, no-wrap
msgid "Storage server for KDE-Pim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2524
#, no-wrap
msgid "`akonadicalendar`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2526
#, no-wrap
msgid "Akonadi Calendar Integration"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2527
#, no-wrap
msgid "`akonadiconsole`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2529
#, no-wrap
msgid "Akonadi management and debugging console"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2530
#, no-wrap
msgid "`akonadicontacts`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2532
#, no-wrap
msgid "Libraries and daemons to implement Contact Management in Akonadi"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2533
#, no-wrap
msgid "`akonadiimportwizard`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2535
#, no-wrap
msgid "Import data from other mail clients to KMail"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2536
#, no-wrap
msgid "`akonadimime`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2538
#, no-wrap
msgid "Libraries and daemons to implement basic email handling"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2539
#, no-wrap
msgid "`akonadinotes`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2541
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2904
#, no-wrap
msgid "KDE library for accessing mail storages in MBox format"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2542
#, no-wrap
msgid "`akonadisearch`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2544
#, no-wrap
msgid "Libraries and daemons to implement searching in Akonadi"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2545
#, no-wrap
msgid "`akregator`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2547
#, no-wrap
msgid "A Feed Reader by KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2548
#, no-wrap
msgid "`alarmcalendar`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2550
#, no-wrap
msgid "KDE API for KAlarm alarms"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2551
#, no-wrap
msgid "`apidox`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2553
#, no-wrap
msgid "KF5 API Documentation Tools"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2554
#, no-wrap
msgid "`archive`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2556
#, no-wrap
msgid "KF5 library that provides classes for handling archive formats"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2557
#, no-wrap
msgid "`attica`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2559
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2562
#, no-wrap
msgid "Open Collaboration Services API library KDE5 version"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2560
#, no-wrap
msgid "`attica5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2563
#, no-wrap
msgid "`auth`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2565
#, no-wrap
msgid "KF5 abstraction to system policy and authentication features"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2566
#, no-wrap
msgid "`baloo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2568
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2574
#, no-wrap
msgid "KF5 Framework for searching and managing user metadata"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2569
#, no-wrap
msgid "`baloo-widgets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2571
#, no-wrap
msgid "BalooWidgets library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2572
#, no-wrap
msgid "`baloo5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2575
#, no-wrap
msgid "`blog`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2577
#, no-wrap
msgid "KDE API for weblogging access"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2578
#, no-wrap
msgid "`bookmarks`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2580
#, no-wrap
msgid "KF5 library for bookmarks and the XBEL format"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2581
#, no-wrap
msgid "`breeze`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2583
#, no-wrap
msgid "Plasma5 artwork, styles and assets for the Breeze visual style"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2584
#, no-wrap
msgid "`breeze-gtk`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2586
#, no-wrap
msgid "Plasma5 Breeze visual style for Gtk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2587
#, no-wrap
msgid "`breeze-icons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2589
#, no-wrap
msgid "Breeze icon theme for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2590
#, no-wrap
msgid "`calendarcore`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2592
#, no-wrap
msgid "KDE calendar access library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2593
#, no-wrap
msgid "`calendarsupport`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2595
#, no-wrap
msgid "Calendar support libraries for KDEPim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2596
#, no-wrap
msgid "`calendarutils`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2598
#, no-wrap
msgid "KDE utility and user interface functions for accessing calendar"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2599
#, no-wrap
msgid "`codecs`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2601
#, no-wrap
msgid "KF5 library for string manipulation"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2602
#, no-wrap
msgid "`completion`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2604
#, no-wrap
msgid "KF5 text completion helpers and widgets"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2605
#, no-wrap
msgid "`config`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2607
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2610
#, no-wrap
msgid "KF5 widgets for configuration dialogs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2608
#, no-wrap
msgid "`configwidgets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2611
#, no-wrap
msgid "`contacts`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2613
#, no-wrap
msgid "KDE api to manage contact information"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2614
#, no-wrap
msgid "`coreaddons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2616
#, no-wrap
msgid "KF5 addons to QtCore"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2617
#, no-wrap
msgid "`crash`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2619
#, no-wrap
msgid "KF5 library to handle crash analysis and bug report from apps"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2620
#, no-wrap
msgid "`dbusaddons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2622
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3030
#, no-wrap
msgid "KF5 addons to QtDBus"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2623
#, no-wrap
msgid "`decoration`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2625
#, no-wrap
msgid "Plasma5 library to create window decorations"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2626
#, no-wrap
msgid "`designerplugin`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2628
#, no-wrap
msgid "KF5 integration of Frameworks widgets in Qt Designer/Creator"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2629
#, no-wrap
msgid "`discover`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2631
#, no-wrap
msgid "Plasma5 package management tools"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2632
#, no-wrap
msgid "`dnssd`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2634
#, no-wrap
msgid "KF5 abstraction to system DNSSD features"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2635
#, no-wrap
msgid "`doctools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2637
#, no-wrap
msgid "KF5 documentation generation from docbook"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2638
#, no-wrap
msgid "`drkonqi`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2640
#, no-wrap
msgid "Plasma5 crash handler"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2641
#, no-wrap
msgid "`ecm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2643
#, no-wrap
msgid "Extra modules and scripts for CMake"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2644
#, no-wrap
msgid "`emoticons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2646
#, no-wrap
msgid "KF5 library to convert emoticons"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2647
#, no-wrap
msgid "`eventviews`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2649
#, no-wrap
msgid "Event view libriares for KDEPim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2650
#, no-wrap
msgid "`filemetadata`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2652
#, no-wrap
msgid "KF5 library for extracting file metadata"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2653
#, no-wrap
msgid "`frameworkintegration`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2655
#, no-wrap
msgid "KF5 workspace and cross-framework integration plugins"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2656
#, no-wrap
msgid "`gapi`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2658
#, no-wrap
msgid "KDE based library to access google services"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2659
#, no-wrap
msgid "`globalaccel`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2661
#, no-wrap
msgid "KF5 library to add support for global workspace shortcuts"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2662
#, no-wrap
msgid "`grantlee-editor`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2664
#, no-wrap
msgid "Editor for Grantlee themes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2665
#, no-wrap
msgid "`grantleetheme`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2667
#, no-wrap
msgid "KDE PIM grantleetheme"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2668
#, no-wrap
msgid "`gravatar`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2670
#, no-wrap
msgid "Library for gravatar support"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2671
#, no-wrap
msgid "`guiaddons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2673
#, no-wrap
msgid "KF5 addons to QtGui"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2674
#, no-wrap
msgid "`holidays`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2676
#, no-wrap
msgid "KDE library for calendar holidays"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2677
#, no-wrap
msgid "`hotkeys`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2679
#, no-wrap
msgid "Plasma5 library for hotkeys"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2680
#, no-wrap
msgid "`i18n`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2682
#, no-wrap
msgid "KF5 advanced internationalization framework"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2683
#, no-wrap
msgid "`iconthemes`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2685
#, no-wrap
msgid "KF5 library for handling icons in applications"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2686
#, no-wrap
msgid "`identitymanagement`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2688
#, no-wrap
msgid "KDE pim identities"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2689
#, no-wrap
msgid "`idletime`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2691
#, no-wrap
msgid "KF5 library for monitoring user activity"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2692
#, no-wrap
msgid "`imap`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2694
#, no-wrap
msgid "KDE API for IMAP support"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2695
#, no-wrap
msgid "`incidenceeditor`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2697
#, no-wrap
msgid "Incidence editor libriares for KDEPim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2698
#, no-wrap
msgid "`infocenter`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2700
#, no-wrap
msgid "Plasma5 utility providing system information"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2701
#, no-wrap
msgid "`init`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2703
#, no-wrap
msgid "KF5 process launcher to speed up launching KDE applications"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2704
#, no-wrap
msgid "`itemmodels`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2706
#, no-wrap
msgid "KF5 models for Qt Model/View system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2707
#, no-wrap
msgid "`itemviews`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2709
#, no-wrap
msgid "KF5 widget addons for Qt Model/View"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2710
#, no-wrap
msgid "`jobwidgets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2712
#, no-wrap
msgid "KF5 widgets for tracking KJob instance"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2713
#, no-wrap
msgid "`js`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2715
#, no-wrap
msgid "KF5 library providing an ECMAScript interpreter"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2716
#, no-wrap
msgid "`jsembed`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2718
#, no-wrap
msgid "KF5 library for binding JavaScript objects to QObjects"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2719
#, no-wrap
msgid "`kaddressbook`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2721
#, no-wrap
msgid "KDE contact manager"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2722
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2725
#, no-wrap
msgid "`kalarm`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2724
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2727
#, no-wrap
msgid "Personal alarm scheduler"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2728
#, no-wrap
msgid "`kate`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2730
#, no-wrap
msgid "Basic editor framework for the KDE system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2731
#, no-wrap
msgid "`kcmutils`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2733
#, no-wrap
msgid "KF5 utilities for working with KCModules"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2734
#, no-wrap
msgid "`kde-cli-tools`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2736
#, no-wrap
msgid "Plasma5 non-interactive system tools"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2737
#, no-wrap
msgid "`kde-gtk-config`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2739
#, no-wrap
msgid "Plasma5 GTK2 and GTK3 configurator"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2740
#, no-wrap
msgid "`kdeclarative`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2742
#, no-wrap
msgid "KF5 library providing integration of QML and KDE Frameworks"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2743
#, no-wrap
msgid "`kded`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2745
#, no-wrap
msgid "KF5 extensible daemon for providing system level services"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2746
#, no-wrap
msgid "`kdelibs4support`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2748
#, no-wrap
msgid "KF5 porting aid from KDELibs4"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2749
#, no-wrap
msgid "`kdepim-addons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2751
#, no-wrap
msgid "KDE PIM addons"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2752
#, no-wrap
msgid "`kdepim-apps-libs`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2754
#, no-wrap
msgid "KDE PIM mail related libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2755
#, no-wrap
msgid "`kdepim-runtime5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2757
#, no-wrap
msgid "KDE PIM tools and services"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2758
#, no-wrap
msgid "`kdeplasma-addons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2760
#, no-wrap
msgid "Plasma5 addons to improve the Plasma experience"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2761
#, no-wrap
msgid "`kdesu`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2763
#, no-wrap
msgid "KF5 integration with su for elevated privileges"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2764
#, no-wrap
msgid "`kdewebkit`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2766
#, no-wrap
msgid "KF5 library providing integration of QtWebKit"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2767
#, no-wrap
msgid "`kgamma5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2769
#, no-wrap
msgid "Plasma5 monitor's gamma settings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2770
#, no-wrap
msgid "`khtml`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2772
#, no-wrap
msgid "KF5 KTHML rendering engine"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2773
#, no-wrap
msgid "`kimageformats`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2775
#, no-wrap
msgid "KF5 library providing support for additional image formats"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2776
#, no-wrap
msgid "`kio`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2778
#, no-wrap
msgid "KF5 resource and network access abstraction"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2779
#, no-wrap
msgid "`kirigami2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2781
#, no-wrap
msgid "QtQuick based components set"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2782
#, no-wrap
msgid "`kitinerary`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2784
#, no-wrap
msgid "Data Model and Extraction System for Travel Reservation information"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2785
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2788
#, no-wrap
msgid "`kmail`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2787
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2790
#, no-wrap
msgid "KDE mail client"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2791
#, no-wrap
msgid "`kmail-account-wizard`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2793
#, no-wrap
msgid "KDE mail account wizard"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2794
#, no-wrap
msgid "`kmenuedit`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2796
#, no-wrap
msgid "Plasma5 menu editor"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2797
#, no-wrap
msgid "`knotes`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2799
#, no-wrap
msgid "Popup notes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2800
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2803
#, no-wrap
msgid "`kontact`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2802
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2805
#, no-wrap
msgid "KDE Personal Information Manager"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2806
#, no-wrap
msgid "`kontactinterface`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2808
#, no-wrap
msgid "KDE glue for embedding KParts into Kontact"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2809
#, no-wrap
msgid "`korganizer`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2811
#, no-wrap
msgid "Calendar and scheduling Program"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2812
#, no-wrap
msgid "`kpimdav`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2814
#, no-wrap
msgid "A DAV protocol implementation with KJobs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2815
#, no-wrap
msgid "`kpkpass`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2817
#, no-wrap
msgid "Library to deal with Apple Wallet pass files"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2818
#, no-wrap
msgid "`kross`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2820
#, no-wrap
msgid "KF5 multi-language application scripting"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2821
#, no-wrap
msgid "`kscreen`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2823
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2883
#, no-wrap
msgid "Plasma5 screen management library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2824
#, no-wrap
msgid "`kscreenlocker`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2826
#, no-wrap
msgid "Plasma5 secure lock screen architecture"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2827
#, no-wrap
msgid "`ksmtp`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2829
#, no-wrap
msgid "Job-based library to send email through an SMTP server"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2830
#, no-wrap
msgid "`ksshaskpass`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2832
#, no-wrap
msgid "Plasma5 ssh-add frontend"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2833
#, no-wrap
msgid "`ksysguard`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2835
#, no-wrap
msgid "Plasma5 utility to track and control the running processes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2836
#, no-wrap
msgid "`kwallet-pam`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2838
#, no-wrap
msgid "Plasma5 KWallet PAM Integration"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2839
#, no-wrap
msgid "`kwayland-integration`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2841
#, no-wrap
msgid "Integration plugins for a Wayland-based desktop"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2842
#, no-wrap
msgid "`kwin`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2844
#, no-wrap
msgid "Plasma5 window manager"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2845
#, no-wrap
msgid "`kwrited`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2847
#, no-wrap
msgid "Plasma5 daemon listening for wall and write messages"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2848
#, no-wrap
msgid "`ldap`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2850
#, no-wrap
msgid "LDAP access API for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2851
#, no-wrap
msgid "`libkcddb`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2853
#, no-wrap
msgid "KDE CDDB library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2854
#, no-wrap
msgid "`libkcompactdisc`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2856
#, no-wrap
msgid "KDE library for interfacing with audio CDs"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2857
#, no-wrap
msgid "`libkdcraw`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2859
#, no-wrap
msgid "LibRaw interface for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2860
#, no-wrap
msgid "`libkdegames`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2862
#, no-wrap
msgid "Libraries used by KDE games"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2863
#, no-wrap
msgid "`libkdepim`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2865
#, no-wrap
msgid "KDE PIM Libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2866
#, no-wrap
msgid "`libkeduvocdocument`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2868
#, no-wrap
msgid "Library for reading and writing vocabulary files"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2869
#, no-wrap
msgid "`libkexiv2`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2871
#, no-wrap
msgid "Exiv2 library interface for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2872
#, no-wrap
msgid "`libkipi`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2874
#, no-wrap
msgid "KDE Image Plugin Interface"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2875
#, no-wrap
msgid "`libkleo`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2877
#, no-wrap
msgid "Certificate manager for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2878
#, no-wrap
msgid "`libksane`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2880
#, no-wrap
msgid "SANE library interface for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2881
#, no-wrap
msgid "`libkscreen`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2884
#, no-wrap
msgid "`libksieve`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2886
#, no-wrap
msgid "Sieve libriares for KDEPim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2887
#, no-wrap
msgid "`libksysguard`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2889
#, no-wrap
msgid "Plasma5 library to track and control running processes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2890
#, no-wrap
msgid "`mailcommon`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2892
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2952
#, no-wrap
msgid "Common libriares for KDEPim"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2893
#, no-wrap
msgid "`mailimporter`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2895
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2907
#, no-wrap
msgid "Import mbox files to KMail"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2896
#, no-wrap
msgid "`mailtransport`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2898
#, no-wrap
msgid "KDE library to managing mail transport"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2899
#, no-wrap
msgid "`marble`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2901
#, no-wrap
msgid "Virtual globe and world atlas for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2902
#, no-wrap
msgid "`mbox`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2905
#, no-wrap
msgid "`mbox-importer`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2908
#, no-wrap
msgid "`mediaplayer`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2910
#, no-wrap
msgid "KF5 plugin interface for media player features"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2911
#, no-wrap
msgid "`messagelib`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2913
#, no-wrap
msgid "Library for handling messages"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2914
#, no-wrap
msgid "`milou`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2916
#, no-wrap
msgid "Plasma5 Plasmoid for search"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2917
#, no-wrap
msgid "`mime`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2919
#, no-wrap
msgid "Library for handling MIME data"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2920
#, no-wrap
msgid "`newstuff`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2922
#, no-wrap
msgid "KF5 library for downloading application assets from the network"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2923
#, no-wrap
msgid "`notifications`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2925
#, no-wrap
msgid "KF5 abstraction for system notifications"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2926
#, no-wrap
msgid "`notifyconfig`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2928
#, no-wrap
msgid "KF5 configuration system for KNotify"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2929
#, no-wrap
msgid "`okular`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2931
#, no-wrap
msgid "KDE universal document viewer"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2932
#, no-wrap
msgid "`oxygen`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2934
#, no-wrap
msgid "Plasma5 Oxygen style"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2935
#, no-wrap
msgid "`oxygen-icons5`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2937
#, no-wrap
msgid "The Oxygen icon theme for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2938
#, no-wrap
msgid "`package`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2940
#, no-wrap
msgid "KF5 library to load and install packages"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2941
#, no-wrap
msgid "`parts`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2943
#, no-wrap
msgid "KF5 document centric plugin system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2944
#, no-wrap
msgid "`people`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2946
#, no-wrap
msgid "KF5 library providing access to contacts"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2947
#, no-wrap
msgid "`pim-data-exporter`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2949
#, no-wrap
msgid "Import and export KDE PIM settings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2950
#, no-wrap
msgid "`pimcommon`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2953
#, no-wrap
msgid "`pimtextedit`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2955
#, no-wrap
msgid "KDE library for PIM-specific text editing utilities"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2956
#, no-wrap
msgid "`plasma-browser-integration`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2958
#, no-wrap
msgid "Plasma5 components to integrate browsers into the desktop"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2959
#, no-wrap
msgid "`plasma-desktop`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2961
#, no-wrap
msgid "Plasma5 plasma desktop"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2962
#, no-wrap
msgid "`plasma-framework`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2964
#, no-wrap
msgid "KF5 plugin based UI runtime used to write user interfaces"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2965
#, no-wrap
msgid "`plasma-integration`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2967
#, no-wrap
msgid "Qt Platform Theme integration plugins for the Plasma workspaces"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2968
#, no-wrap
msgid "`plasma-pa`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2970
#, no-wrap
msgid "Plasma5 Plasma pulse audio mixer"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2971
#, no-wrap
msgid "`plasma-sdk`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2973
#, no-wrap
msgid "Plasma5 applications useful for Plasma development"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2974
#, no-wrap
msgid "`plasma-workspace`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2976
#, no-wrap
msgid "Plasma5 Plasma workspace"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2977
#, no-wrap
msgid "`plasma-workspace-wallpapers`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2979
#, no-wrap
msgid "Plasma5 wallpapers"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2980
#, no-wrap
msgid "`plotting`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2982
#, no-wrap
msgid "KF5 lightweight plotting framework"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2983
#, no-wrap
msgid "`polkit-kde-agent-1`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2985
#, no-wrap
msgid "Plasma5 daemon providing a polkit authentication UI"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2986
#, no-wrap
msgid "`powerdevil`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2988
#, no-wrap
msgid "Plasma5 tool to manage the power consumption settings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2989
#, no-wrap
msgid "`prison`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2991
#, no-wrap
msgid "API to produce barcodes"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2992
#, no-wrap
msgid "`pty`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2994
#, no-wrap
msgid "KF5 pty abstraction"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2995
#, no-wrap
msgid "`purpose`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2997
#, no-wrap
msgid "Offers available actions for a specific purpose"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:2998
#, no-wrap
msgid "`qqc2-desktop-style`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3000
#, no-wrap
msgid "Qt QuickControl2 style for KDE"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3001
#, no-wrap
msgid "`runner`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3003
#, no-wrap
msgid "KF5 parallelized query system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3004
#, no-wrap
msgid "`service`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3006
#, no-wrap
msgid "KF5 advanced plugin and service introspection"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3007
#, no-wrap
msgid "`solid`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3009
#, no-wrap
msgid "KF5 hardware integration and detection"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3010
#, no-wrap
msgid "`sonnet`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3012
#, no-wrap
msgid "KF5 plugin-based spell checking library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3013
#, no-wrap
msgid "`syndication`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3015
#, no-wrap
msgid "KDE RSS feed handling library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3016
#, no-wrap
msgid "`syntaxhighlighting`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3018
#, no-wrap
msgid "KF5 syntax highlighting engine for structured text and code"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3019
#, no-wrap
msgid "`systemsettings`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3021
#, no-wrap
msgid "Plasma5 system settings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3022
#, no-wrap
msgid "`texteditor`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3024
#, no-wrap
msgid "KF5 advanced embeddable text editor"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3025
#, no-wrap
msgid "`textwidgets`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3027
#, no-wrap
msgid "KF5 advanced text editing widgets"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3028
#, no-wrap
msgid "`threadweaver`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3031
#, no-wrap
msgid "`tnef`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3033
#, no-wrap
msgid "KDE API for the handling of TNEF data"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3034
#, no-wrap
msgid "`unitconversion`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3036
#, no-wrap
msgid "KF5 library for unit conversion"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3037
#, no-wrap
msgid "`user-manager`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3039
#, no-wrap
msgid "Plasma5 user manager"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3040
#, no-wrap
msgid "`wallet`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3042
#, no-wrap
msgid "KF5 secure and unified container for user passwords"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3045
#, no-wrap
msgid "KF5 Client and Server library wrapper for the Wayland libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3046
#, no-wrap
msgid "`widgetsaddons`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3048
#, no-wrap
msgid "KF5 addons to QtWidgets"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3049
#, no-wrap
msgid "`windowsystem`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3051
#, no-wrap
msgid "KF5 library for access to the windowing system"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3052
#, no-wrap
msgid "`xmlgui`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3054
#, no-wrap
msgid "KF5 user configurable main windows"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3055
#, no-wrap
msgid "`xmlrpcclient`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3056
#, no-wrap
msgid "KF5 interaction with XMLRPC services"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3059
#, no-wrap
msgid "`USE_KDE` Example"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3068
msgid ""
"This is a simple example for a KDE port. `USES= cmake` instructs the port "
"to utilize CMake, a configuration tool widely used by KDE projects (see "
"<<using-cmake>> for detailed usage). `USE_KDE` brings dependency on KDE "
"libraries. Required KDE components and other dependencies can be determined "
"through the configure log. `USE_KDE` does not imply `USE_QT`. If a port "
"requires some Qt components, specify them in `USE_QT`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3074
#, no-wrap
msgid ""
"USES=\t\tcmake kde:5 qt:5\n"
"USE_KDE=\tecm\n"
"USE_QT=\t\tcore buildtools_build qmake_build\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3079
#, no-wrap
msgid "Using LXQt"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3082
msgid ""
"Applications depending on LXQt should set `USES+= lxqt` and set `USE_LXQT` "
"to the list of required components from the table below"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3084
#, no-wrap
msgid "Available LXQt Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3093
#, no-wrap
msgid "Helpers for additional CMake modules"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3094
#, no-wrap
msgid "`libfmqt`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3096
#, no-wrap
msgid "Libfm Qt bindings"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3097
#, no-wrap
msgid "`lxqt`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3099
#, no-wrap
msgid "LXQt core library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3100
#, no-wrap
msgid "`qtxdg`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3101
#, no-wrap
msgid "Qt implementation of freedesktop.org XDG specifications"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3104
#, no-wrap
msgid "`USE_LXQT` Example"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3109
msgid ""
"This is a simple example, `USE_LXQT` adds a dependency on LXQt libraries. "
"Required LXQt components and other dependencies can be determined from the "
"configure log."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3115
#, no-wrap
msgid ""
"USES=\tcmake lxqt qt:5 tar:xz\n"
"USE_QT=\t\tcore dbus widgets buildtools_build qmake_build\n"
"USE_LXQT=\tbuildtools libfmqt\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3120
#, no-wrap
msgid "Using Java"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3123
#, no-wrap
msgid "Variable Definitions"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3126
msgid ""
"If the port needs a Java(TM) Development Kit (JDK(TM)) to either build, run "
"or even extract the distfile, then define `USE_JAVA`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3130
msgid ""
"There are several JDKs in the ports collection, from various vendors, and in "
"several versions. If the port must use a particular version, specify it "
"using the `JAVA_VERSION` variable. The most current version is package:java/"
"openjdk18[], with package:java/openjdk17[], package:java/openjdk16[], "
"package:java/openjdk15[], package:java/openjdk14[], package:java/"
"openjdk13[], package:java/openjdk12[], package:java/openjdk11[], package:"
"java/openjdk8[], and package:java/openjdk7[] also available."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3132
#, no-wrap
msgid "Variables Which May be Set by Ports That Use Java"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3139
#, no-wrap
msgid "`USE_JAVA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3141
#, no-wrap
msgid "Define for the remaining variables to have any effect."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3142
#, no-wrap
msgid "`JAVA_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3144
#, no-wrap
msgid "List of space-separated suitable Java versions for the port. An optional `\"+\"` allows specifying a range of versions (allowed values: `7[+] 8[+] 11[+] 12[+] 13[+] 14[+] 15[+] 16[+] 17[+] 18[+]`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3145
#, no-wrap
msgid "`JAVA_OS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3147
#, no-wrap
msgid "List of space-separated suitable JDK port operating systems for the port (allowed values: `native linux`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3148
#, no-wrap
msgid "`JAVA_VENDOR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3150
#, no-wrap
msgid "List of space-separated suitable JDK port vendors for the port (allowed values: `openjdk oracle`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3151
#, no-wrap
msgid "`JAVA_BUILD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3153
#, no-wrap
msgid "When set, add the selected JDK port to the build dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3154
#, no-wrap
msgid "`JAVA_RUN`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3156
#, no-wrap
msgid "When set, add the selected JDK port to the run dependencies."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3157
#, no-wrap
msgid "`JAVA_EXTRACT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3158
#, no-wrap
msgid "When set, add the selected JDK port to the extract dependencies."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3161
msgid ""
"Below is the list of all settings a port will receive after setting "
"`USE_JAVA`:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3163
#, no-wrap
msgid "Variables Provided to Ports That Use Java"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3169
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3248
#, no-wrap
msgid "Value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3170
#, no-wrap
msgid "`JAVA_PORT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3172
#, no-wrap
msgid "The name of the JDK port (for example, `java/openjdk6`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3173
#, no-wrap
msgid "`JAVA_PORT_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3175
#, no-wrap
msgid "The full version of the JDK port (for example, `1.6.0`). Only the first two digits of this version number are needed, use `${JAVA_PORT_VERSION:C/^([0-9])\\.([0-9])(.*)$/\\1.\\2/}`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3176
#, no-wrap
msgid "`JAVA_PORT_OS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3178
#, no-wrap
msgid "The operating system used by the JDK port (for example, `'native'`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3179
#, no-wrap
msgid "`JAVA_PORT_VENDOR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3181
#, no-wrap
msgid "The vendor of the JDK port (for example, `'openjdk'`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3182
#, no-wrap
msgid "`JAVA_PORT_OS_DESCRIPTION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3184
#, no-wrap
msgid "Description of the operating system used by the JDK port (for example, `'Native'`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3185
#, no-wrap
msgid "`JAVA_PORT_VENDOR_DESCRIPTION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3187
#, no-wrap
msgid "Description of the vendor of the JDK port (for example, `'OpenJDK BSD Porting Team'`)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3188
#, no-wrap
msgid "`JAVA_HOME`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3190
#, no-wrap
msgid "Path to the installation directory of the JDK (for example, [.filename]#'/usr/local/openjdk6'#)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3191
#, no-wrap
msgid "`JAVAC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3193
#, no-wrap
msgid "Path to the Java compiler to use (for example, [.filename]#'/usr/local/openjdk6/bin/javac'#)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3194
#, no-wrap
msgid "`JAR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3196
#, no-wrap
msgid "Path to the `jar` tool to use (for example, [.filename]#'/usr/local/openjdk6/bin/jar'# or [.filename]#'/usr/local/bin/fastjar'#)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3197
#, no-wrap
msgid "`APPLETVIEWER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3199
#, no-wrap
msgid "Path to the `appletviewer` utility (for example, [.filename]#'/usr/local/openjdk6/bin/appletviewer'#)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3200
#, no-wrap
msgid "`JAVA`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3202
#, no-wrap
msgid "Path to the `java` executable. Use this for executing Java programs (for example, [.filename]#'/usr/local/openjdk6/bin/java'#)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3203
#, no-wrap
msgid "`JAVADOC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3205
#, no-wrap
msgid "Path to the `javadoc` utility program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3206
#, no-wrap
msgid "`JAVAH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3208
#, no-wrap
msgid "Path to the `javah` program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3209
#, no-wrap
msgid "`JAVAP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3211
#, no-wrap
msgid "Path to the `javap` program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3212
#, no-wrap
msgid "`JAVA_KEYTOOL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3214
#, no-wrap
msgid "Path to the `keytool` utility program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3215
#, no-wrap
msgid "`JAVA_N2A`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3217
#, no-wrap
msgid "Path to the `native2ascii` tool."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3218
#, no-wrap
msgid "`JAVA_POLICYTOOL`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3220
#, no-wrap
msgid "Path to the `policytool` program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3221
#, no-wrap
msgid "`JAVA_SERIALVER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3223
#, no-wrap
msgid "Path to the `serialver` utility program."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3224
#, no-wrap
msgid "`RMIC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3226
#, no-wrap
msgid "Path to the RMI stub/skeleton generator, `rmic`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3227
#, no-wrap
msgid "`RMIREGISTRY`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3229
#, no-wrap
msgid "Path to the RMI registry program, `rmiregistry`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3230
#, no-wrap
msgid "`RMID`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3232
#, no-wrap
msgid "Path to the RMI daemon program `rmid`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3233
#, no-wrap
msgid "`JAVA_CLASSES`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3234
#, no-wrap
msgid "Path to the archive that contains the JDK class files, [.filename]#${JAVA_HOME}/jre/lib/rt.jar#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3238
msgid ""
"Use the `java-debug` make target to get information for debugging the port. "
"It will display the value of many of the previously listed variables."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3240
msgid ""
"Additionally, these constants are defined so all Java ports may be installed "
"in a consistent way:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3242
#, no-wrap
msgid "Constants Defined for Ports That Use Java"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3246
#, no-wrap
msgid "Constant"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3249
#, no-wrap
msgid "`JAVASHAREDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3251
#, no-wrap
msgid "The base directory for everything related to Java. Default: [.filename]#${PREFIX}/share/java#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3252
#, no-wrap
msgid "`JAVAJARDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3254
#, no-wrap
msgid "The directory where JAR files is installed. Default: [.filename]#${JAVASHAREDIR}/classes#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3255
#, no-wrap
msgid "`JAVALIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3256
#, no-wrap
msgid "The directory where JAR files installed by other ports are located. Default: [.filename]#${LOCALBASE}/share/java/classes#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3259
msgid ""
"The related entries are defined in both `PLIST_SUB` (documented in crossref:"
"plist[plist-sub,Changing pkg-plist Based on Make Variables]) and `SUB_LIST`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3261
#, no-wrap
msgid "Building with Ant"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3267
msgid ""
"When the port is to be built using Apache Ant, it has to define `USE_ANT`. "
"Ant is thus considered to be the sub-make command. When no `do-build` "
"target is defined by the port, a default one will be set that runs Ant "
"according to `MAKE_ENV`, `MAKE_ARGS` and `ALL_TARGET`. This is similar to "
"the `USES= gmake` mechanism, which is documented in <<building>>."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3269
#, no-wrap
msgid "Best Practices"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3274
msgid ""
"When porting a Java library, the port has to install the JAR file(s) in [."
-"filename]#${JAVAJARDIR}#, and everything else under [.filename]#"
-"${JAVASHAREDIR}/${PORTNAME}# (except for the documentation, see below). To "
-"reduce the packing file size, reference the JAR file(s) directly in the [."
-"filename]#Makefile#. Use this statement (where [.filename]#myport.jar# is "
-"the name of the JAR file installed as part of the port):"
+"filename]#${JAVAJARDIR}#, and everything else under [."
+"filename]#${JAVASHAREDIR}/${PORTNAME}# (except for the documentation, see "
+"below). To reduce the packing file size, reference the JAR file(s) directly "
+"in the [.filename]#Makefile#. Use this statement (where [.filename]#myport."
+"jar# is the name of the JAR file installed as part of the port):"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3278
#, no-wrap
msgid "PLIST_FILES+=\t${JAVAJARDIR}/myport.jar\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3283
msgid ""
"When porting a Java application, the port usually installs everything under "
-"a single directory (including its JAR dependencies). The use of [.filename]#"
-"${JAVASHAREDIR}/${PORTNAME}# is strongly encouraged in this regard. It is "
-"up the porter to decide whether the port installs the additional JAR "
-"dependencies under this directory or uses the already installed ones (from [."
-"filename]#${JAVAJARDIR}#)."
+"a single directory (including its JAR dependencies). The use of [."
+"filename]#${JAVASHAREDIR}/${PORTNAME}# is strongly encouraged in this "
+"regard. It is up the porter to decide whether the port installs the "
+"additional JAR dependencies under this directory or uses the already "
+"installed ones (from [.filename]#${JAVAJARDIR}#)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3290
msgid ""
"When porting a Java(TM) application that requires an application server such "
"as package:www/tomcat7[] to run the service, it is quite common for a vendor "
"to distribute a [.filename]#.war#. A [.filename]#.war# is a Web application "
"ARchive and is extracted when called by the application. Avoid adding a [."
"filename]#.war# to [.filename]#pkg-plist#. It is not considered best "
"practice. An application server will expand war archive, but not clean it "
"up properly if the port is removed. A more desirable way of working with "
"this file is to extract the archive, then install the files, and lastly add "
"these files to [.filename]#pkg-plist#."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3295
#, no-wrap
msgid ""
"TOMCATDIR=\t${LOCALBASE}/apache-tomcat-7.0\n"
"WEBAPPDIR=\tmyapplication\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3299
#, no-wrap
msgid ""
"post-extract:\n"
"\t@${MKDIR} ${WRKDIR}/${PORTDIRNAME}\n"
"\t@${TAR} xf ${WRKDIR}/myapplication.war -C ${WRKDIR}/${PORTDIRNAME}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3304
#, no-wrap
msgid ""
"do-install:\n"
"\tcd ${WRKDIR} && \\\n"
"\t${INSTALL} -d -o ${WWWOWN} -g ${WWWGRP} ${TOMCATDIR}/webapps/${PORTDIRNAME}\n"
"\tcd ${WRKDIR}/${PORTDIRNAME} && ${COPYTREE_SHARE} \\* ${WEBAPPDIR}/${PORTDIRNAME}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3311
msgid ""
"Regardless of the type of port (library or application), the additional "
"documentation is installed in the crossref:makefiles[install-documentation,"
"same location] as for any other port. The Javadoc tool is known to produce "
"a different set of files depending on the version of the JDK that is used. "
"For ports that do not enforce the use of a particular JDK, it is therefore a "
"complex task to specify the packing list ([.filename]#pkg-plist#). This is "
"one reason why porters are strongly encouraged to use `PORTDOCS`. Moreover, "
"even if the set of files that will be generated by `javadoc` can be "
"predicted, the size of the resulting [.filename]#pkg-plist# advocates for "
"the use of `PORTDOCS`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3315
msgid ""
"The default value for `DATADIR` is [.filename]#${PREFIX}/share/${PORTNAME}"
"#. It is a good idea to override `DATADIR` to [.filename]#${JAVASHAREDIR}/"
"${PORTNAME}# for Java ports. Indeed, `DATADIR` is automatically added to "
"`PLIST_SUB` (documented in crossref:plist[plist-sub,Changing pkg-plist Based "
"on Make Variables]) so use `%%DATADIR%%` directly in [.filename]#pkg-plist#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3318
msgid ""
"As for the choice of building Java ports from source or directly installing "
"them from a binary distribution, there is no defined policy at the time of "
"writing. However, people from the https://www.freebsd.org/java/[FreeBSD "
"Java Project] encourage porters to have their ports built from source "
"whenever it is a trivial task."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3322
msgid ""
"All the features that have been presented in this section are implemented in "
"[.filename]#bsd.java.mk#. If the port needs more sophisticated Java "
"support, please first have a look at the https://cgit.FreeBSD.org/ports/tree/"
"Mk/bsd.java.mk[bsd.java.mk Git log] as it usually takes some time to "
"document the latest features. Then, if the needed support that is lacking "
"would be beneficial to many other Java ports, feel free to discuss it on the "
"freebsd-java."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3325
msgid ""
"Although there is a `java` category for PRs, it refers to the JDK porting "
"effort from the FreeBSD Java project. Therefore, submit the Java port in "
"the `ports` category as for any other port, unless the issue is related to "
"either a JDK implementation or [.filename]#bsd.java.mk#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3327
msgid ""
"Similarly, there is a defined policy regarding the `CATEGORIES` of a Java "
"port, which is detailed in crossref:makefiles[makefile-categories,"
"Categorization]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3329
#, no-wrap
msgid "Web Applications, Apache and PHP"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3332
#, no-wrap
msgid "Apache"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3335
#, no-wrap
msgid "Variables for Ports That Use Apache"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3339
#, no-wrap
msgid "`USE_APACHE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3341
#, no-wrap
msgid "The port requires Apache. Possible values: `yes` (gets any version), `22`, `24`, `22-24`, `22+`, etc. The default APACHE version is `22`. More details are available in [.filename]#ports/Mk/bsd.apache.mk# and at https://wiki.freebsd.org/Apache/[wiki.freebsd.org/Apache/]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3342
#, no-wrap
msgid "`APXS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3344
#, no-wrap
msgid "Full path to the `apxs` binary. Can be overridden in the port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3345
#, no-wrap
msgid "`HTTPD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3347
#, no-wrap
msgid "Full path to the `httpd` binary. Can be overridden in the port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3348
#, no-wrap
msgid "`APACHE_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3350
#, no-wrap
msgid "The version of present Apache installation (read-only variable). This variable is only available after inclusion of [.filename]#bsd.port.pre.mk#. Possible values: `22`, `24`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3351
#, no-wrap
msgid "`APACHEMODDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3353
#, no-wrap
msgid "Directory for Apache modules. This variable is automatically expanded in [.filename]#pkg-plist#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3354
#, no-wrap
msgid "`APACHEINCLUDEDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3356
#, no-wrap
msgid "Directory for Apache headers. This variable is automatically expanded in [.filename]#pkg-plist#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3357
#, no-wrap
msgid "`APACHEETCDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3358
#, no-wrap
msgid "Directory for Apache configuration files. This variable is automatically expanded in [.filename]#pkg-plist#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3361
#, no-wrap
msgid "Useful Variables for Porting Apache Modules"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3365
#, no-wrap
msgid "`MODULENAME`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3367
#, no-wrap
msgid "Name of the module. Default value is `PORTNAME`. Example: `mod_hello`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3368
#, no-wrap
msgid "`SHORTMODNAME`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3370
#, no-wrap
msgid "Short name of the module. Automatically derived from `MODULENAME`, but can be overridden. Example: `hello`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3371
#, no-wrap
msgid "`AP_FAST_BUILD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3373
#, no-wrap
msgid "Use `apxs` to compile and install the module."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3374
#, no-wrap
msgid "`AP_GENPLIST`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3376
#, no-wrap
msgid "Also automatically creates a [.filename]#pkg-plist#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3377
#, no-wrap
msgid "`AP_INC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3379
#, no-wrap
msgid "Adds a directory to a header search path during compilation."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3380
#, no-wrap
msgid "`AP_LIB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3382
#, no-wrap
msgid "Adds a directory to a library search path during compilation."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3383
#, no-wrap
msgid "`AP_EXTRAS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3384
#, no-wrap
msgid "Additional flags to pass to `apxs`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3387
#, no-wrap
msgid "Web Applications"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3391
msgid ""
"Web applications must be installed into [.filename]#PREFIX/www/appname#. "
"This path is available both in [.filename]#Makefile# and in [.filename]#pkg-"
"plist# as `WWWDIR`, and the path relative to `PREFIX` is available in [."
"filename]#Makefile# as `WWWDIR_REL`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3396
msgid ""
"The user and group of web server process are available as `WWWOWN` and "
"`WWWGRP`, in case the ownership of some files needs to be changed. The "
"default values of both are `www`. Use `WWWOWN?= myuser` and `WWWGRP?= "
"mygroup` if the port needs different values. This allows the user to "
"override them easily."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3401
msgid ""
"Use `WWWOWN` and `WWWGRP` sparingly. Remember that every file the web "
"server can write to is a security risk waiting to happen."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3405
msgid ""
"Do not depend on Apache unless the web app explicitly needs Apache. Respect "
"that users may wish to run a web application on a web server other than "
"Apache."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3407
#, no-wrap
msgid "PHP"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3411
msgid ""
"PHP web applications declare their dependency on it with `USES=php`. See "
"crossref:uses[uses-php,`php`] for more information."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3413
#, no-wrap
msgid "PEAR Modules"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3416
msgid "Porting PEAR modules is a very simple process."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3419
msgid ""
"Add `USES=pear` to the port's [.filename]#Makefile#. The framework will "
"install the relevant files in the right places and automatically generate "
"the plist at install time."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3421
#, no-wrap
msgid "Example Makefile for PEAR Class"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3429
#, no-wrap
msgid ""
"PORTNAME= Date\n"
"DISTVERSION=\t1.4.3\n"
"CATEGORIES=\tdevel www pear\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3433
#, no-wrap
msgid ""
"MAINTAINER=\texample@domain.com\n"
"COMMENT=\tPEAR Date and Time Zone Classes\n"
"WWW=\t\thttps://pear.php.net/package/Date/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3435
#, no-wrap
msgid "USES=\tpear\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3444
msgid ""
"PEAR modules will automatically be flavorized using crossref:flavors[flavors-"
"auto-php,PHP flavors]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3449
msgid ""
"If a non default `PEAR_CHANNEL` is used, the build and run-time dependencies "
"will automatically be added."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3455
msgid ""
"PEAR modules do not need to defined `PKGNAMESUFFIX` it is automatically "
"filled in using `PEAR_PKGNAMEPREFIX`. If a port needs to add to "
"`PKGNAMEPREFIX`, it must also use `PEAR_PKGNAMEPREFIX` to differentiate "
"between different flavors."
msgstr ""
#. type: Title ====
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3458
#, no-wrap
msgid "Horde Modules"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3461
msgid "In the same way, porting Horde modules is a simple process."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3464
msgid ""
"Add `USES=horde` to the port's [.filename]#Makefile#. The framework will "
"install the relevant files in the right places and automatically generate "
"the plist at install time."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3467
msgid ""
"The `USE_HORDE_BUILD` and `USE_HORDE_RUN` variables can be used to add "
"buildtime and runtime dependencies on other Horde modules. See [."
"filename]#Mk/Uses/horde.mk# for a complete list of available modules."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3469
#, no-wrap
msgid "Example Makefile for Horde Module"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3477
#, no-wrap
msgid ""
"PORTNAME=\tHorde_Core\n"
"DISTVERSION=\t2.14.0\n"
"CATEGORIES=\tdevel www pear\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3481
#, no-wrap
msgid ""
"MAINTAINER=\thorde@FreeBSD.org\n"
"COMMENT=\tHorde Core Framework libraries\n"
"WWW=\t\thttps://pear.horde.org/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3485
#, no-wrap
msgid ""
"OPTIONS_DEFINE=\tKOLAB SOCKETS\n"
"KOLAB_DESC=\tEnable Kolab server support\n"
"SOCKETS_DESC=\tDepend on sockets PHP extension\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3488
#, no-wrap
msgid ""
"USES=\thorde\n"
"USE_PHP=\tsession\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3492
#, no-wrap
msgid ""
"USE_HORDE_BUILD=\tHorde_Role\n"
"USE_HORDE_RUN=\tHorde_Role Horde_History Horde_Pack \\\n"
"\t\tHorde_Text_Filter Horde_View\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3495
#, no-wrap
msgid ""
"KOLAB_USE=\tHORDE_RUN=Horde_Kolab_Server,Horde_Kolab_Session\n"
"SOCKETS_USE=\tPHP=sockets\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3504
msgid ""
"As Horde modules are also PEAR modules they will also automatically be "
"flavorized using crossref:flavors[flavors-auto-php,PHP flavors]."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3507
#, no-wrap
msgid "Using Python"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3512
msgid ""
"The Ports Collection supports parallel installation of multiple Python "
"versions. Ports must use a correct `python` interpreter, according to the "
"user-settable `PYTHON_VERSION`. Most prominently, this means replacing the "
"path to `python` executable in scripts with the value of `PYTHON_CMD`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3514
msgid ""
"Ports that install files under `PYTHON_SITELIBDIR` must use the `pyXY-` "
"package name prefix, so their package name embeds the version of Python they "
"are installed into."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3518
#, no-wrap
msgid "PKGNAMEPREFIX=\t${PYTHON_PKGNAMEPREFIX}\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3522
#, no-wrap
msgid "Most Useful Variables for Ports That Use Python"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3526
#, no-wrap
msgid "`USES=python`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3528
#, no-wrap
msgid "The port needs Python. The minimal required version can be specified with values such as `2.7+`. Version ranges can also be specified by separating two version numbers with a dash: `USES=python:3.2-3.3`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3529
#, no-wrap
msgid "`USE_PYTHON=distutils`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3531
#, no-wrap
msgid "Use Python distutils for configuring, compiling, and installing. This is required when the port comes with [.filename]#setup.py#. This overrides the `do-build` and `do-install` targets and may also override `do-configure` if `GNU_CONFIGURE` is not defined. Additionally, it implies `USE_PYTHON=flavors`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3532
#, no-wrap
msgid "`USE_PYTHON=autoplist`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3534
#, no-wrap
msgid "Create the packaging list automatically. This also requires `USE_PYTHON=distutils` to be set."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3535
#, no-wrap
msgid "`USE_PYTHON=concurrent`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3537
#, no-wrap
msgid "The port will use an unique prefix, typically `PYTHON_PKGNAMEPREFIX` for certain directories, such as `EXAMPLESDIR` and `DOCSDIR` and also will append a suffix, the python version from `PYTHON_VER`, to binaries and scripts to be installed. This allows ports to be installed for different Python versions at the same time, which otherwise would install conflicting files."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3538
#, no-wrap
msgid "`USE_PYTHON=flavors`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3540
#, no-wrap
msgid "The port does not use distutils but still supports multiple Python versions. `FLAVORS` will be set to the supported Python versions. See crossref:flavors[flavors-auto-python,`USES`=python and Flavors] for more information."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3541
#, no-wrap
msgid "`USE_PYTHON=optsuffix`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3543
#, no-wrap
msgid "If the current Python version is not the default version, the port will gain `PKGNAMESUFFIX=${PYTHON_PKGNAMESUFFIX}`. Only useful with flavors."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3544
#, no-wrap
msgid "`PYTHON_PKGNAMEPREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3546
#, no-wrap
msgid "Used as a `PKGNAMEPREFIX` to distinguish packages for different Python versions. Example: `py27-`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3547
#, no-wrap
msgid "`PYTHON_SITELIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3549
#, no-wrap
msgid "Location of the site-packages tree, that contains installation path of Python (usually `LOCALBASE`). `PYTHON_SITELIBDIR` can be very useful when installing Python modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3550
#, no-wrap
msgid "`PYTHONPREFIX_SITELIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3552
#, no-wrap
msgid "The PREFIX-clean variant of PYTHON_SITELIBDIR. Always use `%%PYTHON_SITELIBDIR%%` in [.filename]#pkg-plist# when possible. The default value of `%%PYTHON_SITELIBDIR%%` is `lib/python%%PYTHON_VERSION%%/site-packages`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3553
#, no-wrap
msgid "`PYTHON_CMD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3554
#, no-wrap
msgid "Python interpreter command line, including version number."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3557
#, no-wrap
msgid "Python Module Dependency Helpers"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3561
#, no-wrap
msgid "`PYNUMERIC`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3563
#, no-wrap
msgid "Dependency line for numeric extension."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3564
#, no-wrap
msgid "`PYNUMPY`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3566
#, no-wrap
msgid "Dependency line for the new numeric extension, numpy. (PYNUMERIC is deprecated by upstream vendor)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3567
#, no-wrap
msgid "`PYXML`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3569
#, no-wrap
msgid "Dependency line for XML extension (not needed for Python 2.0 and higher as it is also in base distribution)."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3570
#, no-wrap
msgid "`PY_ENUM34`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3572
#, no-wrap
msgid "Conditional dependency on package:devel/py-enum34[] depending on the Python version."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3573
#, no-wrap
msgid "`PY_ENUM_COMPAT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3575
#, no-wrap
msgid "Conditional dependency on package:devel/py-enum-compat[] depending on the Python version."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3576
#, no-wrap
msgid "`PY_PATHLIB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3578
#, no-wrap
msgid "Conditional dependency on package:devel/py-pathlib[] depending on the Python version."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3579
#, no-wrap
msgid "`PY_IPADDRESS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3581
#, no-wrap
msgid "Conditional dependency on package:net/py-ipaddress[] depending on the Python version."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3582
#, no-wrap
msgid "`PY_FUTURES`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3583
#, no-wrap
msgid "Conditional dependency on package:devel/py-futures[] depending on the Python version."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3586
msgid ""
"A complete list of available variables can be found in [.filename]#/usr/"
"ports/Mk/Uses/python.mk#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3591
msgid ""
"All dependencies to Python ports using crossref:flavors[flavors-auto-python,"
"Python flavors] (either with `USE_PYTHON=distutils` or `USE_PYTHON=flavors`) "
"must have the Python flavor appended to their origin using `@${PY_FLAVOR}`. "
"See <<python-Makefile>>."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3594
#, no-wrap
msgid "Makefile for a Simple Python Module"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3602
#, no-wrap
msgid ""
"PORTNAME=\tsample\n"
"DISTVERSION=\t1.2.3\n"
"CATEGORIES=\tdevel\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3606
#, no-wrap
msgid ""
"MAINTAINER=\tjohn@doe.tld\n"
"COMMENT=\tPython sample module\n"
"WWW=\t\thttps://pypi.org/project/sample/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3608
#, no-wrap
msgid "RUN_DEPENDS=\t${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3611
#, no-wrap
msgid ""
"USES=\t\tpython\n"
"USE_PYTHON=\tautoplist distutils\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3621
msgid ""
"Some Python applications claim to have `DESTDIR` support (which would be "
"required for staging) but it is broken (Mailman up to 2.1.16, for "
"instance). This can be worked around by recompiling the scripts. This can "
"be done, for example, in the `post-build` target. Assuming the Python "
"scripts are supposed to reside in `PYTHONPREFIX_SITELIBDIR` after "
"installation, this solution can be applied:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3627
#, no-wrap
msgid ""
"(cd ${STAGEDIR}${PREFIX} \\\n"
" && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \\\n"
" -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3630
msgid ""
"This recompiles the sources with a path relative to the stage directory, and "
"prepends the value of `PREFIX` to the file name recorded in the byte-"
"compiled output file by `-d`. `-f` is required to force recompilation, and "
"the `:S;${PREFIX}/;;` strips prefixes from the value of "
"`PYTHONPREFIX_SITELIBDIR` to make it relative to `PREFIX`."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3632
#, no-wrap
msgid "Using Tcl/Tk"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3637
msgid ""
"The Ports Collection supports parallel installation of multiple Tcl/Tk "
"versions. Ports should try to support at least the default Tcl/Tk version "
"and higher with `USES=tcl`. It is possible to specify the desired version "
"of `tcl` by appending `:_xx_`, for example, `USES=tcl:85`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3639
#, no-wrap
msgid "The Most Useful Read-Only Variables for Ports That Use Tcl/Tk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3643
#, no-wrap
msgid "`TCL_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3645
#, no-wrap
msgid "chosen major.minor version of Tcl"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3646
#, no-wrap
msgid "`TCLSH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3648
#, no-wrap
msgid "full path of the Tcl interpreter"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3649
#, no-wrap
msgid "`TCL_LIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3651
#, no-wrap
msgid "path of the Tcl libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3652
#, no-wrap
msgid "`TCL_INCLUDEDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3654
#, no-wrap
msgid "path of the Tcl C header files"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3655
#, no-wrap
msgid "`TK_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3657
#, no-wrap
msgid "chosen major.minor version of Tk"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3658
#, no-wrap
msgid "`WISH`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3660
#, no-wrap
msgid "full path of the Tk interpreter"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3661
#, no-wrap
msgid "`TK_LIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3663
#, no-wrap
msgid "path of the Tk libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3664
#, no-wrap
msgid "`TK_INCLUDEDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3665
#, no-wrap
msgid "path of the Tk C header files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3669
msgid ""
"See the crossref:uses[uses-tcl,`USES=tcl`] and crossref:uses[uses-tk,"
"`USES=tk`] of crossref:uses[uses,Using `USES` Macros] for a full description "
"of those variables. A complete list of those variables is available in [."
"filename]#/usr/ports/Mk/Uses/tcl.mk#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3671
#, no-wrap
msgid "Using Ruby"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3674
#, no-wrap
msgid "Useful Variables for Ports That Use Ruby"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3681
#, no-wrap
msgid "`USE_RUBY`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3683
#, no-wrap
msgid "Adds build and run dependencies on Ruby."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3684
#, no-wrap
msgid "`USE_RUBY_EXTCONF`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3686
#, no-wrap
msgid "The port uses [.filename]#extconf.rb# to configure."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3687
#, no-wrap
msgid "`USE_RUBY_SETUP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3689
#, no-wrap
msgid "The port uses [.filename]#setup.rb# to configure."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3690
#, no-wrap
msgid "`RUBY_SETUP`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3691
#, no-wrap
msgid "Override the name of the setup script from [.filename]#setup.rb#. Another common value is [.filename]#install.rb#."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3697
msgid ""
"This table shows the selected variables available to port authors via the "
"ports infrastructure. These variables are used to install files into their "
"proper locations. Use them in [.filename]#pkg-plist# as much as possible. "
"Do not redefine these variables in the port."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3699
#, no-wrap
msgid "Selected Read-Only Variables for Ports That Use Ruby"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3706
#, no-wrap
msgid "Example value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3707
#, no-wrap
msgid "`RUBY_PKGNAMEPREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3708
#, no-wrap
msgid "Used as a `PKGNAMEPREFIX` to distinguish packages for different Ruby versions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3710
#, no-wrap
msgid "`ruby19-`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3711
#, no-wrap
msgid "`RUBY_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3712
#, no-wrap
msgid "Full version of Ruby in the form of `x.y.z[.p]`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3714
#, no-wrap
msgid "`1.9.3.484`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3715
#, no-wrap
msgid "`RUBY_SITELIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3716
#, no-wrap
msgid "Architecture independent libraries installation path."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3718
#, no-wrap
msgid "`/usr/local/lib/ruby/site_ruby/1.9`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3719
#, no-wrap
msgid "`RUBY_SITEARCHLIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3720
#, no-wrap
msgid "Architecture dependent libraries installation path."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3722
#, no-wrap
msgid "`/usr/local/lib/ruby/site_ruby/1.9/amd64-freebsd10`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3723
#, no-wrap
msgid "`RUBY_MODDOCDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3724
#, no-wrap
msgid "Module documentation installation path."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3726
#, no-wrap
msgid "`/usr/local/share/doc/ruby19/patsy`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3727
#, no-wrap
msgid "`RUBY_MODEXAMPLESDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3728
#, no-wrap
msgid "Module examples installation path."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3729
#, no-wrap
msgid "`/usr/local/share/examples/ruby19/patsy`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3732
msgid ""
"A complete list of available variables can be found in [.filename]#/usr/"
"ports/Mk/bsd.ruby.mk#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3734
#, no-wrap
msgid "Using SDL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3737
msgid ""
"`USE_SDL` is used to autoconfigure the dependencies for ports which use an "
"SDL based library like package:devel/sdl12[] and package:graphics/"
"sdl_image[]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3739
msgid "These SDL libraries for version 1.2 are recognized:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3741
msgid "sdl: package:devel/sdl12[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3742
msgid "console: package:devel/sdl_console[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3743
msgid "gfx: package:graphics/sdl_gfx[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3744
msgid "image: package:graphics/sdl_image[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3745
msgid "mixer: package:audio/sdl_mixer[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3746
msgid "mm: package:devel/sdlmm[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3747
msgid "net: package:net/sdl_net[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3748
msgid "pango: package:x11-toolkits/sdl_pango[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3749
msgid "sound: package:audio/sdl_sound[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3750
msgid "ttf: package:graphics/sdl_ttf[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3752
msgid "These SDL libraries for version 2.0 are recognized:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3754
msgid "sdl: package:devel/sdl20[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3755
msgid "gfx: package:graphics/sdl2_gfx[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3756
msgid "image: package:graphics/sdl2_image[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3757
msgid "mixer: package:audio/sdl2_mixer[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3758
msgid "net: package:net/sdl2_net[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3759
msgid "ttf: package:graphics/sdl2_ttf[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3761
msgid ""
"Therefore, if a port has a dependency on package:net/sdl_net[] and package:"
"audio/sdl_mixer[], the syntax will be:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3765
#, no-wrap
msgid "USE_SDL=\tnet mixer\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3768
msgid ""
"The dependency package:devel/sdl12[], which is required by package:net/"
"sdl_net[] and package:audio/sdl_mixer[], is automatically added as well."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3770
msgid "Using `USE_SDL` with entries for SDL 1.2, it will automatically:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3772
msgid "Add a dependency on sdl12-config to `BUILD_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3773
msgid "Add the variable `SDL_CONFIG` to `CONFIGURE_ENV`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3774
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3780
msgid "Add the dependencies of the selected libraries to `LIB_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3776
msgid "Using `USE_SDL` with entries for SDL 2.0, it will automatically:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3778
msgid "Add a dependency on sdl2-config to `BUILD_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3779
msgid "Add the variable `SDL2_CONFIG` to `CONFIGURE_ENV`"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3783
#, no-wrap
msgid "Using wxWidgets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3786
msgid ""
"This section describes the status of the wxWidgets libraries in the ports "
"tree and its integration with the ports system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3792
msgid ""
"There are many versions of the wxWidgets libraries which conflict between "
"them (install files under the same name). In the ports tree this problem "
"has been solved by installing each version under a different name using "
"version number suffixes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3798
msgid ""
"The obvious disadvantage of this is that each application has to be modified "
"to find the expected version. Fortunately, most of the applications call "
"the `wx-config` script to determine the necessary compiler and linker "
"flags. The script is named differently for every available version. "
"Majority of applications respect an environment variable, or accept a "
"configure argument, to specify which `wx-config` script to call. Otherwise "
"they have to be patched."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3800
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4101
#, no-wrap
msgid "Version Selection"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3803
msgid ""
"To make the port use a specific version of wxWidgets there are two variables "
"available for defining (if only one is defined the other will be set to a "
"default value):"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3805
#, no-wrap
msgid "Variables to Select wxWidgets Versions"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3812
#, no-wrap
msgid "Default value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3813
#, no-wrap
msgid "`USE_WX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3814
#, no-wrap
msgid "List of versions the port can use"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3816
#, no-wrap
msgid "All available versions"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3817
#, no-wrap
msgid "`USE_WX_NOT`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3818
#, no-wrap
msgid "List of versions the port cannot use"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3819
#, no-wrap
msgid "None"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3822
msgid ""
"The available wxWidgets versions and the corresponding ports in the tree are:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3824
#, no-wrap
msgid "Available wxWidgets Versions"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3828
#, no-wrap
msgid "Version"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3830
#, no-wrap
msgid "Port"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3831
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3849
#, no-wrap
msgid "`2.8`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3833
#, no-wrap
msgid "package:x11-toolkits/wxgtk28[]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3834
#, no-wrap
msgid "`3.0`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3835
#, no-wrap
msgid "package:x11-toolkits/wxgtk30[]"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3838
msgid ""
"The variables in <<wx-ver-sel-table>> can be set to one or more of these "
"combinations separated by spaces:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3840
#, no-wrap
msgid "wxWidgets Version Specifications"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3846
#, no-wrap
msgid "Example"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3847
#, no-wrap
msgid "Single version"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3850
#, no-wrap
msgid "Ascending range"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3852
#, no-wrap
msgid "`2.8+`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3853
#, no-wrap
msgid "Descending range"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3855
#, no-wrap
msgid "`3.0-`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3856
#, no-wrap
msgid "Full range (must be ascending)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3857
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3900
#, no-wrap
msgid "`2.8-3.0`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3861
msgid ""
"There are also some variables to select the preferred versions from the "
"available ones. They can be set to a list of versions, the first ones will "
"have higher priority."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3862
#, no-wrap
msgid "Variables to Select Preferred wxWidgets Versions"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3868
#, no-wrap
msgid "Designed for"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3869
#, no-wrap
msgid "`WANT_WX_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3871
#, no-wrap
msgid "the port"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3872
#, no-wrap
msgid "`WITH_WX_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3873
#, no-wrap
msgid "the user"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3880
msgid ""
"There are other applications that, while not being wxWidgets libraries, are "
"related to them. These applications can be specified in `WX_COMPS`. These "
"components are available:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3882
#, no-wrap
msgid "Available wxWidgets Components"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3889
#, no-wrap
msgid "Version restriction"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3890
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3933
#, no-wrap
msgid "`wx`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3891
#, no-wrap
msgid "main library"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3893
#, no-wrap
msgid "none"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3894
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3936
#, no-wrap
msgid "`contrib`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3895
#, no-wrap
msgid "contributed libraries"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3897
#, no-wrap
msgid "`none`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3898
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3939
#, no-wrap
msgid "`python`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3899
#, no-wrap
msgid "wxPython (Python bindings)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3905
msgid ""
"The dependency type can be selected for each component by adding a suffix "
"separated by a semicolon. If not present then a default type will be used "
"(see <<wx-def-dep-types>>). These types are available:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3907
#, no-wrap
msgid "Available wxWidgets Dependency Types"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3914
#, no-wrap
msgid "`build`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3916
#, no-wrap
msgid "Component is required for building, equivalent to `BUILD_DEPENDS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3917
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3941
#, no-wrap
msgid "`run`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3919
#, no-wrap
msgid "Component is required for running, equivalent to `RUN_DEPENDS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3920
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3935
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3938
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3944
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3946
#, no-wrap
msgid "`lib`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3921
#, no-wrap
msgid "Component is required for building and running, equivalent to `LIB_DEPENDS`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3924
msgid "The default values for the components are detailed in this table:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3926
#, no-wrap
msgid "Default wxWidgets Dependency Types"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3932
#, no-wrap
msgid "Dependency type"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3942
#, no-wrap
msgid "`mozilla`"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3949
#, no-wrap
msgid "Selecting wxWidgets Components"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3953
msgid ""
"This fragment corresponds to a port which uses wxWidgets version `2.4` and "
"its contributed libraries."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3958
#, no-wrap
msgid ""
"USE_WX=\t\t2.8\n"
"WX_COMPS=\twx contrib\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3963
#, no-wrap
msgid "Detecting Installed Versions"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3968
msgid ""
"To detect an installed version, define `WANT_WX`. If it is not set to a "
"specific version then the components will have a version suffix. `HAVE_WX` "
"will be filled after detection."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3970
#, no-wrap
msgid "Detecting Installed wxWidgets Versions and Components"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3974
msgid ""
"This fragment can be used in a port that uses wxWidgets if it is installed, "
"or an option is selected."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3978
#, no-wrap
msgid "WANT_WX=\tyes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3980
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3996
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4049
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4401
#, no-wrap
msgid ".include <bsd.port.pre.mk>\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3985
#, no-wrap
msgid ""
".if defined(WITH_WX) || !empty(PORT_OPTIONS:MWX) || !empty(HAVE_WX:Mwx-2.8)\n"
"USE_WX=\t\t\t2.8\n"
"CONFIGURE_ARGS+=\t--enable-wx\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3988
msgid ""
"This fragment can be used in a port that enables wxPython support if it is "
"installed or if an option is selected, in addition to wxWidgets, both "
"version `2.8`."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:3994
#, no-wrap
msgid ""
"USE_WX=\t\t2.8\n"
"WX_COMPS=\twx\n"
"WANT_WX=\t2.8\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4001
#, no-wrap
msgid ""
".if defined(WITH_WXPYTHON) || !empty(PORT_OPTIONS:MWXPYTHON) || !empty(HAVE_WX:Mpython)\n"
"WX_COMPS+=\t\tpython\n"
"CONFIGURE_ARGS+=\t--enable-wxpython\n"
".endif\n"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4006
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4176
#, no-wrap
msgid "Defined Variables"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4009
msgid ""
"These variables are available in the port (after defining one from <<wx-ver-"
"sel-table>>)."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4011
#, no-wrap
msgid "Variables Defined for Ports That Use wxWidgets"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4018
#, no-wrap
msgid "`WX_CONFIG`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4020
#, no-wrap
msgid "The path to the wxWidgets`wx-config` script (with different name)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4021
#, no-wrap
msgid "`WXRC_CMD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4023
#, no-wrap
msgid "The path to the wxWidgets`wxrc` program (with different name)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4024
#, no-wrap
msgid "`WX_VERSION`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4025
#, no-wrap
msgid "The wxWidgets version that is going to be used (for example, `2.6`)"
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4028
#, no-wrap
msgid "Processing in [.filename]#bsd.port.pre.mk#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4031
msgid ""
"Define `WX_PREMK` to be able to use the variables right after including [."
"filename]#bsd.port.pre.mk#."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4035
msgid ""
"When defining `WX_PREMK`, then the version, dependencies, components and "
"defined variables will not change if modifying the wxWidgets port variables "
"_after_ including [.filename]#bsd.port.pre.mk#."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4038
#, no-wrap
msgid "Using wxWidgets Variables in Commands"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4042
msgid ""
"This fragment illustrates the use of `WX_PREMK` by running the `wx-config` "
"script to obtain the full version string, assign it to a variable and pass "
"it to the program."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4047
#, no-wrap
msgid ""
"USE_WX=\t\t2.8\n"
"WX_PREMK=\tyes\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4052
#, no-wrap
msgid ""
".if exists(${WX_CONFIG})\n"
"VER_STR!=\t${WX_CONFIG} --release\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4055
#, no-wrap
msgid ""
"PLIST_SUB+=\tVERSION=\"${VER_STR}\"\n"
".endif\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4062
msgid ""
"The wxWidgets variables can be safely used in commands when they are inside "
"targets without the need of `WX_PREMK`."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4065
#, no-wrap
msgid "Additional `configure` Arguments"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4068
msgid ""
"Some GNU `configure` scripts cannot find wxWidgets with just the `WX_CONFIG` "
"environment variable set, requiring additional arguments. `WX_CONF_ARGS` can "
"be used for provide them."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4070
#, no-wrap
msgid "Legal Values for `WX_CONF_ARGS`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4074
#, no-wrap
msgid "Possible value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4076
#, no-wrap
msgid "Resulting argument"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4077
#, no-wrap
msgid "`absolute`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4079
#, no-wrap
msgid "`--with-wx-config=${WX_CONFIG}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4080
#, no-wrap
msgid "`relative`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4081
#, no-wrap
msgid "`--with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}`"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4084
#, no-wrap
msgid "Using Lua"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4087
msgid ""
"This section describes the status of the Lua libraries in the ports tree and "
"its integration with the ports system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4093
msgid ""
"There are many versions of the Lua libraries and corresponding interpreters, "
"which conflict between them (install files under the same name). In the "
"ports tree this problem has been solved by installing each version under a "
"different name using version number suffixes."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4096
msgid ""
"The obvious disadvantage of this is that each application has to be modified "
"to find the expected version. But it can be solved by adding some "
"additional flags to the compiler and linker."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4099
msgid ""
"Applications that use Lua should normally build for just one version. "
"However, loadable modules for Lua are built in a separate flavor for each "
"Lua version that they support, and dependencies on such modules should "
"specify the flavor using the `@${LUA_FLAVOR}` suffix on the port origin."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4104
msgid "A port using Lua should have a line of this form:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4108
#, no-wrap
msgid "USES=\tlua\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4113
msgid ""
"If a specific version of Lua, or range of versions, is needed, it can be "
"specified as a parameter in the form `XY` (which may be used multiple "
"times), `XY+`, `-XY`, or `XY-ZA`. The default version of Lua as set via "
"`DEFAULT_VERSIONS` will be used if it falls in the requested range, "
"otherwise the closest requested version to the default will be used. For "
"example:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4117
#, no-wrap
msgid "USES=\tlua:52-53\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4120
msgid ""
"Note that no attempt is made to adjust the version selection based on the "
"presence of any already-installed Lua version."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4125
msgid ""
"The `XY+` form of version specification should not be used without careful "
"consideration; the Lua API changes to some extent in every version, and "
"configuration tools like CMake or Autoconf will often fail to work on future "
"versions of Lua until updated to do so."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4128
#, no-wrap
msgid "Configuration and Compiler flags"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4133
msgid ""
"Software that uses Lua may have been written to auto-detect the Lua version "
"in use. In general ports should override this assumption, and force the use "
"of the specific Lua version selected as described above. Depending on the "
"software being ported, this might require any or all of:"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4135
msgid ""
"Using `LUA_VER` as part of a parameter to the software's configuration "
"script via `CONFIGURE_ARGS` or `CONFIGURE_ENV` (or equivalent for other "
"build systems);"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4136
msgid ""
"Adding `-I${LUA_INCDIR}`, `-L${LUA_LIBDIR}`, and `-llua-${LUA_VER}` to "
"`CFLAGS`, `LDFLAGS`, `LIBS` respectively as appropriate;"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4137
msgid ""
"Patch the software's configuration or build files to select the correct "
"version."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4140
#, no-wrap
msgid "Version Flavors"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4144
msgid ""
"A port which installs a Lua module (rather than an application that simply "
"makes use of Lua) should build a separate flavor for each supported Lua "
"version. This is done by adding the `module` parameter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4148
#, no-wrap
msgid "USES=\tlua:module\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4151
msgid ""
"A version number or range of versions can be specified as well; use a comma "
"to separate parameters."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4153
msgid ""
"Since each flavor must have a different package name, the variable "
"`LUA_PKGNAMEPREFIX` is provided which will be set to an appropriate value; "
"the intended usage is:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4157
#, no-wrap
msgid "PKGNAMEPREFIX=\t${LUA_PKGNAMEPREFIX}\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4161
msgid ""
"Module ports should normally install files only to `LUA_MODLIBDIR`, "
"`LUA_MODSHAREDIR`, `LUA_DOCSDIR`, and `LUA_EXAMPLESDIR`, all of which are "
"set up to refer to version-specific subdirectories. Installing any other "
"files must be done with care to avoid conflicts between versions."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4163
msgid ""
"A port (other than a Lua module) which wishes to build a separate package "
"for each Lua version should use the `flavors` parameter:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4167
#, no-wrap
msgid "USES=\tlua:flavors\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4171
msgid ""
"This operates the same way as the `module` parameter described above, but "
"without the assumption that the package should be documented as a Lua module "
"(so `LUA_DOCSDIR` and `LUA_EXAMPLESDIR` are not defined by default). "
"However, the port may choose to define `LUA_DOCSUBDIR` as a suitable "
"subdirectory name (usually the port's `PORTNAME` as long as this does not "
"conflict with the `PORTNAME` of any module), in which case the framework "
"will define both `LUA_DOCSDIR` and `LUA_EXAMPLESDIR`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4174
msgid ""
"As with module ports, a flavored port should avoid installing files that "
"would conflict between versions. Typically this is done by adding "
"`LUA_VER_STR` as a suffix to program names (e.g. using crossref:uses[uses-"
"uniquefiles,`uniquefiles`]), and otherwise using either `LUA_VER` or "
"`LUA_VER_STR` as part of any other files or subdirectories used outside of "
"`LUA_MODLIBDIR` and `LUA_MODSHAREDIR`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4179
msgid "These variables are available in the port."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4181
#, no-wrap
msgid "Variables Defined for Ports That Use Lua"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4188
#, no-wrap
msgid "`LUA_VER`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4190
#, no-wrap
-msgid "The Lua version that is going to be used (for example, `5.1`)"
+msgid "The Lua version that is going to be used (for example, `5.4`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4191
#, no-wrap
msgid "`LUA_VER_STR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4193
#, no-wrap
-msgid "The Lua version without the dots (for example, `51`)"
+msgid "The Lua version without the dots (for example, `54`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4194
#, no-wrap
msgid "`LUA_FLAVOR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4196
#, no-wrap
msgid "The flavor name corresponding to the selected Lua version, to be used for specifying dependencies"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4197
#, no-wrap
msgid "`LUA_BASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4199
#, no-wrap
msgid "The prefix that should be used to locate Lua (and components) that are already installed"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4200
#, no-wrap
msgid "`LUA_PREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4202
#, no-wrap
msgid "The prefix where Lua (and components) are to be installed by this port"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4203
#, no-wrap
msgid "`LUA_INCDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4205
#, no-wrap
msgid "The directory where Lua header files are installed"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4206
#, no-wrap
msgid "`LUA_LIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4208
#, no-wrap
msgid "The directory where Lua libraries are installed"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4209
#, no-wrap
msgid "`LUA_REFMODLIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4211
#, no-wrap
msgid "The directory where Lua module libraries ([.filename]#.so#) that are already installed are to be found"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4212
#, no-wrap
msgid "`LUA_REFMODSHAREDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4214
#, no-wrap
msgid "The directory where Lua modules ([.filename]#.lua#) that are already installed are to be found"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4215
#, no-wrap
msgid "`LUA_MODLIBDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4217
#, no-wrap
msgid "The directory where Lua module libraries ([.filename]#.so#) are to be installed by this port"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4218
#, no-wrap
msgid "`LUA_MODSHAREDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4220
#, no-wrap
msgid "The directory where Lua modules ([.filename]#.lua#) are to be installed by this port"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4221
#, no-wrap
msgid "`LUA_PKGNAMEPREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4223
#, no-wrap
msgid "The package name prefix used by Lua modules"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4224
#, no-wrap
msgid "`LUA_CMD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4226
#, no-wrap
-msgid "The name of the Lua interpreter (e.g. `lua53`)"
+msgid "The name of the Lua interpreter (e.g. `lua54`)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4227
#, no-wrap
msgid "`LUAC_CMD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4228
#, no-wrap
-msgid "The name of the Lua compiler (e.g. `luac53`)"
+msgid "The name of the Lua compiler (e.g. `luac54`)"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4231
msgid ""
"These additional variables are available for ports that specified the "
"`module` parameter:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4233
#, no-wrap
msgid "Variables Defined for Lua Module Ports"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4240
#, no-wrap
msgid "`LUA_DOCSDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4242
#, no-wrap
msgid "the directory to which the module's documentation should be installed."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4243
#, no-wrap
msgid "`LUA_EXAMPLESDIR`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4244
#, no-wrap
msgid "the directory to which the module's example files should be installed."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4250
#, no-wrap
msgid "Makefile for an application using Lua"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4255
msgid ""
"This example shows how to reference a Lua module required at run time. "
"Notice that the reference must specify a flavor."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4261
#, no-wrap
msgid ""
"PORTNAME=\tsample\n"
"DISTVERSION=\t1.2.3\n"
"CATEGORIES=\twhatever\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4265
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4289
#, no-wrap
msgid ""
"MAINTAINER=\tjohn@doe.tld\n"
"COMMENT=\tSample\n"
"WWW=\t\thttps://github.com/lua_sample/sample/\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4267
#, no-wrap
msgid "RUN_DEPENDS=\t${LUA_REFMODLIBDIR}/lpeg.so:devel/lua-lpeg@${LUA_FLAVOR}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4269
#, no-wrap
msgid "USES=\t\tlua\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4276
#, no-wrap
msgid "Makefile for a simple Lua module"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4285
#, no-wrap
msgid ""
"PORTNAME=\tsample\n"
"DISTVERSION=\t1.2.3\n"
"CATEGORIES=\twhatever\n"
"PKGNAMEPREFIX=\t${LUA_PKGNAMEPREFIX}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4291
#, no-wrap
msgid "USES=\t\tlua:module\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4293
#, no-wrap
msgid "DOCSDIR=\t${LUA_DOCSDIR}\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4300
#, no-wrap
msgid "Using `iconv`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4303
msgid "FreeBSD has a native `iconv` in the operating system."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4305
msgid "For software that needs `iconv`, define `USES=iconv`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4307
msgid "When a port defines `USES=iconv`, these variables will be available:"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4312
#, no-wrap
msgid "Variable name"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4313
#, no-wrap
msgid "Purpose"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4314
#, no-wrap
msgid "Port iconv (when using WCHAR_T or //TRANSLIT extensions)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4317
#, no-wrap
msgid "Base iconv"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4318
#, no-wrap
msgid "`ICONV_CMD`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4319
#, no-wrap
msgid "Directory where the `iconv` binary resides"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4320
#, no-wrap
msgid "`${LOCALBASE}/bin/iconv`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4322
#, no-wrap
msgid "[.filename]#/usr/bin/iconv#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4323
#, no-wrap
msgid "`ICONV_LIB`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4324
#, no-wrap
msgid "`ld` argument to link to [.filename]#libiconv# (if needed)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4325
#, no-wrap
msgid "`-liconv`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4327
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4337
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4341
#, no-wrap
msgid "(empty)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4328
#, no-wrap
msgid "`ICONV_PREFIX`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4329
#, no-wrap
msgid "Directory where the `iconv` implementation resides (useful for configure scripts)"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4330
#, no-wrap
msgid "`${LOCALBASE}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4332
#, no-wrap
msgid "[.filename]#/usr#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4333
#, no-wrap
msgid "`ICONV_CONFIGURE_ARG`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4334
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4339
#, no-wrap
msgid "Preconstructed configure argument for configure scripts"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4335
#, no-wrap
msgid "`--with-libiconv-prefix=${LOCALBASE}`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4338
#, no-wrap
msgid "`ICONV_CONFIGURE_BASE`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4340
#, no-wrap
msgid "`--with-libiconv=${LOCALBASE}`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4344
msgid ""
"These two examples automatically populate the variables with the correct "
"value for systems using package:converters/libiconv[] or the native `iconv` "
"respectively:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4346
#, no-wrap
msgid "Simple `iconv` Usage"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4353
#, no-wrap
msgid ""
"USES=\t\ticonv\n"
"LDFLAGS+=\t-L${LOCALBASE}/lib ${ICONV_LIB}\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4358
#, no-wrap
msgid "`iconv` Usage with `configure`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4365
#, no-wrap
msgid ""
"USES=\t\ticonv\n"
"CONFIGURE_ARGS+=${ICONV_CONFIGURE_ARG}\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4371
msgid ""
"As shown above, `ICONV_LIB` is empty when a native `iconv` is present. This "
"can be used to detect the native `iconv` and respond appropriately."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4374
msgid ""
"Sometimes a program has an `ld` argument or search path hardcoded in a [."
"filename]#Makefile# or configure script. This approach can be used to solve "
"that problem:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4376
#, no-wrap
msgid "Fixing Hardcoded `-liconv`"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4382
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4399
#, no-wrap
msgid "USES=\t\ticonv\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4385
#, no-wrap
msgid ""
"post-patch:\n"
"\t@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/Makefile\n"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4391
msgid ""
"In some cases it is necessary to set alternate values or perform operations "
"depending on whether there is a native `iconv`. [.filename]#bsd.port.pre."
"mk# must be included before testing the value of `ICONV_LIB`:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4393
#, no-wrap
msgid "Checking for Native `iconv` Availability"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4407
#, no-wrap
msgid ""
"post-patch:\n"
".if empty(ICONV_LIB)\n"
"\t# native iconv detected\n"
"\t@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh\n"
".endif\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4409
#, no-wrap
msgid ".include <bsd.port.post.mk>\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4414
#, no-wrap
msgid "Using Xfce"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4417
msgid "Ports that need Xfce libraries or applications set `USES=xfce`."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4421
msgid ""
"Specific Xfce library and application dependencies are set with values "
"assigned to `USE_XFCE`. They are defined in [.filename]#/usr/ports/Mk/Uses/"
"xfce.mk#. The possible values are:"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4422
#, no-wrap
msgid "Values of `USE_XFCE`"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4423
#, no-wrap
msgid "garcon"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4425
msgid "package:sysutils/garcon[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4426
#, no-wrap
msgid "libexo"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4428
msgid "package:x11/libexo[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4429
#, no-wrap
msgid "libgui"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4431
msgid "package:x11-toolkits/libxfce4gui[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4432
#, no-wrap
msgid "libmenu"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4434
msgid "package:x11/libxfce4menu[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4435
#, no-wrap
msgid "libutil"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4437
msgid "package:x11/libxfce4util[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4438
#, no-wrap
msgid "panel"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4440
msgid "package:x11-wm/xfce4-panel[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4441
#, no-wrap
msgid "thunar"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4443
msgid "package:x11-fm/thunar[]"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4444
#, no-wrap
msgid "xfconf"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4446
msgid "package:x11/xfce4-conf[]"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4448
#, no-wrap
msgid "`USES=xfce` Example"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4455
#, no-wrap
msgid ""
"USES=\t\txfce\n"
"USE_XFCE=\tlibmenu\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4460
#, no-wrap
msgid "Using Xfce's Own GTK2 Widgets"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4464
msgid ""
"In this example, the ported application uses the GTK2-specific widgets "
"package:x11/libxfce4menu[] and package:x11/xfce4-conf[]."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4469
#, no-wrap
msgid ""
"USES=\t\txfce:gtk2\n"
"USE_XFCE=\tlibmenu xfconf\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4478
msgid ""
"Xfce components included this way will automatically include any "
"dependencies they need. It is no longer necessary to specify the entire "
"list. If the port only needs package:x11-wm/xfce4-panel[], use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4483
#, no-wrap
msgid ""
"USES=\t\txfce\n"
"USE_XFCE=\tpanel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4486
msgid ""
"There is no need to list the components package:x11-wm/xfce4-panel[] needs "
"itself like this:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4491
#, no-wrap
msgid ""
"USES=\t\txfce\n"
"USE_XFCE=\tlibexo libmenu libutil panel\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4495
msgid ""
"However, Xfce components and non-Xfce dependencies of the port must be "
"included explicitly. Do not count on an Xfce component to provide a sub-"
"dependency other than itself for the main port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4499
#, no-wrap
msgid "Using Databases"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4502
msgid ""
"Use one of the `USES` macros from <<using-databases-uses>> to add a "
"dependency on a database."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4504
#, no-wrap
msgid "Database `USES` Macros"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4508
#, no-wrap
msgid "Database"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4510
#, no-wrap
msgid "USES Macro"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4511
#, no-wrap
msgid "Berkeley DB"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4513
#, no-wrap
msgid "crossref:uses[uses-bdb,`bdb`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4514
#, no-wrap
msgid "MariaDB, MySQL, Percona"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4516
#, no-wrap
msgid "crossref:uses[uses-mysql,`mysql`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4517
#, no-wrap
msgid "PostgreSQL"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4519
#, no-wrap
msgid "crossref:uses[uses-pgsql,`pgsql`]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4520
#, no-wrap
msgid "SQLite"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4521
#, no-wrap
msgid "crossref:uses[uses-sqlite,`sqlite`]"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4524
#, no-wrap
msgid "Using Berkeley DB 6"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4530
#, no-wrap
msgid "USES=\tbdb:6\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4533
msgid "See crossref:uses[uses-bdb,`bdb`] for more information."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4536
#, no-wrap
msgid "Using MySQL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4540
msgid "When a port needs the MySQL client library add"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4544
#, no-wrap
msgid "USES=\tmysql\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4547
msgid "See crossref:uses[uses-mysql,`mysql`] for more information."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4550
#, no-wrap
msgid "Using PostgreSQL"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4554
msgid "When a port needs the PostgreSQL server version 9.6 or later add"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4559
#, no-wrap
msgid ""
"USES=\t\tpgsql:9.6+\n"
"WANT_PGSQL=\tserver\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4562
msgid "See crossref:uses[uses-pgsql,`pgsql`] for more information."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4565
#, no-wrap
msgid "Using SQLite 3"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4571
#, no-wrap
msgid "USES=\tsqlite:3\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4574
msgid "See crossref:uses[uses-sqlite,`sqlite`] for more information."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4577
#, no-wrap
msgid "Starting and Stopping Services (`rc` Scripts)"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4584
msgid ""
"[.filename]#rc.d# scripts are used to start services on system startup, and "
"to give administrators a standard way of stopping, starting and restarting "
"the service. Ports integrate into the system [.filename]#rc.d# framework. "
"Details on its usage can be found in extref:{handbook}[the rc.d Handbook "
"chapter, configtuning-rcd]. Detailed explanation of the available commands "
"is provided in man:rc[8] and man:rc.subr[8]. Finally, there is extref:{rc-"
"scripting}[an article] on practical aspects of [.filename]#rc.d# scripting."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4587
msgid ""
"With a mythical port called _doorman_, which needs to start a _doormand_ "
"daemon. Add the following to the [.filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4591
#, no-wrap
msgid "USE_RC_SUBR=\tdoormand\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4598
msgid ""
"Multiple scripts may be listed and will be installed. Scripts must be "
"placed in the [.filename]#files# subdirectory and a `.in` suffix must be "
"added to their filename. Standard `SUB_LIST` expansions will be ran against "
"this file. Use of the `%%PREFIX%%` and `%%LOCALBASE%%` expansions is "
"strongly encouraged as well. More on `SUB_LIST` in crossref:pkg-files[using-"
"sub-files,the relevant section]."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4600
msgid ""
"As of FreeBSD 6.1-RELEASE, local [.filename]#rc.d# scripts (including those "
"installed by ports) are included in the overall man:rcorder[8] of the base "
"system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4602
msgid ""
"An example simple [.filename]#rc.d# script to start the doormand daemon:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4606
#, no-wrap
msgid "#!/bin/sh\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4618
#, no-wrap
msgid ""
"# PROVIDE: doormand\n"
"# REQUIRE: LOGIN\n"
"# KEYWORD: shutdown\n"
"#\n"
"# Add these lines to /etc/rc.conf.local or /etc/rc.conf\n"
"# to enable this service:\n"
"#\n"
"# doormand_enable (bool):\tSet to NO by default.\n"
"#\t\t\t\tSet it to YES to enable doormand.\n"
"# doormand_config (path):\tSet to %%PREFIX%%/etc/doormand/doormand.cf\n"
"#\t\t\t\tby default.\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4620
#, no-wrap
msgid ". /etc/rc.subr\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4623
#, no-wrap
msgid ""
"name=doormand\n"
"rcvar=doormand_enable\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4625
#, no-wrap
msgid "load_rc_config $name\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4628
#, no-wrap
msgid ""
": ${doormand_enable:=\"NO\"}\n"
": ${doormand_config=\"%%PREFIX%%/etc/doormand/doormand.cf\"}\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4631
#, no-wrap
msgid ""
"command=%%PREFIX%%/sbin/${name}\n"
"pidfile=/var/run/${name}.pid\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4633
#, no-wrap
msgid "command_args=\"-p $pidfile -f $doormand_config\"\n"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4635
#, no-wrap
msgid "run_rc_command \"$1\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4638
msgid ""
"Unless there is a very good reason to start the service earlier, or it runs "
"as a particular user (other than root), all ports scripts must use:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4642
#, no-wrap
msgid "REQUIRE: LOGIN\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4645
msgid ""
"If the startup script launches a daemon that must be shutdown, the following "
"will trigger a stop of the service on system shutdown:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4649
#, no-wrap
msgid "KEYWORD: shutdown\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4652
msgid ""
"If the script is not starting a persistent service this is not necessary."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4655
msgid ""
"For optional configuration elements the \"=\" style of default variable "
"assignment is preferable to the \":=\" style here, since the former sets a "
"default value only if the variable is unset, and the latter sets one if the "
"variable is unset _or_ null. A user might very well include something like:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4659
#, no-wrap
msgid "doormand_flags=\"\"\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4663
msgid ""
-"in their [.filename]#rc.conf.local#, and a variable substitution using \":="
-"\" would inappropriately override the user's intention. The `_enable` "
+"in their [.filename]#rc.conf.local#, and a variable substitution using \":"
+"=\" would inappropriately override the user's intention. The `_enable` "
"variable is not optional, and must use the \":\" for the default."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4668
msgid ""
"Ports _must not_ start and stop their services when installing and "
"deinstalling. Do not abuse the [.filename]#plist# keywords described in "
"crossref:plist[plist-keywords-base-exec, \"the @preexec command,@postexec "
"command,@preunexec command,@postunexec command section\"] by running "
"commands that modify the currently running system, including starting or "
"stopping services."
msgstr ""
#. type: Title ===
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4671
#, no-wrap
msgid "Pre-Commit Checklist"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4674
msgid ""
"Before contributing a port with an [.filename]#rc.d# script, and more "
"importantly, before committing one, please consult this checklist to be sure "
"that it is ready."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4676
msgid ""
"The package:devel/rclint[] port can check for most of these, but it is not a "
"substitute for proper review."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4679
msgid ""
"If this is a new file, does it have a [.filename]#.sh# extension? If so, "
"that must be changed to just [.filename]#file.in# since [.filename]#rc.d# "
"files may not end with that extension."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4680
msgid ""
-"Do the name of the file (minus [.filename]#.in#), the `PROVIDE` line, and `"
-"$` _name_ all match? The file name matching `PROVIDE` makes debugging "
-"easier, especially for man:rcorder[8] issues. Matching the file name and `"
-"$`_name_ makes it easier to figure out which variables are relevant in [."
+"Do the name of the file (minus [.filename]#.in#), the `PROVIDE` line, and "
+"`$` _name_ all match? The file name matching `PROVIDE` makes debugging "
+"easier, especially for man:rcorder[8] issues. Matching the file name and "
+"`$`_name_ makes it easier to figure out which variables are relevant in [."
"filename]#rc.conf[.local]#. It is also a policy for all new scripts, "
"including those in the base system."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4681
msgid ""
"Is the `REQUIRE` line set to `LOGIN`? This is mandatory for scripts that run "
"as a non-root user. If it runs as root, is there a good reason for it to run "
"prior to `LOGIN`? If not, it must run after so that local scrips can be "
"loosely grouped to a point in man:rcorder[8] after most everything in the "
"base is already running."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4682
msgid ""
"Does the script start a persistent service? If so, it must have `KEYWORD: "
"shutdown`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4683
msgid ""
"Make sure there is no `KEYWORD: FreeBSD` present. This has not been "
"necessary nor desirable for years. It is also an indication that the new "
"script was copy/pasted from an old script, so extra caution must be given to "
"the review."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4684
msgid ""
"If the script uses an interpreted language like `perl`, `python`, or `ruby`, "
"make certain that `command_interpreter` is set appropriately, for example, "
"for Perl, by adding `PERL=${PERL}` to `SUB_LIST` and using `%%PERL%%`. "
"Otherwise,"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4688
#, no-wrap
msgid "# service name stop\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4691
msgid ""
"will probably not work properly. See man:service[8] for more information."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4692
msgid ""
"Have all occurrences of [.filename]#/usr/local# been replaced with `%%PREFIX%"
"%`?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4693
msgid "Do the default variable assignments come after `load_rc_config`?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4694
msgid ""
"Are there default assignments to empty strings? They should be removed, but "
"double-check that the option is documented in the comments at the top of the "
"file."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4695
msgid "Are things that are set in variables actually used in the script?"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4696
msgid ""
"Are options listed in the default _name_`_flags` things that are actually "
"mandatory? If so, they must be in `command_args`. `-d` is a red flag (pardon "
"the pun) here, since it is usually the option to \"daemonize\" the process, "
"and therefore is actually mandatory."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4697
msgid ""
"`_name__flags` must never be included in `command_args` (and vice versa, "
"although that error is less common)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4698
msgid ""
"Does the script execute any code unconditionally? This is frowned on. "
"Usually these things must be dealt with through a `start_precmd`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4699
msgid ""
"All boolean tests must use the `checkyesno` function. No hand-rolled tests "
"for `[Yy][Ee][Ss]`, etc."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4700
msgid ""
"If there is a loop (for example, waiting for something to start) does it "
"have a counter to terminate the loop? We do not want the boot to be stuck "
"forever if there is an error."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4701
msgid ""
"Does the script create files or directories that need specific permissions, "
"for example, a [.filename]#pid# that needs to be owned by the user that runs "
"the process? Rather than the traditional man:touch[1]/man:chown[8]/man:"
"chmod[1] routine, consider using man:install[1] with the proper command line "
"arguments to do the whole procedure with one step."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4703
#, no-wrap
msgid "Adding Users and Groups"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4708
msgid ""
"Some ports require a particular user account to be present, usually for "
"daemons that run as that user. For these ports, choose a _unique_ UID from "
"50 to 999 and register it in [.filename]#ports/UIDs# (for users) and [."
"filename]#ports/GIDs# (for groups). The unique identification should be the "
"same for users and groups."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4710
msgid ""
"Please include a patch against these two files when requiring a new user or "
"group to be created for the port."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4712
msgid ""
"Then use `USERS` and `GROUPS` in [.filename]#Makefile#, and the user will be "
"automatically created when installing the port."
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4717
#, no-wrap
msgid ""
"USERS=\tpulse\n"
"GROUPS=\tpulse pulse-access pulse-rt\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4720
msgid ""
"The current list of reserved UIDs and GIDs can be found in [.filename]#ports/"
"UIDs# and [.filename]#ports/GIDs#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4722
#, no-wrap
msgid "Ports That Rely on Kernel Sources"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4726
msgid ""
"Some ports (such as kernel loadable modules) need the kernel source files so "
"that the port can compile. Here is the correct way to determine if the user "
"has them installed:"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4730
#, no-wrap
msgid "USES=\tkmod\n"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4733
msgid ""
"Apart from this check, the `kmod` feature takes care of most items that "
"these ports need to take into account."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4735
#, no-wrap
msgid "Go Libraries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4739
msgid ""
"Ports must not package or install Go libs or source code. Go ports must "
"fetch the required deps at the normal fetch time and should only install the "
"programs and things users need, not the things Go developers would need."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4741
msgid "Ports should (in order of preference):"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4743
msgid "Use vendored dependencies included with the package source."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4744
msgid ""
"Fetch the versions of deps specified by upstream (in the case of go.mod, "
"vendor.json or similar)."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4745
msgid ""
"As a last resort (deps are not included nor versions specified exactly) "
"fetch versions of dependencies available at the time of upstream development/"
"release."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4747
#, no-wrap
msgid "Haskell Libraries"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4751
msgid ""
"Just like in case of Go language, Ports must not package or install Haskell "
"libraries. Haskell ports must link statically to their dependencies and "
"fetch all distribution files on fetch stage."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4753
#, no-wrap
msgid "Shell Completion Files"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4758
msgid ""
"Many modern shells (including bash, fish, tcsh and zsh) support parameter "
"and/or option tab-completion. This support usually comes from completion "
"files, which contain the definitions for how tab completion will work for a "
"certain command. Ports sometimes ship with their own completion files, or "
"porters may have created them themselves."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4762
msgid ""
"When available, completion files should always be installed. It is not "
"necessary to make an option for it. If an option is used, though, always "
"enable it in `OPTIONS_DEFAULT`."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4764
#, no-wrap
msgid "Shell completion file paths"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4768
#, no-wrap
msgid "`bash`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4770
#, no-wrap
msgid "[.filename]#${PREFIX}/etc/bash_completion.d#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4771
#, no-wrap
msgid "`fish`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4773
#, no-wrap
msgid "[.filename]#${PREFIX}/share/fish/vendor_completions.d#"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4774
#, no-wrap
msgid "`zsh`"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4775
#, no-wrap
msgid "[.filename]#${PREFIX}/share/zsh/site-functions#"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/special/_index.adoc:4777
msgid "Do not register any dependencies on the shells themselves."
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/uses/_index.po b/documentation/content/en/books/porters-handbook/uses/_index.po
index 7b2100bfa4..da2ae544e0 100644
--- a/documentation/content/en/books/porters-handbook/uses/_index.po
+++ b/documentation/content/en/books/porters-handbook/uses/_index.po
@@ -1,5922 +1,6109 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-30 14:39-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1
#, no-wrap
msgid "USES macros make it easy to declare requirements and settings for a FreeBSD Port"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1
#, no-wrap
msgid "Chapter 17. Using USES Macros"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:13
#, no-wrap
msgid "Using `USES` Macros"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:51
#, no-wrap
msgid "An Introduction to `USES`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:55
msgid ""
"`USES` macros make it easy to declare requirements and settings for a port. "
"They can add dependencies, change building behavior, add metadata to "
"packages, and so on, all by selecting simple, preset values."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:59
msgid ""
"Each section in this chapter describes a possible value for `USES`, along "
"with its possible arguments. Arguments are appended to the value after a "
"colon (`:`). Multiple arguments are separated by commas (`,`)."
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:61
#, no-wrap
msgid "Using Multiple Values"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:67
#, no-wrap
msgid "USES=\tbison perl\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:71
#, no-wrap
msgid "Adding an Argument"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:77
#, no-wrap
msgid "USES=\ttar:xz\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:81
#, no-wrap
msgid "Adding Multiple Arguments"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:87
#, no-wrap
msgid "USES=\tdrupal:7,theme\n"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:91
#, no-wrap
msgid "Mixing it All Together"
msgstr ""
#. type: delimited block . 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:97
#, no-wrap
msgid "USES=\tpgsql:9.3+ cpe python:2.7,build\n"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:101
#, no-wrap
msgid "`7z`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:104
msgid "Possible arguments: (none), `p7zip`, `partial`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:108
msgid ""
"Extract using man:7z[1] instead of man:bsdtar[1] and sets "
"`EXTRACT_SUFX=.7z`. The `p7zip` option forces a dependency on the `7z` from "
"package:archivers/p7zip[] if the one from the base system is not able to "
"extract the files. `EXTRACT_SUFX` is not changed if the `partial` option is "
"used, this can be used if the main distribution file does not have a [."
"filename]#.7z# extension."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:110
#, no-wrap
msgid "`ada`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:113
msgid "Possible arguments: (none), `5`, `6`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:117
msgid ""
"Depends on an Ada-capable compiler, and sets `CC` accordingly. Defaults to "
"use gcc 5 from ports. Use the `:_X_` version option to force building with "
"a different version."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:119
#, no-wrap
msgid "`autoreconf`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:122
msgid "Possible arguments: (none), `build`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:129
msgid ""
"Runs `autoreconf`. It encapsulates the `aclocal`, `autoconf`, `autoheader`, "
"`automake`, `autopoint`, and `libtoolize` commands. Each command applies to "
-"[.filename]#${AUTORECONF_WRKSRC}/configure.ac# or its old name, [.filename]#"
-"${AUTORECONF_WRKSRC}/configure.in#. If [.filename]#configure.ac# defines "
-"subdirectories with their own [.filename]#configure.ac# using "
+"[.filename]#${AUTORECONF_WRKSRC}/configure.ac# or its old name, [."
+"filename]#${AUTORECONF_WRKSRC}/configure.in#. If [.filename]#configure.ac# "
+"defines subdirectories with their own [.filename]#configure.ac# using "
"`AC_CONFIG_SUBDIRS`, `autoreconf` will recursively update those as well. "
"The `:build` argument only adds build time dependencies on those tools but "
"does not run `autoreconf`. A port can set `AUTORECONF_WRKSRC` if `WRKSRC` "
"does not contain the path to [.filename]#configure.ac#."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:131
#, no-wrap
msgid "`blaslapack`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:134
msgid ""
"Possible arguments: (none), `atlas`, `netlib` (default), `gotoblas`, "
"`openblas`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:136
msgid "Adds dependencies on Blas / Lapack libraries."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:138
#, no-wrap
msgid "`bdb`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:141
msgid "Possible arguments: (none), `48`, `5` (default), `6`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:148
msgid ""
"Add dependency on the Berkeley DB library. Default to package:databases/"
"db5[]. It can also depend on package:databases/db48[] when using the `:48` "
"argument or package:databases/db6[] with `:6`. It is possible to declare a "
"range of acceptable values, `:48+` finds the highest installed version, and "
"falls back to 4.8 if nothing else is installed. `INVALID_BDB_VER` can be "
"used to specify versions which do not work with this port. The framework "
"exposes the following variables to the port:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:149
#, no-wrap
msgid "`BDB_LIB_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:152
msgid ""
"The name of the Berkeley DB library. For example, when using package:"
"databases/db5[], it contains `db-5.3`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:153
#, no-wrap
msgid "`BDB_LIB_CXX_NAME`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:156
msgid ""
"The name of the Berkeley DBC++ library. For example, when using package:"
"databases/db5[], it contains `db_cxx-5.3`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:157
#, no-wrap
msgid "`BDB_INCLUDE_DIR`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:160
msgid ""
"The location of the Berkeley DB include directory. For example, when using "
"package:databases/db5[], it will contain `${LOCALBASE}/include/db5`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:161
#, no-wrap
msgid "`BDB_LIB_DIR`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:164
msgid ""
"The location of the Berkeley DB library directory. For example, when using "
"package:databases/db5[], it contains `${LOCALBASE}/lib`."
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:165
#, no-wrap
msgid "`BDB_VER`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:168
msgid ""
"The detected Berkeley DB version. For example, if using `USES=bdb:48+` and "
"Berkeley DB 5 is installed, it contains `5`."
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:173
msgid ""
"package:databases/db48[] is deprecated and unsupported. It must not be used "
"by any port."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:176
#, no-wrap
msgid "`bison`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:179
msgid "Possible arguments: (none), `build`, `run`, `both`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:181
msgid ""
"Uses package:devel/bison[] By default, with no arguments or with the `build` "
"argument, it implies `bison` is a build-time dependency, `run` implies a run-"
"time dependency, and `both` implies both run-time and build-time "
"dependencies."
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:183
#, no-wrap
msgid "`cabal`"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:188
msgid ""
"Ports should not be created for Haskell libraries, see crossref:"
"special[haskell-libs,Haskell Libraries] for more information."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:191
msgid "Possible arguments: (none), `hpack`, `nodefault`"
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:199
msgid ""
"Sets default values and targets used to build Haskell software using Cabal. "
"A build dependency on the Haskell compiler port (package:lang/ghc[]) is "
"added. If there is some other version of GHC already listed in the "
"`BUILD_DEPENDS` variable (for example, package:lang/ghc810[]), it would be "
"used instead. If the `hpack` argument is given, a build dependency on "
"package:devel/hs-hpack[] is added and `hpack` is invoked at configuration "
"step to generate .cabal file. If the `nodefault` argument is given, the "
"framework will not try to pull the main distribution file from the Hackage. "
"This argument is implicitly added if `USE_GITHUB` or `USE_GITLAB` is present."
msgstr ""
#. type: delimited block = 4
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:201
msgid "The framework provides the following variables:"
msgstr ""
#. type: Labeled list
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:202
#, no-wrap
+msgid "`CABAL_REVISION`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:205
+msgid ""
+"Haskell packages hosted on Hackage may have revisions. Set this knob to an "
+"integer number to pull in revised package description."
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:206
+#, no-wrap
msgid "`USE_CABAL`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:207
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:211
msgid ""
"If the software uses Haskell dependencies, list them in this variable. Each "
"item should be present on Hackage and be listed in form `packagename-"
-"_0.1.2_`. Dependencies can have revisions, which are specified after the "
-"`_` symbol. Automatic generation of the dependency list is supported, see "
-"crossref:special[using-cabal,Building Haskell Applications with `cabal`]."
+"_0.1.2_`. Dependencies can have revisions too, which are specified after "
+"the `_` symbol. Automatic generation of the dependency list is supported, "
+"see crossref:special[using-cabal,Building Haskell Applications with `cabal`]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:208
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:212
#, no-wrap
msgid "`CABAL_FLAGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:213
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:217
msgid ""
"List of flags to be passed to `cabal-install` during the configuring and "
"building stage. The flags are passed verbatim. This variable is usually "
"used to enable or disable flags that are declared in the .cabal file. Pass "
"`foo` to enable the `foo` flag and `-foo` to disable it."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:214
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:218
#, no-wrap
msgid "`CABAL_EXECUTABLES`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:220
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:224
msgid ""
"List of executable files installed by the port. Default value: `${PORTNAME}"
"`. Consult the .cabal file of the project being ported to get a list of "
"possible values for this variable. Each value corresponds to an `executable` "
"stanza in the .cabal file. Items from this list are automatically added to "
"pkg-plist."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:221
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:225
#, no-wrap
msgid "`SKIP_CABAL_PLIST`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:223
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:227
msgid "If defined, do not add items from `${CABAL_EXECUTABLES}` to pkg-plist."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:224
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:228
#, no-wrap
msgid "`opt_USE_CABAL`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:226
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:230
msgid "Adds items to `${USE_CABAL}` depending on `opt` option."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:227
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:231
#, no-wrap
msgid "`opt_CABAL_EXECUTABLES`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:229
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:233
msgid "Adds items to `${CABAL_EXECUTABLES}` depending on `opt` option."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:230
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:234
#, no-wrap
msgid "`opt_CABAL_FLAGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:234
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:238
msgid ""
"If `opt` is enabled, append the value to `${CABAL_FLAGS}`. Otherwise, "
"append `-value` to disable the flag. Note that this behavior is slightly "
"different from the plain `CABAL_FLAGS` as it does not accept values starting "
"with `-`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:235
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:239
#, no-wrap
msgid "`CABAL_WRAPPER_SCRIPTS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:240
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:244
msgid ""
"A subset of `${CABAL_EXECUTABLES}` containing Haskell programs to be wrapped "
"into a shell script that sets `*_datadir` environment variables before "
"running the program. This also causes the actual Haskell binary to be "
"installed under `libexec/cabal/` directory. This knob is needed for Haskell "
"programs that install their data files under `share/` directory."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:241
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:245
#, no-wrap
msgid "`FOO_DATADIR_VARS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:245
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:249
msgid ""
"List of extra Haskell packages, whose data files should be accessible by the "
-"executable named `FOO`. The executable should be a part of `"
-"${CABAL_WRAPPER_SCRIPTS}`. Haskell packages listed there should not have a "
+"executable named `FOO`. The executable should be a part of "
+"`${CABAL_WRAPPER_SCRIPTS}`. Haskell packages listed there should not have a "
"version suffix."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:246
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:250
#, no-wrap
msgid "`CABAL_PROJECT`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:251
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:255
msgid ""
"Some Haskell projects may already have a `cabal.project` file, which is also "
"generated by the ports framework. If that is the case, use this variable to "
"specify what to do with the original `cabal.project`. Setting this variable "
"to `remove` will cause the original file to be removed. Setting this "
"variable to `append` will:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:252
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:256
msgid ""
"Move the original file to `cabal.project.${PORTNAME}` during the `extract` "
"stage."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:254
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:258
msgid ""
"Concatenate the original `cabal.project.${PORTNAME}` and the generated "
"`cabal.project` into a single file after the `patch` stage. Using `append` "
"makes it possible to perform patching on the original file before it gets "
"merged."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:256
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:260
#, no-wrap
msgid "`cargo`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:259
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:268
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:319
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:348
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:357
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:373
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:405
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:428
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:483
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:519
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:552
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:559
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:713
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:784
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:889
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:941
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:948
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:956
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1100
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1119
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1126
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1133
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1172
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1180
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:263
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:272
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:323
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:352
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:361
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:377
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:409
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:455
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:510
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:546
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:579
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:586
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:740
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:811
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:916
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:968
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:975
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:983
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1151
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1170
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1177
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1184
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1223
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1241
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1257
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1231
#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1274
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1296
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1678
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1686
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1695
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1924
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1940
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2009
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1292
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1308
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1333
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1355
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1737
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1745
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1754
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1983
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1999
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2068
msgid "Possible arguments: (none)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:263
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:267
msgid ""
"Uses Cargo for configuring, building, and testing. It can be used to port "
"Rust applications that use the Cargo build system. For more information see "
"crossref:special[using-cargo,Building Rust Applications with `cargo`]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:265
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:269
#, no-wrap
msgid "`charsetfix`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:272
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:276
msgid ""
"Prevents the port from installing [.filename]#charset.alias#. This must be "
"installed only by package:converters/libiconv[]. `CHARSETFIX_MAKEFILEIN` "
"can be set to a path relative to `WRKSRC` if [.filename]#charset.alias# is "
"not installed by [.filename]#${WRKSRC}/Makefile.in#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:274
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:278
#, no-wrap
msgid "`cmake`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:277
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:281
msgid "Possible arguments: (none), `insource`, `noninja`, `run`, `testing`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:279
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:283
msgid "Use CMake for configuring the port and generating a build system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:283
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:287
msgid ""
"By default an out-of-source build is performed, leaving the sources in "
"`WRKSRC` free from build artifacts. With the `insource` argument, an in-"
"source build will be performed instead. This argument should be an "
"exception, used only when a regular out-of-source build does not work."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:288
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:292
msgid ""
"By default Ninja (package:devel/ninja[]) is used for the build. In some "
"cases this does not work correctly. With the `noninja` argument, the build "
"will use regular `make` for builds. This argument should only be used if a "
"Ninja-based build does not work."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:290
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:294
msgid ""
"With the `run` argument, a run dependency is registered in addition to a "
"build dependency."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:293
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:297
msgid ""
"With the `testing` argument, a test-target is added that uses CTest. When "
"running tests the port will be re-configured for testing and re-built."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:295
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:299
msgid "For more information see crossref:special[using-cmake,Using `cmake`]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:297
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:301
#, no-wrap
msgid "`compiler`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:300
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:304
msgid ""
"Possible arguments: (none), `env` (default, implicit), `{cpp}17-lang`, `{cpp}"
"14-lang`, `{cpp}11-lang`, `gcc-{cpp}11-lib`, `{cpp}11-lib`, `{cpp}0x`, "
"`c11`, `nestedfct`, `features`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:304
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:308
msgid ""
"Determines which compiler to use based on any given wishes. Use `{cpp}17-"
"lang` if the port needs a {cpp}17-capable compiler, `{cpp}14-lang` if the "
"port needs a {cpp}14-capable compiler, `{cpp}11-lang` if the port needs a "
"{cpp}11-capable compiler, `gcc-{cpp}11-lib` if the port needs the `g++` "
"compiler with a {cpp}11 library, or `{cpp}11-lib` if the port needs a {cpp}"
"11-ready standard library. If the port needs a compiler understanding {cpp}"
"0X, C11 or nested functions, the corresponding parameters should be used."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:307
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:311
msgid ""
"Use `features` to request a list of features supported by the default "
"compiler. After including [.filename]#bsd.port.pre.mk# the port can inspect "
"the results using these variables:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:309
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:313
msgid ""
"`COMPILER_TYPE`: the default compiler on the system, either gcc or clang"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:310
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:314
msgid ""
"`ALT_COMPILER_TYPE`: the alternative compiler on the system, either gcc or "
"clang. Only set if two compilers are present in the base system."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:311
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:315
msgid ""
"`COMPILER_VERSION`: the first two digits of the version of the default "
"compiler."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:312
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:316
msgid ""
"`ALT_COMPILER_VERSION`: the first two digits of the version of the "
"alternative compiler, if present."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:313
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:317
msgid "`CHOSEN_COMPILER_TYPE`: the chosen compiler, either gcc or clang"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:314
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:318
msgid ""
"`COMPILER_FEATURES`: the features supported by the default compiler. It "
"currently lists the {cpp} library."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:316
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:320
#, no-wrap
msgid "`cpe`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:323
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:327
msgid ""
"Include Common Platform Enumeration (CPE) information in package manifest as "
"a CPE 2.3 formatted string. See the https://scap.nist.gov/specifications/"
"cpe/[CPE specification] for details. To add CPE information to a port, "
"follow these steps:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:326
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:330
msgid ""
"Search for the official CPE entry for the software product either by using "
"the NVD's https://web.nvd.nist.gov/view/cpe/search[CPE search engine] or in "
"the https://nvd.nist.gov/feeds/xml/cpe/dictionary/official-cpe-"
"dictionary_v2.3.xml.gz[official CPE dictionary] (warning, very large XML "
"file). _Do not ever make up CPE data._"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:327
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:331
msgid ""
"Add `cpe` to `USES` and compare the result of `make -V CPE_STR` to the CPE "
"dictionary entry. Continue one step at a time until `make -V CPE_STR` is "
"correct."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:328
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:332
msgid ""
"If the product name (second field, defaults to `PORTNAME`) is incorrect, "
"define `CPE_PRODUCT`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:329
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:333
msgid ""
"If the vendor name (first field, defaults to `CPE_PRODUCT`) is incorrect, "
"define `CPE_VENDOR`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:330
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:334
msgid ""
"If the version field (third field, defaults to `PORTVERSION`) is incorrect, "
"define `CPE_VERSION`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:331
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:335
msgid ""
"If the update field (fourth field, defaults to empty) is incorrect, define "
"`CPE_UPDATE`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:332
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:336
msgid ""
"If it is still not correct, check [.filename]#Mk/Uses/cpe.mk# for additional "
"details, or contact the {ports-secteam}."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:333
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:337
msgid ""
"Derive as much as possible of the CPE name from existing variables such as "
"`PORTNAME` and `PORTVERSION`. Use variable modifiers to extract the relevant "
"portions from these variables rather than hardcoding the name."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:334
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:338
msgid ""
"_Always_ run `make -V CPE_STR` and check the output before committing "
"anything that changes `PORTNAME` or `PORTVERSION` or any other variable "
"which is used to derive `CPE_STR`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:336
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:340
#, no-wrap
msgid "`cran`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:339
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:343
msgid "Possible arguments: (none), `auto-plist`, `compiles`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:343
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:347
msgid ""
"Uses the Comprehensive R Archive Network. Specify `auto-plist` to "
"automatically generate [.filename]#pkg-plist#. Specify `compiles` if the "
"port has code that need to be compiled."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:345
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:349
#, no-wrap
msgid "`desktop-file-utils`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:352
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:356
msgid ""
"Uses update-desktop-database from package:devel/desktop-file-utils[]. An "
"extra post-install step will be run without interfering with any post-"
"install steps already in the port [.filename]#Makefile#. A line with "
"<<plist-keywords-desktop-file-utils,`@desktop-file-utils`>> will be added to "
"the plist."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:354
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:358
#, no-wrap
msgid "`desthack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:359
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:363
msgid ""
"Changes the behavior of GNU configure to properly support `DESTDIR` in case "
"the original software does not."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:361
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:365
#, no-wrap
msgid "`display`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:364
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:368
msgid "Possible arguments: (none), _ARGS_"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:368
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:372
msgid ""
"Set up a virtual display environment. If the environment variable `DISPLAY` "
"is not set, then Xvfb is added as a build dependency, and `CONFIGURE_ENV` is "
"extended with the port number of the currently running instance of Xvfb. "
"The _ARGS_ parameter defaults to `install` and controls the phase around "
"which to start and stop the virtual display."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:370
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:374
#, no-wrap
msgid "`dos2unix`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:378
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:382
msgid ""
"The port has files with line endings in DOS format which need to be "
"converted. Several variables can be set to control which files will be "
"converted. The default is to convert _all_ files, including binaries. See "
"crossref:slow-porting[slow-patch-automatic-replacements,Simple Automatic "
"Replacements] for examples."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:380
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:384
msgid "`DOS2UNIX_REGEX`: match file names based on a regular expression."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:381
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:385
msgid "`DOS2UNIX_FILES`: match literal file names."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:382
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:386
msgid "`DOS2UNIX_GLOB`: match file names based on a glob pattern."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:383
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:387
msgid ""
"`DOS2UNIX_WRKSRC`: the directory from which to start the conversions. "
"Defaults to `${WRKSRC}`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:385
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:389
#, no-wrap
msgid "`drupal`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:388
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:392
msgid "Possible arguments: `7`, `module`, `theme`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:393
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:397
msgid ""
"Automate installation of a port that is a Drupal theme or module. Use with "
"the version of Drupal that the port is expecting. For example, "
"`USES=drupal:7,module` says that this port creates a Drupal 7 module. A "
"Drupal 7 theme can be specified with `USES=drupal:7,theme`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:395
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:399
#, no-wrap
msgid "`eigen`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:398
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:402
msgid "Possible arguments: 2, 3, build (default), run"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:400
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:404
msgid "Add dependency on package:math/eigen[]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:402
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:406
#, no-wrap
msgid "`elfctl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:407
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:411
msgid "Change an ELF binary's feature control note by setting ELF_FEATURES."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:409
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:413
#, no-wrap
msgid "Uses=elfctl"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:418
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:422
#, no-wrap
msgid ""
"USES= elfctl\n"
"ELF_FEATURES=\tfeaturelist:path/to/file1 \\\n"
"\t\tfeaturelist:path/to/file1 \\\n"
"\t\tfeaturelist:path/to/file2\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:423
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:427
msgid ""
"The format of `featurelist` is described in man:elfctl[1]. The file paths "
"are relative to ${BUILD_WRKSRC}."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:425
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:429
+#, no-wrap
+msgid "`erlang`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:432
+msgid "Possible arguments: (none), `enc`, `rebar`, `rebar3`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:437
+msgid ""
+"Adds a build and run time dependency on package:lang/erlang[]. Depending on "
+"the argument, it adds additional build dependencies. `enc` adds a dependency "
+"on package:devel/erlang-native-compiler[], `rebar` adds a dependency on "
+"package:devel/rebar[] and `rebar3` adds a dependency on package:devel/"
+"rebar3[]."
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:439
+msgid "In addition, the following variables are available to the port:"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:441
+msgid ""
+"`ERL_APP_NAME`: Erlang app name as installed in Erlang's lib dir (minus "
+"version)"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:442
+msgid "`ERL_APP_ROOT`: Root directory for this Erlang app"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:443
+msgid "`REBAR_CMD`: Path to the \"rebar\" command"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:444
+msgid "`REBAR3_CMD`: Path to the \"rebar3\" command"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:445
+msgid "`REBAR_PROFILE`: Rebar profile"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:446
+msgid "`REBAR_TARGETS`: Rebar target list (usually compile, maybe escriptize)"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:447
+msgid "`ERL_BUILD_NAME`: Build name for rebar3"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:448
+msgid "`ERL_BUILD_DEPS`: List of BUILD_DEPENDS in category/portname format"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:449
+msgid "`ERL_RUN_DEPS`: List of RUN_DEPENDS in category/portname format"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:450
+msgid "`ERL_DOCS`: List of documentation files and directories"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:452
#, no-wrap
msgid "`fakeroot`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:431
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:458
msgid ""
"Changes some default behavior of build systems to allow installing as a "
"user. See https://wiki.debian.org/FakeRoot[] for more information on "
"`fakeroot`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:433
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:460
#, no-wrap
msgid "`fam`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:436
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:463
msgid "Possible arguments: (none), `fam`, `gamin`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:439
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:466
msgid ""
"Uses a File Alteration Monitor as a library dependency, either package:devel/"
"fam[] or package:devel/gamin[]. End users can set WITH_FAM_SYSTEM to "
"specify their preference."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:441
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:468
#, no-wrap
msgid "`firebird`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:444
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:471
msgid "Possible arguments: (none), `25`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:446
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:473
msgid "Add a dependency to the client library of the Firebird database."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:448
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:475
#, no-wrap
msgid "`fonts`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:451
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:478
msgid "Possible arguments: (none), `fc`, `fontsdir` (default), `none`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:456
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:483
msgid ""
"Adds a runtime dependency on tools needed to register fonts. Depending on "
"the argument, add a `crossref:plist[plist-keywords-fc,@fc] ${FONTSDIR}` "
"line, `crossref:plist[plist-keywords-fontsdir,@fontsdir] ${FONTSDIR}` line, "
"or no line if the argument is `none`, to the plist. `FONTSDIR` defaults to "
"[.filename]#${PREFIX}/share/fonts/${FONTNAME}# and `FONTNAME` to `${PORTNAME}"
"`. Add `FONTSDIR` to `PLIST_SUB` and `SUB_LIST`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:458
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:485
#, no-wrap
msgid "`fortran`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:461
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:488
msgid "Possible arguments: `gcc` (default)"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:463
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:490
msgid "Uses the GNU Fortran compiler."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:465
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:492
#, no-wrap
msgid "`fuse`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:468
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:495
msgid "Possible arguments: `2` (default), `3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:470
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:497
msgid ""
"The port will depend on the FUSE library and handle the dependency on the "
"kernel module depending on the version of FreeBSD."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:472
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:499
#, no-wrap
msgid "`gem`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:475
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:502
msgid "Possible arguments: (none), `noautoplist`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:478
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:505
msgid ""
"Handle building with RubyGems. If `noautoplist` is used, the packing list "
"is not generated automatically."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:480
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:507
#, no-wrap
msgid "`gettext`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:486
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:513
msgid ""
"Deprecated. Will include both <<uses-gettext-runtime,`gettext-runtime`>> "
"and <<uses-gettext-tools,`gettext-tools`>>."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:488
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:515
#, no-wrap
msgid "`gettext-runtime`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:491
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:518
msgid "Possible arguments: (none), `lib` (default), `build`, `run`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:495
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:522
msgid ""
"Uses package:devel/gettext-runtime[]. By default, with no arguments or with "
"the `lib` argument, implies a library dependency on [.filename]#libintl."
"so#. `build` and `run` implies, respectively a build-time and a run-time "
"dependency on [.filename]#gettext#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:497
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:524
#, no-wrap
msgid "`gettext-tools`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:500
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:527
msgid "Possible arguments: (none), `build` (default), `run`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:504
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:531
msgid ""
"Uses package:devel/gettext-tools[]. By default, with no argument, or with "
"the `build` argument, a build time dependency on [.filename]#msgfmt# is "
"registered. With the `run` argument, a run-time dependency is registered."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:506
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:533
#, no-wrap
msgid "`ghostscript`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:509
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:536
msgid "Possible arguments: _X_, `build`, `run`, `nox11`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:514
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:541
msgid ""
"A specific version _X_ can be used. Possible versions are `7`, `8`, `9`, and "
"`agpl` (default). `nox11` indicates that the `-nox11` version of the port "
"is required. `build` and `run` add build- and run-time dependencies on "
"Ghostscript. The default is both build- and run-time dependencies."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:516
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:530
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:815
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:543
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:557
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:842
#, no-wrap
msgid "`gl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:523
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:550
msgid ""
"Provides an easy way to depend on GL components. The components should be "
"listed in `USE_GL`. The available components are:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:524
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:551
#, no-wrap
msgid "`egl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:526
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:553
msgid ""
"add a library dependency on [.filename]#libEGL.so# from package:graphics/"
"libglvnd[]"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:527
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:554
#, no-wrap
msgid "`gbm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:529
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:556
msgid ""
"Add a library dependency on [.filename]#libgbm.so# from package:graphics/"
"mesa-libs[]"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:532
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:559
msgid ""
"Add a library dependency on [.filename]#libGL.so# from package:graphics/"
"libglvnd[]"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:533
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:560
#, no-wrap
msgid "`glesv2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:535
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:562
msgid ""
"Add a library dependency on [.filename]#libGLESv2.so# from package:graphics/"
"libglvnd[]"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:536
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:563
#, no-wrap
msgid "`glew`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:538
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:565
msgid ""
"Add a library dependency on [.filename]#libGLEW.so# from package:graphics/"
"glew[]"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:539
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:566
#, no-wrap
msgid "`glu`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:541
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:568
msgid ""
"Add a library dependency on [.filename]#libGLU.so# from package:graphics/"
"libGLU[]"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:542
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:569
#, no-wrap
msgid "`glut`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:544
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:571
msgid ""
"Add a library dependency on [.filename]#libglut.so# from package:graphics/"
"freeglut[]"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:545
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1478
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:572
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1537
#, no-wrap
msgid "`opengl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:547
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:574
msgid ""
"Add a library dependency on [.filename]#libOpenGL.so# from package:graphics/"
"libglvnd[]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:549
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:576
#, no-wrap
msgid "`gmake`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:554
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:581
msgid ""
"Uses package:devel/gmake[] as a build-time dependency and sets up the "
"environment to use `gmake` as the default `make` for the build."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:556
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:583
#, no-wrap
msgid "`gnome`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:563
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:590
msgid ""
"Provides an easy way to depend on GNOME components. The components should "
"be listed in `USE_GNOME`. The available components are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:565
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:983
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:592
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1010
msgid "`atk`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:566
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:593
msgid "`atkmm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:567
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:798
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:986
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:594
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:825
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1013
msgid "`cairo`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:568
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:595
msgid "`cairomm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:569
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:596
msgid "`dconf`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:570
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:597
msgid "`esound`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:571
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:598
msgid "`evolutiondataserver3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:572
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:599
msgid "`gconf2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:573
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:600
msgid "`gconfmm26`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:574
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:814
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:601
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:841
msgid "`gdkpixbuf`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:575
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:997
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:602
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1024
msgid "`gdkpixbuf2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:576
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:603
msgid "`glib12`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:577
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:604
msgid "`glib20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:578
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:605
msgid "`glibmm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:579
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:606
msgid "`gnomecontrolcenter3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:580
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:607
msgid "`gnomedesktop3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:581
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:608
msgid "`gnomedocutils`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:582
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:609
msgid "`gnomemenus3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:583
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:610
msgid "`gnomemimedata`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:584
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:611
msgid "`gnomeprefix`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:585
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:612
msgid "`gnomesharp20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:586
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:613
msgid "`gnomevfs2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:587
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:614
msgid "`gsound`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:588
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:615
msgid "`gtk-update-icon-cache`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:589
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:616
msgid "`gtk12`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:590
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:617
msgid "`gtk20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:591
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:618
msgid "`gtk30`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:592
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:619
msgid "`gtkhtml3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:593
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:620
msgid "`gtkhtml4`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:594
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:621
msgid "`gtkmm20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:595
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:622
msgid "`gtkmm24`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:596
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:623
msgid "`gtkmm30`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:597
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:624
msgid "`gtksharp20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:598
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:625
msgid "`gtksourceview`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:599
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:626
msgid "`gtksourceview2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:600
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:627
msgid "`gtksourceview3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:601
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:628
msgid "`gtksourceviewmm3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:602
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:629
msgid "`gvfs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:603
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1147
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:630
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1198
msgid "`intlhack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:604
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1148
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:631
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1199
msgid "`intltool`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:605
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:632
msgid "`introspection`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:606
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:633
msgid "`libartlgpl2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:607
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:634
msgid "`libbonobo`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:608
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:635
msgid "`libbonoboui`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:609
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:636
msgid "`libgda5`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:610
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:637
msgid "`libgda5-ui`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:611
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:638
msgid "`libgdamm5`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:612
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:639
msgid "`libglade2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:613
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:640
msgid "`libgnome`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:614
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:641
msgid "`libgnomecanvas`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:615
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:642
msgid "`libgnomekbd`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:616
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:643
msgid "`libgnomeprint`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:617
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:644
msgid "`libgnomeprintui`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:618
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:645
msgid "`libgnomeui`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:619
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:646
msgid "`libgsf`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:620
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:647
msgid "`libgtkhtml`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:621
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:648
msgid "`libgtksourceviewmm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:622
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:649
msgid "`libidl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:623
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:650
msgid "`librsvg2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:624
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:651
msgid "`libsigc++12`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:625
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:652
msgid "`libsigc++20`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:626
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:653
msgid "`libwnck`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:627
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:654
msgid "`libwnck3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:628
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:655
msgid "`libxml++26`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:629
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1022
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:656
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1049
msgid "`libxml2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:630
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:657
msgid "`libxslt`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:631
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:658
msgid "`metacity`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:632
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:659
msgid "`nautilus3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:633
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:660
msgid "`orbit2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:634
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:851
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1033
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:661
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:878
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1060
msgid "`pango`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:635
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:662
msgid "`pangomm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:636
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:663
msgid "`pangox-compat`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:637
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:664
msgid "`py3gobject3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:638
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:665
msgid "`pygnome2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:639
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:666
msgid "`pygobject`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:640
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:667
msgid "`pygobject3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:641
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:668
msgid "`pygtk2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:642
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:669
msgid "`pygtksourceview`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:643
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:670
msgid "`referencehack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:644
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:671
msgid "`vte`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:645
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:672
msgid "`vte3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:648
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1161
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:675
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1212
msgid ""
"The default dependency is build- and run-time, it can be changed with `:"
"build` or `:run`. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:653
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:680
#, no-wrap
msgid ""
"USES=\t\tgnome\n"
"USE_GNOME=\tgnomemenus3:build intlhack\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:656
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:683
msgid "See crossref:special[using-gnome,Using GNOME] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:658
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:685
#, no-wrap
msgid "`go`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:663
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:690
msgid ""
"Ports should not be created for Go libs, see crossref:special[go-libs,Go "
"Libraries] for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:666
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:693
msgid ""
"Possible arguments: (none), `N.NN`, `N.NN-devel`, `modules`, `no_targets`, "
"`run`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:673
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:700
msgid ""
"Sets default values and targets used to build Go software. A build "
"dependency on the Go compiler port is added, port maintainers can set "
"version required. By default the build is performed in GOPATH mode. If Go "
"software uses modules, the modules-aware mode can be switched on with "
"`modules` argument. `no_targets` will setup build environment like "
"`GO_ENV`, `GO_BUILDFLAGS` but skip creating extract and build targets. "
"`run` will also add a run dependency on the Go compiler port."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:675
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:702
msgid "The build process is controlled by several variables:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:676
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:703
#, no-wrap
msgid "`GO_MODULE`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:679
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:706
msgid ""
"The name of the application module as specified by the `module` directive in "
"`go.mod`. In most cases, this is the only required variable for ports that "
"use Go modules."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:680
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:707
#, no-wrap
msgid "`GO_PKGNAME`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:685
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:712
msgid ""
"The name of the Go package when building in GOPATH mode. This is the "
"directory that will be created in `${GOPATH}/src`. If not set explicitly "
"and `GH_SUBDIR` or `GL_SUBDIR` is present, `GO_PKGNAME` will be inferred "
"from it. It is not needed when building in modules-aware mode."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:686
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:713
#, no-wrap
msgid "`GO_TARGET`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:690
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:717
msgid ""
"The packages to build. The default value is `${GO_PKGNAME}`. `GO_TARGET` "
"can also be a tuple in the form `package:path` where path can be either a "
"simple filename or a full path starting with `${PREFIX}`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:691
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:718
#, no-wrap
msgid "`GO_TESTTARGET`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:694
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:721
msgid ""
"The packages to test. The default value is `./...` (the current package and "
"all subpackages)."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:695
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:722
#, no-wrap
msgid "`CGO_CFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:697
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:724
msgid "Additional `CFLAGS` values to be passed to the C compiler by `go`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:698
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:725
#, no-wrap
msgid "`CGO_LDFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:700
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:727
msgid "Additional `LDFLAGS` values to be passed to the C compiler by `go`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:701
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:728
#, no-wrap
msgid "`GO_BUILDFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:703
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:730
msgid "Additional build arguments to be passed to `go build`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:704
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:731
#, no-wrap
msgid "`GO_TESTFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:706
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:733
msgid "Additional build arguments to be passed to `go test`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:708
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:735
msgid ""
"See crossref:special[using-go,Building Go Applications] for usage examples."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:710
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:737
#, no-wrap
msgid "`gperf`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:715
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:742
msgid ""
"Add a buildtime dependency on package:devel/gperf[] if `gperf` is not "
"present in the base system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:717
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:744
#, no-wrap
msgid "`grantlee`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:720
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:747
msgid "Possible arguments: `5`, `selfbuild`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:724
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:751
msgid ""
"Handle dependency on Grantlee. Specify `5` to depend on the Qt5 based "
"version, package:devel/grantlee5[]. `selfbuild` is used internally by "
"package:devel/grantlee5[] to get their versions numbers."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:726
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:753
#, no-wrap
msgid "`groff`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:729
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:756
msgid "Possible arguments: `build`, `run`, `both`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:731
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:758
msgid ""
"Registers a dependency on package:textproc/groff[] if not present in the "
"base system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:733
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:760
#, no-wrap
msgid "`gssapi`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:736
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:763
msgid ""
"Possible arguments: (none), `base` (default), `heimdal`, `mit`, `flags`, "
"`bootstrap`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:741
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:768
msgid ""
"Handle dependencies needed by consumers of the GSS-API. Only libraries that "
"provide the Kerberos mechanism are available. By default, or set to `base`, "
"the GSS-API library from the base system is used. Can also be set to "
"`heimdal` to use package:security/heimdal[], or `mit` to use package:"
"security/krb5[]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:743
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:770
msgid ""
"When the local Kerberos installation is not in `LOCALBASE`, set "
"`HEIMDAL_HOME` (for `heimdal`) or `KRB5_HOME` (for `krb5`) to the location "
"of the Kerberos installation."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:745
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:772
msgid "These variables are exported for the ports to use:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:747
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:774
msgid "`GSSAPIBASEDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:748
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:775
msgid "`GSSAPICPPFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:749
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:776
msgid "`GSSAPIINCDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:750
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:777
msgid "`GSSAPILDFLAGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:751
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:778
msgid "`GSSAPILIBDIR`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:752
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:779
msgid "`GSSAPILIBS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:753
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:780
msgid "`GSSAPI_CONFIGURE_ARGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:756
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:783
msgid ""
"The `flags` option can be given alongside `base`, `heimdal`, or `mit` to "
"automatically add `GSSAPICPPFLAGS`, `GSSAPILDFLAGS`, and `GSSAPILIBS` to "
"`CFLAGS`, `LDFLAGS`, and `LDADD`, respectively. For example, use `base,"
"flags`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:759
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:786
msgid ""
"The `bootstrap` option is a special prefix only for use by package:security/"
"krb5[] and package:security/heimdal[]. For example, use `bootstrap,mit`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:761
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:788
#, no-wrap
msgid "Typical Use"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:768
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:795
#, no-wrap
msgid ""
"OPTIONS_SINGLE=\tGSSAPI\n"
"OPTIONS_SINGLE_GSSAPI=\tGSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:776
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:803
#, no-wrap
msgid ""
"GSSAPI_BASE_USES=\tgssapi\n"
"GSSAPI_BASE_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n"
"GSSAPI_HEIMDAL_USES=\tgssapi:heimdal\n"
"GSSAPI_HEIMDAL_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n"
"GSSAPI_MIT_USES=\tgssapi:mit\n"
"GSSAPI_MIT_CONFIGURE_ON=\t--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}\n"
"GSSAPI_NONE_CONFIGURE_ON=\t--without-gssapi\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:781
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:808
#, no-wrap
msgid "`gstreamer`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:788
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:815
msgid ""
"Provides an easy way to depend on GStreamer components. The components "
"should be listed in `USE_GSTREAMER`. The available components are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:790
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:817
msgid "`a52dec`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:791
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:818
msgid "`aalib`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:792
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:819
msgid "`amrnb`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:793
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:820
msgid "`amrwbdec`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:794
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:821
msgid "`aom`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:795
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:822
msgid "`assrender`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:796
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:823
msgid "`bad`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:797
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:824
msgid "`bs2b`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:799
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:826
msgid "`cdio`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:800
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:827
msgid "`cdparanoia`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:801
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:828
msgid "`chromaprint`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:802
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:988
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:829
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1015
msgid "`curl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:803
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:830
msgid "`dash`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:804
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:831
msgid "`dtls`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:805
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:832
msgid "`dts`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:806
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:833
msgid "`dv`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:807
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:834
msgid "`dvd`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:808
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:835
msgid "`dvdread`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:809
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:836
msgid "`editing-services`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:810
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:837
msgid "`faac`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:811
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:838
msgid "`faad`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:812
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:995
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:839
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1022
msgid "`flac`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:813
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:840
msgid "`flite`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:816
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:843
msgid "`gme`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:817
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:844
msgid "`gnonlin`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:818
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:845
msgid "`good`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:819
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:846
msgid "`gsm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:820
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:847
msgid "`gtk4`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:821
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:848
msgid "`gtk`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:822
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:849
msgid "`hal`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:823
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:850
msgid "`hls`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:824
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:851
msgid "`jack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:825
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1004
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:852
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1031
msgid "`jpeg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:826
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:853
msgid "`kate`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:827
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:854
msgid "`kms`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:828
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:855
msgid "`ladspa`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:829
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:856
msgid "`lame`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:830
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:857
msgid "`libav`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:831
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:858
msgid "`libcaca`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:832
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:859
msgid "`libde265`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:833
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:860
msgid "`libmms`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:834
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:861
msgid "`libvisual`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:835
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:862
msgid "`lv2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:836
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:863
msgid "`mm`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:837
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:864
msgid "`modplug`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:838
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:865
msgid "`mpeg2dec`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:839
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:866
msgid "`mpeg2enc`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:840
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:867
msgid "`mpg123`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:841
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:868
msgid "`mplex`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:842
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:869
msgid "`musepack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:843
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:870
msgid "`neon`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:844
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:871
msgid "`ogg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:845
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:872
msgid "`opencv`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:846
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:873
msgid "`openexr`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:847
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:874
msgid "`openh264`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:848
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:875
msgid "`openjpeg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:849
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:876
msgid "`openmpt`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:850
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:877
msgid "`opus`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:852
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1035
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:879
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1062
msgid "`png`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:853
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:880
msgid "`pulse`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:854
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1037
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1580
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:881
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1064
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1639
#, no-wrap
msgid "`qt`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:855
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:882
msgid "`resindvd`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:856
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:883
msgid "`rsvg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:857
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:884
msgid "`rtmp`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:858
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:885
msgid "`shout2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:859
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:886
msgid "`sidplay`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:860
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:887
msgid "`smoothstreaming`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:861
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:888
msgid "`sndfile`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:862
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:889
msgid "`sndio`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:863
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:890
msgid "`soundtouch`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:864
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:891
msgid "`soup`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:865
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:892
msgid "`spandsp`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:866
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:893
msgid "`speex`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:867
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:894
msgid "`srtp`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:868
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:895
msgid "`taglib`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:869
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:896
msgid "`theora`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:870
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:897
msgid "`ttml`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:871
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:898
msgid "`twolame`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:872
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:899
msgid "`ugly`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:873
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:900
msgid "`v4l2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:874
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:901
msgid "`vorbis`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:875
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:902
msgid "`vpx`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:876
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:903
msgid "`vulkan`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:877
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:904
msgid "`wavpack`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:878
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:905
msgid "`webp`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:879
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:906
msgid "`webrtcdsp`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:880
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:907
msgid "`x264`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:881
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:908
msgid "`x265`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:882
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:909
msgid "`x`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:883
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:910
msgid "`ximagesrc`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:884
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:911
msgid "`zbar`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:886
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:913
#, no-wrap
msgid "`horde`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:893
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:920
msgid ""
"Add buildtime and runtime dependencies on package:devel/pear-channel-"
"horde[]. Other Horde dependencies can be added with `USE_HORDE_BUILD` and "
"`USE_HORDE_RUN`. See crossref:special[php-horde,Horde Modules] for more "
"information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:895
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:922
#, no-wrap
msgid "`iconv`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:898
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:925
msgid ""
"Possible arguments: (none), `lib`, `build`, `patch`, `translit`, `wchar_t`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:904
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:931
msgid ""
"Uses `iconv` functions, either from the port package:converters/libiconv[] "
"as a build-time and run-time dependency, or from the base system. By "
"default, with no arguments or with the `lib` argument, implies `iconv` with "
"build-time and run-time dependencies. `build` implies a build-time "
"dependency, and `patch` implies a patch-time dependency. If the port uses "
"the `WCHAR_T` or `//TRANSLIT` iconv extensions, add the relevant arguments "
"so that the correct iconv is used. For more information see crossref:"
"special[using-iconv,Using `iconv`]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:906
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:933
#, no-wrap
msgid "`imake`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:909
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:936
msgid "Possible arguments: (none), `env`, `notall`, `noman`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:914
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:941
msgid ""
"Add package:devel/imake[] as a build-time dependency and run `xmkmf -a` "
"during the `configure` stage. If the `env` argument is given, the "
"`configure` target is not set. If the `-a` flag is a problem for the port, "
"add the `notall` argument. If `xmkmf` does not generate a `install.man` "
"target, add the `noman` argument."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:916
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:943
#, no-wrap
msgid "`kde`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:919
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:946
msgid "Possible arguments: `5`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:922
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:949
msgid ""
"Add dependency on KDE components. See crossref:special[using-kde,Using KDE] "
"for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:924
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:951
#, no-wrap
msgid "`kmod`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:927
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:954
msgid "Possible arguments: (none), `debug`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:929
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:956
msgid "Fills in the boilerplate for kernel module ports, currently:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:931
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:958
msgid "Add `kld` to `CATEGORIES`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:932
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:959
msgid "Set `SSP_UNSAFE`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:933
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:960
msgid "Set `IGNORE` if the kernel sources are not found in `SRC_BASE`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:934
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:961
msgid ""
"Define `KMODDIR` to [.filename]#/boot/modules# by default, add it to "
"`PLIST_SUB` and `MAKE_ENV`, and create it upon installation. If `KMODDIR` is "
"set to [.filename]#/boot/kernel#, it will be rewritten to [.filename]#/boot/"
"modules#. This prevents breaking packages when upgrading the kernel due to [."
"filename]#/boot/kernel# being renamed to [.filename]#/boot/kernel.old# in "
"the process."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:935
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:962
msgid ""
"Handle cross-referencing kernel modules upon installation and "
"deinstallation, using crossref:plist[plist-keywords-kld,`@kld`]."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:936
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:963
msgid ""
"If the `debug` argument is given, the port can install a debug version of "
"the module into [.filename]#KERN_DEBUGDIR#/[.filename]#KMODDIR#. By default, "
"`KERN_DEBUGDIR` is copied from `DEBUGDIR` and set to [.filename]#/usr/lib/"
"debug#. The framework will take care of creating and removing any required "
"directories."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:938
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:965
#, no-wrap
msgid "`lha`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:943
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:970
msgid "Set `EXTRACT_SUFX` to `.lzh`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:945
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:972
#, no-wrap
msgid "`libarchive`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:951
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:978
msgid ""
"Registers a dependency on package:archivers/libarchive[]. Any ports "
"depending on libarchive must include `USES=libarchive`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:953
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:980
#, no-wrap
msgid "`libedit`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:959
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:986
msgid ""
"Registers a dependency on package:devel/libedit[]. Any ports depending on "
"libedit must include `USES=libedit`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:961
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:988
#, no-wrap
msgid "`libtool`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:964
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:991
msgid "Possible arguments: (none), `keepla`, `build`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:968
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:995
msgid ""
"Patches `libtool` scripts. This must be added to all ports that use "
"`libtool`. The `keepla` argument can be used to keep [.filename]#.la# "
"files. Some ports do not ship with their own copy of libtool and need a "
"build time dependency on package:devel/libtool[], use the `:build` argument "
"to add such dependency."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:970
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:997
#, no-wrap
msgid "`linux`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:973
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1000
msgid "Possible arguments: `c6`, `c7`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:977
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1004
msgid ""
"Ports Linux compatibility framework. Specify `c6` to depend on CentOS 6 "
"packags. Specify `c7` to depend on CentOS 7 packages. The available "
"packages are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:979
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1006
msgid "`allegro`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:980
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1007
msgid "`alsa-plugins-oss`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:981
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1008
msgid "`alsa-plugins-pulseaudio`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:982
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1009
msgid "`alsalib`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:984
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1011
msgid "`avahi-libs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:985
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1012
msgid "`base`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:987
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1014
msgid "`cups-libs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:989
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1016
msgid "`cyrus-sasl2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:990
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1017
msgid "`dbusglib`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:991
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1018
msgid "`dbuslibs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:992
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1019
msgid "`devtools`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:993
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1020
msgid "`dri`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:994
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1021
msgid "`expat`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:996
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1023
msgid "`fontconfig`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:998
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1025
msgid "`gnutls`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:999
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1026
msgid "`graphite2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1000
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1027
msgid "`gtk2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1001
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1028
msgid "`harfbuzz`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1002
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1029
msgid "`jasper`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1003
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1030
msgid "`jbigkit`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1005
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1032
msgid "`libasyncns`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1006
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1033
msgid "`libaudiofile`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1007
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1034
msgid "`libelf`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1008
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1035
msgid "`libgcrypt`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1009
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1036
msgid "`libgfortran`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1010
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1037
msgid "`libgpg-error`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1011
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1038
msgid "`libmng`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1012
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1039
msgid "`libogg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1013
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1040
msgid "`libpciaccess`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1014
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1041
msgid "`libsndfile`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1015
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1042
msgid "`libsoup`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1016
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1043
msgid "`libssh2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1017
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1044
msgid "`libtasn1`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1018
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1045
msgid "`libthai`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1019
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1046
msgid "`libtheora`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1020
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1047
msgid "`libv4l`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1021
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1048
msgid "`libvorbis`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1023
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1050
msgid "`mikmod`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1024
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1051
msgid "`naslibs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1025
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1052
msgid "`ncurses-base`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1026
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1053
msgid "`nspr`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1027
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1054
msgid "`nss`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1028
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1261
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1055
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1320
#, no-wrap
msgid "`openal`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1029
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1056
msgid "`openal-soft`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1030
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1057
msgid "`openldap`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1031
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1058
msgid "`openmotif`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1032
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1059
msgid "`openssl`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1034
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2040
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1061
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2099
#, no-wrap
msgid "`pixman`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1036
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1063
msgid "`pulseaudio-libs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1038
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1065
msgid "`qt-x11`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1039
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1066
msgid "`qtwebkit`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1040
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1067
msgid "`scimlibs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1041
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1068
msgid "`sdl12`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1042
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1069
msgid "`sdlimage`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1043
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1070
msgid "`sdlmixer`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1044
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1071
msgid "`sqlite3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1045
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1072
msgid "`tcl85`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1046
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1073
msgid "`tcp_wrappers-libs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1047
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1074
msgid "`tiff`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1048
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1075
msgid "`tk85`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1049
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1076
msgid "`ucl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1050
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1077
msgid "`xorglibs`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1052
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1079
+#, no-wrap
+msgid "`llvm`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1082
+msgid ""
+"Possible arguments: (none), `_XY_`, min=`_XY_`, max=`_XY_`, build, run, lib"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1090
+msgid ""
+"Adds a dependency on LLVM. By default this is a build dependency unless "
+"overridden by the `run` or `lib` options. The default version is the one "
+"set in `LLVM_DEFAULT`. A specific version can be specified as well. The "
+"minimum and maximum versions can be specified with the `min` and `max` "
+"parameters respectively. The ports framework export the following variables "
+"to the port:"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1091
+#, no-wrap
+msgid "`LLVM_VERSION`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1093
+msgid "Version chosen from the arguments to llvm.mk"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1093
+#, no-wrap
+msgid "`LLVM_PORT`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1095
+msgid "Chosen llvm port"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1095
+#, no-wrap
+msgid "`LLVM_CONFIG`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1097
+msgid "llvm-config of the chosen port"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1097
+#, no-wrap
+msgid "`LLVM_LIBLLVM`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1099
+msgid "libLLVM.so of the chosen port"
+msgstr ""
+
+#. type: Labeled list
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1099
+#, no-wrap
+msgid "`LLVM_PREFIX`"
+msgstr ""
+
+#. type: delimited block = 4
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1101
+msgid "Installation prefix of the chosen port"
+msgstr ""
+
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1103
#, no-wrap
msgid "`localbase`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1055
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1106
msgid "Possible arguments: (none), `ldflags`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1060
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1111
msgid ""
"Ensures that libraries from dependencies in `LOCALBASE` are used instead of "
"the ones from the base system. Specify `ldflags` to add `-L${LOCALBASE}/"
"lib` to `LDFLAGS` instead of `LIBS`. Ports that depend on libraries that "
"are also present in the base system should use this. It is also used "
"internally by a few other `USES`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1062
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1113
#, no-wrap
msgid "`lua`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1065
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1116
msgid ""
"Possible arguments: (none), `_XY_`, `_XY_+`, `-_XY_`, `_XY_-_ZA_`, `module`, "
"`flavors`, `build`, `run`, `env`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1069
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1120
msgid ""
"Adds a dependency on Lua. By default this is a library dependency, unless "
"overridden by the `build` and/or `run` option. The `env` option prevents "
"the addition of any dependency, while still defining all the usual variables."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1071
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1122
msgid ""
"The default version is set by the usual `DEFAULT_VERSIONS` mechanism, unless "
"a version or range of versions is specified as an argument, for example, "
-"`51` or `51-53`."
+"`51` or `51-54`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1074
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1125
msgid ""
"Applications using Lua are normally built for only a single Lua version. "
"However, library modules intended to be loaded by Lua code should use the "
"`module` option to build with multiple flavors."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1076
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1095
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1127
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1146
msgid "For more information see crossref:special[using-lua,Using Lua]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1078
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1129
#, no-wrap
msgid "`luajit`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1081
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1132
msgid "Possible arguments: (none), `_X_`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1084
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1135
msgid ""
"Adds a dependency on luajit runtime. A specific version _X_ can be used. "
"Possible versions are `luajit`, `luajit-devel`, `luajit-openresty`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1086
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1137
msgid ""
"After including [.filename]#bsd.port.options.mk# or [.filename]#bsd.port.pre."
"mk# the port can inspect these variables:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1087
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1138
#, no-wrap
msgid "`LUAJIT_VER`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1089
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1140
msgid "The selected luajit version"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1089
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1140
#, no-wrap
msgid "`LUAJIT_INCDIR`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1091
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1142
msgid "The path to luajit's header files"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1091
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1142
#, no-wrap
msgid "`LUAJIT_LUAVER`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1093
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1144
msgid "Which luajit spec version is selected (2.0 for luajit, else 2.1)"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1097
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1148
#, no-wrap
msgid "`lxqt`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1104
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1155
msgid ""
"Handle dependencies for the LXQt Desktop Environment. Use `USE_LXQT` to "
"select the components needed for the port. See crossref:special[using-lxqt,"
"Using LXQt] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1106
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1157
#, no-wrap
msgid "`magick`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1109
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1160
msgid "Possible arguments: (none), `_X_`, `build`, `nox11`, `run`, `test`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1114
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1165
msgid ""
"Add a library dependency on `ImageMagick`. A specific version _X_ can be "
"used. Possible versions are `6` and `7` (default). `nox11` indicates that "
"the `-nox11` version of the port is required. `build`, `run` and `test` add "
"build-, run-time and test dependencies on ImageMagick."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1116
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1167
#, no-wrap
msgid "`makeinfo`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1121
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1172
msgid ""
"Add a build-time dependency on `makeinfo` if it is not present in the base "
"system."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1123
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1174
#, no-wrap
msgid "`makeself`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1128
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1179
msgid ""
"Indicates that the distribution files are makeself archives and sets the "
"appropriate dependencies."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1130
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1181
#, no-wrap
msgid "`mate`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1137
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1188
msgid ""
"Provides an easy way to depend on MATE components. The components should be "
"listed in `USE_MATE`. The available components are:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1139
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1190
msgid "`autogen`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1140
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1191
msgid "`caja`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1141
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1192
msgid "`common`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1142
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1193
msgid "`controlcenter`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1143
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1194
msgid "`desktop`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1144
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1195
msgid "`dialogs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1145
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1196
msgid "`docutils`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1146
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1197
msgid "`icontheme`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1149
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1200
msgid "`libmatekbd`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1150
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1201
msgid "`libmateweather`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1151
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1202
msgid "`marco`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1152
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1203
msgid "`menus`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1153
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1204
msgid "`notificationdaemon`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1154
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1205
msgid "`panel`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1155
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1206
msgid "`pluma`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1156
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1207
msgid "`polkit`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1157
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1208
msgid "`session`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1158
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1209
msgid "`settingsdaemon`"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1166
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1217
#, no-wrap
msgid ""
"USES=\t\tmate\n"
"USE_MATE=\tmenus:build intlhack\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1169
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1220
#, no-wrap
msgid "`meson`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1175
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1226
msgid ""
"Provide support for Meson based projects. For more information see crossref:"
"special[using-meson,Using `meson`]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1177
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1228
#, no-wrap
msgid "`metaport`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1182
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1233
msgid ""
"Sets the following variables to make it easier to create a metaport: "
"`MASTER_SITES`, `DISTFILES`, `EXTRACT_ONLY`, `NO_BUILD`, `NO_INSTALL`, "
"`NO_MTREE`, `NO_ARCH`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1184
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1235
#, no-wrap
msgid "`minizip`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1187
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1238
msgid "Possible arguments: (none), `ng`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1189
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1240
msgid ""
"Adds a library dependency on package:archivers/minizip[] or package:"
"archivers/minizip-ng[] respectively."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1191
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1242
#, no-wrap
msgid "`mysql`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1194
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1245
msgid ""
"Possible arguments: (none), `_version_`, `client` (default), `server`, "
"`embedded`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1203
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1254
msgid ""
"Provide support for MySQL If no version is given, try to find the current "
"installed version. Fall back to the default version, MySQL-5.6. The "
"possible versions are `55`, `55m`, `55p`, `56`, `56p`, `56w`, `57`, `57p`, "
"`80`, `100m`, `101m`, and `102m`. The `m` and `p` suffixes are for the "
"MariaDB and Percona variants of MySQL. `server` and `embedded` add a build- "
"and run-time dependency on the MySQL server. When using `server` or "
"`embedded`, add `client` to also add a dependency on [."
"filename]#libmysqlclient.so#. A port can set `IGNORE_WITH_MYSQL` if some "
"versions are not supported."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1205
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1256
msgid "The framework sets `MYSQL_VER` to the detected MySQL version."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1207
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1258
#, no-wrap
msgid "`mono`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1210
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1261
msgid "Possible arguments: (none), `nuget`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1212
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1263
msgid ""
"Adds a dependency on the Mono (currently only C#) framework by setting the "
"appropriate dependencies."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1216
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1267
msgid ""
"Specify `nuget` when the port uses nuget packages. `NUGET_DEPENDS` needs to "
"be set with the names and versions of the nuget packages in the format "
"`_name_=_version_`. An optional package origin can be added using "
"`_name_=_version_:_origin_`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1218
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1269
msgid ""
"The helper target, `buildnuget`, will output the content of the "
"`NUGET_DEPENDS` based on the provided [.filename]#packages.config#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1220
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1271
#, no-wrap
msgid "`motif`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1229
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1280
msgid ""
"Uses package:x11-toolkits/open-motif[] as a library dependency. End users "
"can set `WANT_LESSTIF` in [.filename]#make.conf# to use package:x11-toolkits/"
"lesstif[] as dependency instead of package:x11-toolkits/open-motif[]. "
"Similarly setting `WANT_OPEN_MOTIF_DEVEL` in [.filename]#make.conf# will add "
"a dependency on package:x11-toolkits/open-motif-devel[]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1231
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1282
#, no-wrap
msgid "`ncurses`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1234
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1285
msgid "Possible arguments: (none), `base`, `port`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1236
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1287
msgid "Uses ncurses, and causes some useful variables to be set."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1238
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1289
#, no-wrap
msgid "`ninja`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1243
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1294
msgid "Uses ninja to build the port."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1245
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1296
#, no-wrap
msgid "`nodejs`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1249
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1300
#, no-wrap
msgid ""
"Possible arguments: (none), `build`, `run`, `current`, `lts`, `10`, `14`, `16`,\n"
" `17`.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1252
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1303
msgid ""
"Uses nodejs. Adds a dependency on package:www/node*[]. If a supported "
"version is specified then `run` and/or `build` must be specified too."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1254
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1305
#, no-wrap
msgid "`objc`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1259
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1310
msgid ""
"Add objective C dependencies (compiler, runtime library) if the base system "
"does not support it."
msgstr ""
+#. type: Title ==
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1312
+#, no-wrap
+msgid "`octave`"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1315
+msgid "Possible arguments: (none), env"
+msgstr ""
+
+#. type: Plain text
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1318
+msgid ""
+"Uses package:math/octave[]. `env` loads only one `OCTAVE_VERSION` "
+"environmental variable."
+msgstr ""
+
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1264
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1323
msgid "Possible arguments: `al`, `soft` (default), `si`, `alut`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1269
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1328
msgid ""
"Uses OpenAL. The backend can be specified, with the software implementation "
"as the default. The user can specify a preferred backend with "
"`WANT_OPENAL`. Valid values for this knob are `soft` (default) and `si`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1271
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1330
#, no-wrap
msgid "`pathfix`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1278
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1337
msgid ""
"Look for [.filename]#Makefile.in# and [.filename]#configure# in "
"`PATHFIX_WRKSRC` (defaults to `WRKSRC`) and fix common paths to make sure "
"they respect the FreeBSD hierarchy. For example, it fixes the installation "
"directory of `pkgconfig`'s [.filename]#.pc# files to [.filename]#${PREFIX}/"
"libdata/pkgconfig#. If the port uses `USES=autoreconf`, [."
"filename]#Makefile.am# will be added to `PATHFIX_MAKEFILEIN` automatically."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1281
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1340
msgid ""
"If the port <<uses-cmake,`USES=cmake`>> it will look for [."
"filename]#CMakeLists.txt# in `PATHFIX_WRKSRC`. If needed, that default "
"filename can be changed with `PATHFIX_CMAKELISTSTXT`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1283
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1342
#, no-wrap
msgid "`pear`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1286
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1345
msgid "Possible arguments: `env`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1291
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1350
msgid ""
"Adds a dependency on package:devel/pear[]. It will setup default behavior "
"for software using the PHP Extension and Application Repository. Using the "
"`env` arguments only sets up the PEAR environment variables. See crossref:"
"special[php-pear,PEAR Modules] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1293
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1352
#, no-wrap
msgid "`perl5`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1298
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1357
msgid "Depends on Perl. The configuration is done using `USE_PERL5`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1300
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1359
msgid ""
"`USE_PERL5` can contain the phases in which to use Perl, can be `extract`, "
"`patch`, `build`, `run`, or `test`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1303
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1362
msgid ""
"`USE_PERL5` can also contain `configure`, `modbuild`, or `modbuildtiny` when "
"[.filename]#Makefile.PL#, [.filename]#Build.PL#, or Module::Build::Tiny's "
"flavor of [.filename]#Build.PL# is required."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1306
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1365
msgid ""
"`USE_PERL5` defaults to `build run`. When using `configure`, `modbuild`, or "
"`modbuildtiny`, `build` and `run` are implied."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1308
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1367
msgid "See crossref:special[using-perl,Using Perl] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1310
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1369
#, no-wrap
msgid "`pgsql`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1313
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1372
msgid "Possible arguments: (none), `_X.Y_`, `_X.Y_+`, `_X.Y_-`, `_X.Y_-_Z.A_`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1317
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1376
msgid ""
"Provide support for PostgreSQL. Port maintainer can set version required. "
"Minimum and maximum versions or a range can be specified; for example, `9.0-"
"`, `8.4+`, `8.4-9.2.`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1322
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1381
msgid ""
"By default, the added dependency will be the client, but if the port "
"requires additional components, this can be done using "
"`WANT_PGSQL=_component[:target]_`; for example, `WANT_PGSQL=server:configure "
"pltcl plperl`. The available components are:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1324
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1383
msgid "`client`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1325
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1384
msgid "`contrib`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1326
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1385
msgid "`docs`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1327
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1386
msgid "`pgtcl`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1328
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1387
msgid "`plperl`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1329
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1388
msgid "`plpython`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1330
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1389
msgid "`pltcl`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1331
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1390
msgid "`server`"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1333
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1392
#, no-wrap
msgid "`php`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1336
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1395
msgid ""
"Possible arguments: (none), `phpize`, `ext`, `zend`, `build`, `cli`, `cgi`, "
"`mod`, `web`, `embed`, `pecl`, `flavors`, `noflavors`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1339
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1398
msgid ""
"Provide support for PHP. Add a runtime dependency on the default PHP "
-"version, package:lang/php56[]."
+"version, package:lang/php81[]."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1340
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1399
#, no-wrap
msgid "`phpize`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1343
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1402
msgid "Use to build a PHP extension. Enables flavors."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1344
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1403
#, no-wrap
msgid "`ext`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1347
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1406
msgid "Use to build, install and register a PHP extension. Enables flavors."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1348
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1407
#, no-wrap
msgid "`zend`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1351
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1410
msgid "Use to build, install and register a Zend extension. Enables flavors."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1352
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1411
#, no-wrap
msgid "`build`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1354
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1413
msgid "Set PHP also as a build-time dependency."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1355
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1414
#, no-wrap
msgid "`cli`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1357
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1416
msgid "Needs the CLI version of PHP."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1358
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1417
#, no-wrap
msgid "`cgi`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1360
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1419
msgid "Needs the CGI version of PHP."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1361
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1420
#, no-wrap
msgid "`mod`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1363
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1422
msgid "Needs the Apache module for PHP."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1364
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1423
#, no-wrap
msgid "`web`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1366
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1425
msgid "Needs the Apache module or the CGI version of PHP."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1367
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1426
#, no-wrap
msgid "`embed`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1369
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1428
msgid "Needs the embedded library version of PHP."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1370
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1429
#, no-wrap
msgid "`pecl`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1373
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1432
msgid ""
"Provide defaults for fetching PHP extensions from the PECL repository. "
"Enables flavors."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1374
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1433
#, no-wrap
msgid "`flavors`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1377
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1436
msgid ""
"Enable automatic crossref:flavors[flavors-auto-php,PHP flavors] generation. "
"Flavors will be generated for all PHP versions, except the ones present in "
"<<uses-php-ignore,`IGNORE_WITH_PHP`>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1378
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1437
#, no-wrap
msgid "`noflavors`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1381
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1440
msgid ""
"Disable automatic PHP flavors generation. _Must only_ be used with "
"extensions provided by PHP itself."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1383
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1442
msgid ""
"Variables are used to specify which PHP modules are required, as well as "
"which version of PHP are supported."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1384
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1443
#, no-wrap
msgid "`USE_PHP`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1388
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1447
msgid ""
"The list of required PHP extensions at run-time. Add `:build` to the "
"extension name to add a build-time dependency. Example: `pcre xml:build "
"gettext`"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1390
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1449
#, no-wrap
msgid "`IGNORE_WITH_PHP`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1393
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1452
msgid ""
"The port does not work with PHP of the given version. For possible values "
"look at the content of `_ALL_PHP_VERSIONS` in [.filename]#Mk/Uses/php.mk#."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1395
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1454
msgid ""
"When building a PHP or Zend extension with `:ext` or `:zend`, these "
"variables can be set:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1396
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1455
#, no-wrap
msgid "`PHP_MODNAME`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1399
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1458
msgid "The name of the PHP or Zend extension. Default value is `${PORTNAME}`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1400
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1459
#, no-wrap
msgid "`PHP_HEADER_DIRS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1403
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1462
msgid ""
"A list of subdirectories from which to install header files. The framework "
"will always install the header files that are present in the same directory "
"as the extension."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1404
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1463
#, no-wrap
msgid "`PHP_MOD_PRIO`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1407
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1466
msgid ""
"The priority at which to load the extension. It is a number between `00` "
"and `99`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1412
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1471
msgid ""
"For extensions that do not depend on any extension, the priority is "
"automatically set to `20`, for extensions that depend on another extension, "
"the priority is automatically set to `30`. Some extensions may need to be "
"loaded before every other extension, for example package:www/php56-"
"opcache[]. Some may need to be loaded after an extension with a priority of "
"`30`. In that case, add `PHP_MOD_PRIO=_XX_` in the port's Makefile. For "
"example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1418
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1477
#, no-wrap
msgid ""
"USES=\t\tphp:ext\n"
"USE_PHP=\twddx\n"
"PHP_MOD_PRIO=\t40\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1421
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1480
msgid ""
"These variables are available to use in `PKGNAMEPREFIX` or `PKGNAMESUFFIX`:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1422
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1481
#, no-wrap
msgid "`PHP_PKGNAMEPREFIX`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1425
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1484
msgid ""
"Contains `php_XY_-` where _XY_ is the current flavor's PHP version. Use "
"with PHP extensions and modules."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1426
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1485
#, no-wrap
msgid "`PHP_PKGNAMESUFFIX`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1429
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1488
msgid ""
"Contains `-php_XY_` where _XY_ is the current flavor's PHP version. Use "
"with PHP applications."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1430
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1489
#, no-wrap
msgid "`PECL_PKGNAMEPREFIX`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1433
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1492
msgid ""
"Contains `php_XY_-pecl-` where _XY_ is the current flavor's PHP version. "
"Use with PECL modules."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1438
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1497
msgid ""
"With flavors, all PHP extensions, PECL extensions, PEAR modules _must have_ "
"a different package name, so they must all use one of these three variables "
"in their `PKGNAMEPREFIX` or `PKGNAMESUFFIX`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1441
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1500
#, no-wrap
msgid "`pkgconfig`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1444
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1503
msgid "Possible arguments: (none), `build` (default), `run`, `both`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1448
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1507
msgid ""
"Uses package:devel/pkgconf[]. With no arguments or with the `build` "
"argument, it implies `pkg-config` as a build-time dependency. `run` implies "
"a run-time dependency and `both` implies both run-time and build-time "
"dependencies."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1450
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1509
#, no-wrap
msgid "`pure`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1453
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1512
msgid "Possible arguments: (none), `ffi`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1457
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1516
msgid ""
"Uses package:lang/pure[]. Largely used for building related pure ports. "
"With the `ffi` argument, it implies package:devel/pure-ffi[] as a run-time "
"dependency."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1459
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1518
#, no-wrap
msgid "`pyqt`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1462
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1521
msgid "Possible arguments: (none), `4`, `5`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1466
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1525
msgid ""
"Uses PyQt. If the port is part of PyQT itself, set `PYQT_DIST`. Use "
"`USE_PYQT` to select the components the port needs. The available "
"components are:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1468
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1527
msgid "`core`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1469
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1528
msgid "`dbus`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1470
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1529
msgid "`dbussupport`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1471
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1530
msgid "`demo`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1472
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1531
msgid "`designer`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1473
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1532
msgid "`designerplugin`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1474
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1533
msgid "`doc`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1475
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1534
msgid "`gui`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1476
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1535
msgid "`multimedia`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1477
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1536
msgid "`network`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1479
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1538
msgid "`qscintilla2`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1480
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1539
msgid "`sip`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1481
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1540
msgid "`sql`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1482
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1541
msgid "`svg`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1483
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1542
msgid "`test`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1484
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1543
msgid "`webkit`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1485
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1544
msgid "`xml`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1486
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1545
msgid "`xmlpatterns`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1488
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1547
msgid "These components are only available with PyQT4:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1490
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1549
msgid "`assistant`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1491
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1550
msgid "`declarative`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1492
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1551
msgid "`help`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1493
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1552
msgid "`phonon`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1494
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1553
msgid "`script`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1495
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1554
msgid "`scripttools`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1497
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1556
msgid "These components are only available with PyQT5:"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1499
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1558
msgid "`multimediawidgets`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1500
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1559
msgid "`printsupport`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1501
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1560
msgid "`qml`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1502
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1561
msgid "`serialport`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1503
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1562
msgid "`webkitwidgets`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1504
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1563
msgid "`widgets`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1506
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1565
msgid ""
"The default dependency for each component is build- and run-time, to select "
"only build or run, add `_build` or `_run` to the component name. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1511
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1570
#, no-wrap
msgid ""
"USES=\t\tpyqt\n"
"USE_PYQT=\tcore doc_build designer_run\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1514
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1573
#, no-wrap
msgid "`pytest`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1517
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1576
msgid "Possible arguments: (none), 4"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1524
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1583
msgid ""
"Introduces a new dependency on package:devel/pytest[]. It defines a `do-"
"test` target which will run the tests properly. Use the argument to depend "
"on a specific package:devel/pytest[] version. For ports using package:devel/"
"pytest[] consider using this instead of a specific `do-test` target. The "
"framework exposes the following variables to the port:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1525
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1584
#, no-wrap
msgid "`PYTEST_ARGS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1527
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1586
msgid "Additional arguments to pytest (defaults to empty)."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1528
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1587
#, no-wrap
msgid "`PYTEST_IGNORED_TESTS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1531
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1590
msgid ""
"lists of `pytest -k` patterns of tests to ignore (defaults to empty). For "
"tests which are not expected to pass, such as ones requiring a database "
"access."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1532
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1591
#, no-wrap
msgid "`PYTEST_BROKEN_TESTS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1535
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1594
msgid ""
"lists of `pytest -k` patterns of tests to ignore (defaults to empty). For "
"broken tests which require fixing."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1537
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1596
msgid "In addition the following variables may be set by the user:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1538
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1597
#, no-wrap
msgid "`PYTEST_ENABLE_IGNORED_TESTS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1540
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1599
msgid "Enable tests which are otherwise ignored by `PYTEST_IGNORED_TESTS`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1541
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1600
#, no-wrap
msgid "`PYTEST_ENABLE_BROKEN_TESTS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1543
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1602
msgid "Enable tests which are otherwise ignored by `PYTEST_BROKEN_TESTS`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1544
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1603
#, no-wrap
msgid "`PYTEST_ENABLE_ALL_TESTS`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1547
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1606
msgid ""
"Enable tests which are otherwise ignored by `PYTEST_IGNORED_TESTS` and "
"`PYTEST_BROKEN_TESTS`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1550
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1609
#, no-wrap
msgid "`python`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1553
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1612
msgid ""
"Possible arguments: (none), `_X.Y_`, `_X.Y+_`, `_-X.Y_`, `_X.Y-Z.A_`, "
"`patch`, `build`, `run`, `test`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1558
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1617
msgid ""
"Uses Python. A supported version or version range can be specified. If "
"Python is only needed at build time, run time or for the tests, it can be "
"set as a build, run or test dependency with `build`, `run`, or `test`. If "
"Python is also needed during the patch phase, use `patch`. See crossref:"
"special[using-python, Using Python] for more information."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1561
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1620
msgid ""
"`PYTHON_NO_DEPENDS=yes` can be used when the variables exported by the "
"framework are needed but a dependency on Python is not. It can happen when "
"using with <<uses-shebangfix,`USES=shebangfix`>>, and the goal is only to "
"fix the shebangs but not add a dependency on Python."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1563
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1622
#, no-wrap
msgid "`qmail`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1566
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1625
msgid "Possible arguments: (none), `build`, `run`, `both`, `vars`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1571
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1630
msgid ""
"Uses package:mail/qmail[]. With the `build` argument, it implies `qmail` as "
"a build-time dependency. `run` implies a run-time dependency. Using no "
"argument or the `both` argument implies both run-time and build-time "
"dependencies. `vars` will only set QMAIL variables for the port to use."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1573
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1632
#, no-wrap
msgid "`qmake`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1576
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1635
msgid ""
"Possible arguments: (none), `norecursive`, `outsource`, `no_env`, "
"`no_configure`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1578
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1637
msgid ""
"Uses QMake for configuring. For more information see crossref:special[using-"
"qmake,Using `qmake`]."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1583
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1642
msgid "Possible arguments: `5`, `6`, `no_env`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1587
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1646
msgid ""
"Add dependency on Qt components. `no_env` is passed directly to `USES= "
"qmake`. See crossref:special[using-qt,Using Qt] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1589
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1648
#, no-wrap
msgid "`qt-dist`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1592
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1651
#, no-wrap
msgid "Possible arguments: (none) or `5` and (none) or `6` and (none) or one of `3d`, `5compat`, `base`, `charts`, `connectivity`, `datavis3d`, `declarative`, `doc` `languageserver`, `gamepad`, `graphicaleffects`, `imageformats`, `locat ion`, `lottie`, `multimedia`, `networkauth`, `positioning`, `quick3d`, `quickcontrols2`, `quickcontrols`, `quicktimeline`, `remoteobjects`, `script`, `scxml `, `sensors`, `serialbus`, `serialport`, `shadertools`, `speech`, `svg`, `tools`, `translations`, `virtualkeyboard`, `wayland`, `webchannel`, `webengine`, `webglplugin`, `websockets`, `webview`, `x11extras`, `xmlpatterns`.\n"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1595
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1654
msgid ""
"Provides support for building Qt 5 and Qt 6 components. It takes care of "
"setting up the appropriate configuration environment for the port to build."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1597
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1656
#, no-wrap
msgid "Building Qt 5 Components"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1601
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1660
msgid ""
"The port is Qt 5's `networkauth` component, which is part of the "
"`networkauth` distribution file."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1606
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1665
#, no-wrap
msgid ""
"PORTNAME=\tnetworkauth\n"
"DISTVERSION=\t${QT5_VERSION}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1608
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1667
#, no-wrap
msgid "USES=\t\tqt-dist:5\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1614
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1673
#, no-wrap
msgid "Building Qt 6 Components"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1618
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1677
msgid ""
"The port is Qt 6's `websockets` component, which is part of the `websockets` "
"distribution file."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1623
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1682
#, no-wrap
msgid ""
"PORTNAME= websockets\n"
"PORTVERSION= ${QT6_VERSION}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1625
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1684
#, no-wrap
msgid "USES= qt-dist:6\n"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1630
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1689
msgid ""
"If `PORTNAME` does not match the component name, it can be passed as an "
"argument to `qt-dist`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1632
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1691
#, no-wrap
msgid "Building Qt 5 Components with Different Names"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1636
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1695
msgid ""
"The port is Qt 5's `gui` component, which is part of the `base` distribution "
"file."
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1641
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1700
#, no-wrap
msgid ""
"PORTNAME=\tgui\n"
"DISTVERSION=\t${QT5_VERSION}\n"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1643
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1702
#, no-wrap
msgid "USES=\t\tqt-dist:5,base\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1648
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1707
#, no-wrap
msgid "`readline`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1651
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1710
msgid "Possible arguments: (none), `port`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1654
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1713
msgid ""
"Uses readline as a library dependency, and sets `CPPFLAGS` and `LDFLAGS` as "
"necessary. If the `port` argument is used or if readline is not present in "
"the base system, add a dependency on package:devel/readline[]"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1656
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1715
#, no-wrap
msgid "`samba`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1659
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1718
msgid "Possible arguments: `build`, `env`, `lib`, `run`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1664
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1723
msgid ""
"Handle dependency on Samba. `env` will not add any dependency and only set "
"up the variables. `build` and `run` will add build-time and run-time "
"dependency on [.filename]#smbd#. `lib` will add a dependency on [."
"filename]#libsmbclient.so#. The variables that are exported are:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1665
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1724
#, no-wrap
msgid "`SAMBAPORT`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1667
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1726
msgid "The origin of the default Samba port."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1668
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1727
#, no-wrap
msgid "`SAMBAINCLUDES`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1670
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1729
msgid "The location of the Samba header files."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1671
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1730
#, no-wrap
msgid "`SAMBALIBS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1673
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1732
msgid "The directory where the Samba shared libraries are available."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1675
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1734
#, no-wrap
msgid "`scons`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1681
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1740
msgid ""
"Provide support for the use of package:devel/scons[]. See crossref:"
"special[using-scons,Using `scons`] for more information."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1683
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1742
#, no-wrap
msgid "`shared-mime-info`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1690
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1749
msgid ""
"Uses update-mime-database from package:misc/shared-mime-info[]. This uses "
"will automatically add a post-install step in such a way that the port "
"itself still can specify there own post-install step if needed. It also add "
"an crossref:plist[plist-keywords-shared-mime-info,`@shared-mime-info`] entry "
"to the plist."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1692
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1751
#, no-wrap
msgid "`shebangfix`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1698
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1757
msgid ""
"A lot of software uses incorrect locations for script interpreters, most "
"notably [.filename]#/usr/bin/perl# and [.filename]#/bin/bash#. The "
"shebangfix macro fixes shebang lines in scripts listed in `SHEBANG_REGEX`, "
"`SHEBANG_GLOB`, or `SHEBANG_FILES`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1699
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1758
#, no-wrap
msgid "`SHEBANG_REGEX`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1702
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1761
msgid ""
"Contains _one_ extended regular expressions, and is used with the `-iregex` "
"argument of man:find[1]. See <<uses-shebangfix-ex-regex>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1703
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1762
#, no-wrap
msgid "`SHEBANG_GLOB`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1706
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1765
msgid ""
"Contains a list of patterns used with the `-name` argument of man:find[1]. "
"See <<uses-shebangfix-ex-glob>>."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1707
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1766
#, no-wrap
msgid "`SHEBANG_FILES`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1712
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1771
msgid ""
"Contains a list of files or man:sh[1] globs. The shebangfix macro is run "
-"from `${WRKSRC}`, so `SHEBANG_FILES` can contain paths that are relative to `"
-"${WRKSRC}`. It can also deal with absolute paths if files outside of `"
-"${WRKSRC}` require patching. See <<uses-shebangfix-ex-files>>."
+"from `${WRKSRC}`, so `SHEBANG_FILES` can contain paths that are relative to "
+"`${WRKSRC}`. It can also deal with absolute paths if files outside of "
+"`${WRKSRC}` require patching. See <<uses-shebangfix-ex-files>>."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1714
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1773
msgid ""
"Currently Bash, Java, Ksh, Lua, Perl, PHP, Python, Ruby, Tcl, and Tk are "
"supported by default."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1716
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1775
msgid "There are three configuration variables:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1717
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1776
#, no-wrap
msgid "`SHEBANG_LANG`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1719
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1778
msgid "The list of supported interpreters."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1720
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1779
#, no-wrap
msgid "`_interp__CMD`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1723
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1782
msgid ""
-"The path to the command interpreter on FreeBSD. The default value is `"
-"${LOCALBASE}/bin/_interp_`."
+"The path to the command interpreter on FreeBSD. The default value is "
+"`${LOCALBASE}/bin/_interp_`."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1724
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1783
#, no-wrap
msgid "`_interp__OLD_CMD`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1728
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1787
msgid ""
"The list of wrong invocations of interpreters. These are typically obsolete "
"paths, or paths used on other operating systems that are incorrect on "
"FreeBSD. They will be replaced by the correct path in `_interp__CMD`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1732
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1791
msgid ""
-"These will _always_ be part of `_interp__OLD_CMD`: `\"/usr/bin/env _interp_"
-"\" /bin/_interp_ /usr/bin/_interp_ /usr/local/bin/_interp_`."
+"These will _always_ be part of `_interp__OLD_CMD`: `\"/usr/bin/env "
+"_interp_\" /bin/_interp_ /usr/bin/_interp_ /usr/local/bin/_interp_`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1739
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1798
msgid ""
"`_interp__OLD_CMD` contain multiple values. Any entry with spaces must be "
"quoted. See <<uses-shebangfix-ex-ksh>>."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1745
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1804
msgid ""
"The fixing of shebangs is done during the `patch` phase. If scripts are "
"created with incorrect shebangs during the `build` phase, the build process "
"(for example, the [.filename]#configure# script, or the [."
"filename]#Makefiles#) must be patched or given the right path (for example, "
"with `CONFIGURE_ENV`, `CONFIGURE_ARGS`, `MAKE_ENV`, or `MAKE_ARGS`) to "
"generate the right shebangs."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1747
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1806
msgid ""
"Correct paths for supported interpreters are available in `_interp__CMD`."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1752
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1811
msgid ""
"When used with <<uses-python,`USES=python`>>, and the aim is only to fix the "
"shebangs but a dependency on Python itself is not wanted, use "
"`PYTHON_NO_DEPENDS=yes`."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1755
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1814
#, no-wrap
msgid "Adding Another Interpreter to `USES=shebangfix`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1760
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1819
msgid "To add another interpreter, set `SHEBANG_LANG`. For example:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1764
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1823
#, no-wrap
msgid "SHEBANG_LANG=\tlua\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1769
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1828
#, no-wrap
msgid "Specifying all the Paths When Adding an Interpreter to `USES=shebangfix`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1773
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1832
msgid ""
"If it was not already defined, and there were no default values for "
"`_interp__OLD_CMD` and `_interp__CMD` the Ksh entry could be defined as:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1779
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1838
#, no-wrap
msgid ""
"SHEBANG_LANG=\tksh\n"
"ksh_OLD_CMD=\t\"/usr/bin/env ksh\" /bin/ksh /usr/bin/ksh\n"
"ksh_CMD=\t${LOCALBASE}/bin/ksh\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1784
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1843
#, no-wrap
msgid "Adding a Strange Location for an Interpreter"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1790
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1849
msgid ""
"Some software uses strange locations for an interpreter. For example, an "
"application might expect Python to be located in [.filename]#/opt/bin/"
"python2.7#. The strange path to be replaced can be declared in the port [."
"filename]#Makefile#:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1794
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1853
#, no-wrap
msgid "python_OLD_CMD=\t/opt/bin/python2.7\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1799
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1858
#, no-wrap
msgid "`USES=shebangfix` with `SHEBANG_REGEX`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1803
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1862
msgid ""
"To fix all the files in `${WRKSRC}/scripts` ending in [.filename]#.pl#, [."
"filename]#.sh#, or [.filename]#.cgi# do:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1808
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1867
#, no-wrap
msgid ""
"USES=\tshebangfix\n"
"SHEBANG_REGEX=\t./scripts/.*\\.(sh|pl|cgi)\n"
msgstr ""
#. type: delimited block = 6
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1814
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1873
msgid ""
"`SHEBANG_REGEX` is used by running `find -E`, which uses modern regular "
"expressions also known as extended regular expressions. See man:"
"re_format[7] for more information."
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1819
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1878
#, no-wrap
msgid "`USES=shebangfix` with `SHEBANG_GLOB`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1823
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1882
msgid ""
"To fix all the files in `${WRKSRC}` ending in [.filename]#.pl# or [."
"filename]#.sh#, do:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1828
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1887
#, no-wrap
msgid ""
"USES=\tshebangfix\n"
"SHEBANG_GLOB=\t*.sh *.pl\n"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1833
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1892
#, no-wrap
msgid "`USES=shebangfix` with `SHEBANG_FILES`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1837
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1896
msgid ""
"To fix the files [.filename]#script/foobar.pl# and [.filename]#script/*.sh# "
"in `${WRKSRC}`, do:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1842
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1901
#, no-wrap
msgid ""
"USES=\tshebangfix\n"
"SHEBANG_FILES=\tscripts/foobar.pl scripts/*.sh\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1847
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1906
#, no-wrap
msgid "`sqlite`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1850
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1909
msgid "Possible arguments: (none), `2`, `3`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1853
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1912
msgid ""
"Add a dependency on SQLite. The default version used is 3, but version 2 is "
"also possible using the `:2` modifier."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1855
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1914
#, no-wrap
msgid "`ssl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1858
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1917
msgid "Possible arguments: (none), `build`, `run`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1862
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1921
msgid ""
"Provide support for OpenSSL. A build- or run-time only dependency can be "
"specified using `build` or `run`. These variables are available for the "
"port's use, they are also added to `MAKE_ENV`:"
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1863
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1922
#, no-wrap
msgid "`OPENSSLBASE`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1865
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1924
msgid "Path to the OpenSSL installation base."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1866
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1925
#, no-wrap
msgid "`OPENSSLDIR`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1868
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1927
msgid "Path to OpenSSL's configuration files."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1869
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1928
#, no-wrap
msgid "`OPENSSLLIB`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1871
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1930
msgid "Path to the OpenSSL libraries."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1872
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1931
#, no-wrap
msgid "`OPENSSLINC`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1874
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1933
msgid "Path to the OpenSSL includes."
msgstr ""
#. type: Labeled list
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1875
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1934
#, no-wrap
msgid "`OPENSSLRPATH`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1877
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1936
msgid ""
"If defined, the path the linker needs to use to find the OpenSSL libraries."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1881
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1940
msgid ""
"If a port does not build with an OpenSSL flavor, set the `BROKEN_SSL` "
"variable, and possibly the `BROKEN_SSL_REASON__flavor_`:"
msgstr ""
#. type: delimited block . 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1886
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1945
#, no-wrap
msgid ""
"BROKEN_SSL=\tlibressl\n"
"BROKEN_SSL_REASON_libressl=\tneeds features only available in OpenSSL\n"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1891
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1950
#, no-wrap
msgid "`tar`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1895
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1954
msgid ""
"Possible arguments: (none), `Z`, `bz2`, `bzip2`, `lzma`, `tbz`, `tbz2`, "
"`tgz`, `txz`, `xz`, `zst`, `zstd`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1898
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1957
msgid ""
"Set `EXTRACT_SUFX` to `.tar`, `.tar.Z`, `.tar.bz2`, `.tar.bz2`, `.tar.lzma`, "
"`.tbz`, `.tbz2`, `.tgz`, `.txz`, `.tar.xz`, `.tar.zst` or `.tar.zstd` "
"respectively."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1900
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1959
#, no-wrap
msgid "`tcl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1903
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1962
msgid "Possible arguments: _version_, `wrapper`, `build`, `run`, `tea`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1910
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1969
msgid ""
"Add a dependency on Tcl. A specific version can be requested using "
"_version_. The version can be empty, one or more exact version numbers "
"(currently `84`, `85`, or `86`), or a minimal version number (currently "
"`84+`, `85+` or `86+`). To only request a non version specific wrapper, use "
"`wrapper`. A build- or run-time only dependency can be specified using "
"`build` or `run`. To build the port using the Tcl Extension Architecture, "
"use `tea`. After including [.filename]#bsd.port.pre.mk# the port can "
"inspect the results using these variables:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1912
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1971
msgid "`TCL_VER`: chosen major.minor version of Tcl"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1913
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1972
msgid "`TCLSH`: full path of the Tcl interpreter"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1914
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1973
msgid "`TCL_LIBDIR`: path of the Tcl libraries"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1915
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1974
msgid "`TCL_INCLUDEDIR`: path of the Tcl C header files"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1916
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1975
msgid "`TK_VER`: chosen major.minor version of Tk"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1917
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1976
msgid "`WISH`: full path of the Tk interpreter"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1918
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1977
msgid "`TK_LIBDIR`: path of the Tk libraries"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1919
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1978
msgid "`TK_INCLUDEDIR`: path of the Tk C header files"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1921
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1980
#, no-wrap
msgid "`terminfo`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1927
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1986
msgid ""
"Adds crossref:plist[plist-keywords-terminfo,`@terminfo`] to the [."
"filename]#plist#. Use when the port installs [.filename]#*.terminfo# files "
"in [.filename]#${PREFIX}/share/misc#."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1929
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1988
#, no-wrap
msgid "`tk`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1932
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1991
msgid "Same as arguments for `tcl`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1935
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1994
msgid ""
"Small wrapper when using both Tcl and Tk. The same variables are returned "
"as when using Tcl."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1937
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1996
#, no-wrap
msgid "`uidfix`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1943
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2002
msgid ""
"Changes some default behavior (mostly variables) of the build system to "
"allow installing this port as a normal user. Try this in the port before "
"using <<uses-fakeroot,USES=fakeroot>> or patching."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1945
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2004
#, no-wrap
msgid "`uniquefiles`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1948
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2007
msgid "Possible arguments: (none), `dirs`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1952
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2011
msgid ""
"Make files or directories 'unique', by adding a prefix or suffix. If the "
"`dirs` argument is used, the port needs a prefix (and only a prefix) based "
"on `UNIQUE_PREFIX` for standard directories `DOCSDIR`, `EXAMPLESDIR`, "
"`DATADIR`, `WWWDIR`, `ETCDIR`. These variables are available for ports:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1954
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2013
msgid ""
-"`UNIQUE_PREFIX`: The prefix to be used for directories and files. Default: `"
-"${PKGNAMEPREFIX}`."
+"`UNIQUE_PREFIX`: The prefix to be used for directories and files. Default: "
+"`${PKGNAMEPREFIX}`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1955
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2014
msgid ""
"`UNIQUE_PREFIX_FILES`: A list of files that need to be prefixed. Default: "
"empty."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1956
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2015
msgid ""
"`UNIQUE_SUFFIX`: The suffix to be used for files. Default: `${PKGNAMESUFFIX}"
"`."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1957
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2016
msgid ""
"`UNIQUE_SUFFIX_FILES`: A list of files that need to be suffixed. Default: "
"empty."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1959
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2018
#, no-wrap
msgid "`vala`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1962
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2021
msgid "Possible arguments: `build`, `lib`, `no_depend`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1965
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2024
msgid ""
"Adds build or library dependencies on package:lang/vala[]. The `no_depend` "
"argument is reserved for package:lang/vala[] itself."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1967
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2026
#, no-wrap
msgid "`varnish`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1970
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2029
msgid "Possible arguments: `4` (default), `6`, `7`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1973
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2032
msgid ""
"Handle dependencies on Varnish Cache. Adds a dependency on package:www/"
"varnish*[]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1975
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2034
#, no-wrap
msgid "`webplugin`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1978
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2037
msgid "Possible arguments: (none), `ARGS`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1981
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2040
msgid ""
"Automatically create and remove symbolic links for each application that "
"supports the webplugin framework. `ARGS` can be one of:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1983
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2042
msgid "`gecko`: support plug-ins based on Gecko"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1984
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2043
msgid "`native`: support plug-ins for Gecko, Opera, and WebKit-GTK"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1985
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2044
msgid "`linux`: support Linux plug-ins"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1986
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2045
msgid "`all` (default, implicit): support all plug-in types"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1987
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2046
msgid "(individual entries): support only the browsers listed"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1989
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2048
msgid "These variables can be adjusted:"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1991
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2050
msgid ""
"`WEBPLUGIN_FILES`: No default, must be set manually. The plug-in files to "
"install."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1992
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2051
msgid ""
"`WEBPLUGIN_DIR`: The directory to install the plug-in files to, default [."
"filename]#PREFIX/lib/browser_plugins/WEBPLUGIN_NAME#. Set this if the port "
"installs plug-in files outside of the default directory to prevent broken "
"symbolic links."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1993
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2052
msgid ""
"`WEBPLUGIN_NAME`: The final directory to install the plug-in files into, "
"default `PKGBASE`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1995
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2054
#, no-wrap
msgid "`xfce`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:1998
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2057
msgid "Possible arguments: (none), `gtk2`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2001
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2060
msgid ""
"Provide support for Xfce related ports. See crossref:special[using-xfce,"
"Using Xfce] for details."
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2004
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2063
msgid ""
"The `gtk2` argument specifies that the port requires GTK2 support. It adds "
"additional features provided by some core components, for example, package:"
"x11/libxfce4menu[] and package:x11-wm/xfce4-panel[]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2006
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2065
#, no-wrap
msgid "`xorg`"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2013
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2072
msgid ""
"Provides an easy way to depend on X.org components. The components should "
"be listed in `USE_XORG`. The available components are:"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2015
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2074
#, no-wrap
msgid "Available X.Org Components"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2019
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2078
#, no-wrap
msgid "Name"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2021
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2080
#, no-wrap
msgid "Description"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2022
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2081
#, no-wrap
msgid "`dmx`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2024
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2083
#, no-wrap
msgid "DMX extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2025
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2084
#, no-wrap
msgid "`fontenc`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2027
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2086
#, no-wrap
msgid "The fontenc Library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2028
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2087
#, no-wrap
msgid "`fontutil`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2030
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2089
#, no-wrap
msgid "Create an index of X font files in a directory"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2031
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2090
#, no-wrap
msgid "`ice`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2033
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2092
#, no-wrap
msgid "Inter Client Exchange library for X11"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2034
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2093
#, no-wrap
msgid "`libfs`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2036
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2095
#, no-wrap
msgid "The FS library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2037
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2096
#, no-wrap
msgid "`pciaccess`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2039
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2098
#, no-wrap
msgid "Generic PCI access library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2042
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2101
#, no-wrap
msgid "Low-level pixel manipulation library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2043
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2102
#, no-wrap
msgid "`sm`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2045
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2104
#, no-wrap
msgid "Session Management library for X11"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2046
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2105
#, no-wrap
msgid "`x11`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2048
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2107
#, no-wrap
msgid "X11 library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2049
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2108
#, no-wrap
msgid "`xau`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2051
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2110
#, no-wrap
msgid "Authentication Protocol library for X11"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2052
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2111
#, no-wrap
msgid "`xaw`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2054
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2057
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2060
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2113
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2116
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2119
#, no-wrap
msgid "X Athena Widgets library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2055
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2114
#, no-wrap
msgid "`xaw6`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2058
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2117
#, no-wrap
msgid "`xaw7`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2061
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2120
#, no-wrap
msgid "`xbitmaps`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2063
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2122
#, no-wrap
msgid "X.Org bitmaps data"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2064
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2123
#, no-wrap
msgid "`xcb`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2066
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2125
#, no-wrap
msgid "The X protocol C-language Binding (XCB) library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2067
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2126
#, no-wrap
msgid "`xcomposite`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2069
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2128
#, no-wrap
msgid "X Composite extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2070
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2129
#, no-wrap
msgid "`xcursor`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2072
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2131
#, no-wrap
msgid "X client-side cursor loading library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2073
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2132
#, no-wrap
msgid "`xdamage`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2075
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2134
#, no-wrap
msgid "X Damage extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2076
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2135
#, no-wrap
msgid "`xdmcp`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2078
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2137
#, no-wrap
msgid "X Display Manager Control Protocol library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2079
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2138
#, no-wrap
msgid "`xext`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2081
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2140
#, no-wrap
msgid "X11 Extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2082
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2141
#, no-wrap
msgid "`xfixes`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2084
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2143
#, no-wrap
msgid "X Fixes extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2085
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2144
#, no-wrap
msgid "`xfont`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2087
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2090
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2146
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2149
#, no-wrap
msgid "X font library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2088
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2147
#, no-wrap
msgid "`xfont2`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2091
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2150
#, no-wrap
msgid "`xft`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2093
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2152
#, no-wrap
msgid "Client-sided font API for X applications"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2094
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2153
#, no-wrap
msgid "`xi`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2096
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2155
#, no-wrap
msgid "X Input extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2097
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2156
#, no-wrap
msgid "`xinerama`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2099
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2158
#, no-wrap
msgid "X11 Xinerama library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2100
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2159
#, no-wrap
msgid "`xkbfile`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2102
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2161
#, no-wrap
msgid "XKB file library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2103
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2162
#, no-wrap
msgid "`xmu`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2105
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2108
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2164
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2167
#, no-wrap
msgid "X Miscellaneous Utilities libraries"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2106
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2165
#, no-wrap
msgid "`xmuu`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2109
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2168
#, no-wrap
msgid "`xorg-macros`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2111
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2170
#, no-wrap
msgid "X.Org development aclocal macros"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2112
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2171
#, no-wrap
msgid "`xorg-server`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2114
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2173
#, no-wrap
msgid "X.Org X server and related programs"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2115
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2174
#, no-wrap
msgid "`xorgproto`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2117
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2176
#, no-wrap
msgid "xorg protocol headers"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2118
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2177
#, no-wrap
msgid "`xpm`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2120
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2179
#, no-wrap
msgid "X Pixmap library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2121
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2180
#, no-wrap
msgid "`xpresent`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2123
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2182
#, no-wrap
msgid "X Present Extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2124
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2183
#, no-wrap
msgid "`xrandr`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2126
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2185
#, no-wrap
msgid "X Resize and Rotate extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2127
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2186
#, no-wrap
msgid "`xrender`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2129
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2188
#, no-wrap
msgid "X Render extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2130
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2189
#, no-wrap
msgid "`xres`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2132
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2191
#, no-wrap
msgid "X Resource usage library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2133
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2192
#, no-wrap
msgid "`xscrnsaver`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2135
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2194
#, no-wrap
msgid "The XScrnSaver library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2136
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2195
#, no-wrap
msgid "`xshmfence`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2138
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2197
#, no-wrap
msgid "Shared memory 'SyncFence' synchronization primitive"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2139
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2198
#, no-wrap
msgid "`xt`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2141
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2200
#, no-wrap
msgid "X Toolkit library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2142
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2201
#, no-wrap
msgid "`xtrans`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2144
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2203
#, no-wrap
msgid "Abstract network code for X"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2145
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2204
#, no-wrap
msgid "`xtst`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2147
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2206
#, no-wrap
msgid "X Test extension"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2148
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2207
#, no-wrap
msgid "`xv`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2150
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2209
#, no-wrap
msgid "X Video Extension library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2151
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2210
#, no-wrap
msgid "`xvmc`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2153
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2212
#, no-wrap
msgid "X Video Extension Motion Compensation library"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2154
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2213
#, no-wrap
msgid "`xxf86dga`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2156
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2215
#, no-wrap
msgid "X DGA Extension"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2157
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2216
#, no-wrap
msgid "`xxf86vm`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2158
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2217
#, no-wrap
msgid "X Vidmode Extension"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2161
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2220
#, no-wrap
msgid "`xorg-cat`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2164
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2223
msgid ""
"Possible arguments: `app`, `data`, `doc`, `driver`, `font`, `lib`, `proto`, "
"`util`, `xserver` and (none) or one off `autotools` (default), `meson`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2168
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2227
msgid ""
"Provide support for building Xorg components. It takes care of setting up "
"common dependencies and an appropriate configuration environment needed. "
"This is intended only for Xorg components."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2170
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2229
msgid "The category has to match upstream categories."
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2173
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2232
msgid ""
"The second argument is the build system to use. autotools is the default, "
"but meson is also supported."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2175
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2234
#, no-wrap
msgid "`zip`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2178
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2237
msgid "Possible arguments: (none), `infozip`"
msgstr ""
#. type: Plain text
-#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2180
+#: documentation/content/en/books/porters-handbook/uses/_index.adoc:2239
msgid ""
"Indicates that the distribution files use the ZIP compression algorithm. "
"For files using the InfoZip algorithm the `infozip` argument must be passed "
"to set the appropriate dependencies."
msgstr ""
diff --git a/documentation/content/en/books/porters-handbook/versions/_index.po b/documentation/content/en/books/porters-handbook/versions/_index.po
index bd50f590cc..0ca506d7d7 100644
--- a/documentation/content/en/books/porters-handbook/versions/_index.po
+++ b/documentation/content/en/books/porters-handbook/versions/_index.po
@@ -1,31621 +1,31717 @@
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR The FreeBSD Project
# This file is distributed under the same license as the FreeBSD Documentation package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: FreeBSD Documentation VERSION\n"
-"POT-Creation-Date: 2022-10-30 14:39-0300\n"
+"POT-Creation-Date: 2023-01-21 20:00-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: YAML Front Matter: description
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1
#, no-wrap
msgid "A list of changes to the sys/param.h file"
msgstr ""
#. type: YAML Front Matter: title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1
#, no-wrap
msgid "Chapter 18. __FreeBSD_version Values"
msgstr ""
#. type: Title =
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:12
#, no-wrap
msgid "`__FreeBSD_version` Values"
msgstr ""
#. type: Plain text
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:50
msgid ""
"Here is a convenient list of `__FreeBSD_version` values as defined in "
"https://cgit.freebsd.org/src/tree/sys/sys/param.h[sys/param.h]:"
msgstr ""
#. type: Title ==
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:52
#, no-wrap
msgid "FreeBSD 14 Versions"
msgstr ""
#. type: Block title
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:55
#, no-wrap
msgid "FreeBSD 14 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:59
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:416
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1323
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2125
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3108
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3796
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4239
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5012
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5480
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5858
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6486
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6844
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6962
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7083
#, no-wrap
msgid "Value"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:60
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:417
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1324
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2126
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3109
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3797
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4240
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5013
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5481
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5859
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6487
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6845
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6963
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7084
#, no-wrap
msgid "Revision"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:61
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:418
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1325
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2127
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3110
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3798
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4241
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5014
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5482
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5860
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6488
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6846
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6964
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7085
#, no-wrap
msgid "Date"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:63
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:420
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1327
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2129
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3112
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3800
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4243
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5016
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5484
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5862
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6490
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6848
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6966
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7087
#, no-wrap
msgid "Release"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:64
#, no-wrap
msgid "1400000"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:65
#, no-wrap
msgid "gitref:a53ce3fc4938e37d5ec89304846203d2083c61a2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:66
#, no-wrap
msgid "January 22, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:68
#, no-wrap
msgid "14.0-CURRENT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:69
#, no-wrap
msgid "1400001"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:70
#, no-wrap
msgid "gitref:739ecbcf1c4fd22b5f6ee0bb180a67644046a3e0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:71
#, no-wrap
msgid "January 23, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:73
#, no-wrap
msgid "14.0-CURRENT after adding symlink support to lockless lookup."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:74
#, no-wrap
msgid "1400002"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:75
#, no-wrap
msgid "gitref:2cf84258922f306a3f84866685d2f5346f67db58[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:76
#, no-wrap
msgid "January 26, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:78
#, no-wrap
msgid "14.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:79
#, no-wrap
msgid "1400003"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:80
#, no-wrap
msgid "gitref:d386f3a3c32f0396aa7995349dd65d6c59711393[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:81
#, no-wrap
msgid "January 28, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:83
#, no-wrap
msgid "14.0-CURRENT after adding various LinuxKPI bits conflicting with drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:84
#, no-wrap
msgid "1400004"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:85
#, no-wrap
msgid "gitref:68f6800ce05c386ff045b4416d8595d09c4d8fdd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:86
#, no-wrap
msgid "February 8, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:88
#, no-wrap
msgid "14.0-CURRENT after kernel interfaces for dispatching cryptographic operations were changed."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:89
#, no-wrap
msgid "1400005"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:90
#, no-wrap
msgid "gitref:45eabf5754ac1d291bd677fdf29f59ce4bbc2c8f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:91
#, no-wrap
msgid "February 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:93
#, no-wrap
msgid "14.0-CURRENT after changing the API of man:ptrace[2] `PT_GETDBREGS`/`PT_SETDBREGS` on arm64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:94
#, no-wrap
msgid "1400006"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:95
#, no-wrap
msgid "gitref:c96151d33509655efb7fb26768cb56a041c176f1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:96
#, no-wrap
msgid "March 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:98
#, no-wrap
msgid "14.0-CURRENT after adding man:sndstat[4] enumeration ioctls."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:99
#, no-wrap
msgid "1400007"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:100
#, no-wrap
msgid "gitref:d36d6816151705907393889d661cbfd25c630ca8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:101
#, no-wrap
msgid "April 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:103
#, no-wrap
msgid "14.0-CURRENT after fixing wrong `dlpi_tls_data`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:104
#, no-wrap
msgid "1400008"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:105
#, no-wrap
msgid "gitref:e152bbecb221a592e7dbcabe3d1170a60f0d0dfe[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:106
#, no-wrap
msgid "April 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:108
#, no-wrap
msgid "14.0-CURRENT after changing the internal KAPI between the krpc and NFS modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:109
#, no-wrap
msgid "1400009"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:110
#, no-wrap
msgid "gitref:9ca874cf740ee68c5742df8b5f9e20910085c011[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:111
#, no-wrap
msgid "April 20, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:113
#, no-wrap
msgid "14.0-CURRENT after adding TCP LRO support for VLAN and VxLAN."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:114
#, no-wrap
msgid "1400010"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:115
#, no-wrap
msgid "gitref:a3a02acde1009f03dc78e979e051acee9f9247c2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:116
#, no-wrap
msgid "April 21, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:118
#, no-wrap
msgid "14.0-CURRENT after changing the man:sndstat[4] ioctls nvlist schema and definitions."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:119
#, no-wrap
msgid "1400015"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:120
#, no-wrap
msgid "gitref:d72cd275187c6399caf0ca4125292dc7e55fa478[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:121
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:126
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:131
#, no-wrap
msgid "May 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:123
#, no-wrap
msgid "14.0-CURRENT after adding more LinuxKPI changes needing adjustments to drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:124
#, no-wrap
msgid "1400016"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:125
#, no-wrap
msgid "gitref:21e3c1fbe2460f144f6d4dfd61c3346b2de59667[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:128
#, no-wrap
msgid "14.0-CURRENT after removing support for KTLS software backends."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:129
#, no-wrap
msgid "1400017"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:130
#, no-wrap
msgid "gitref:beb817edfe22cdea91e19a60c42caabd9404da48[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:133
#, no-wrap
msgid "14.0-CURRENT after adding `crypto_cursor_segment()`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:134
#, no-wrap
msgid "1400018"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:135
#, no-wrap
msgid "gitref:a4b07a2701f568c2c0f0c0426091f1489244a92d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:136
#, no-wrap
msgid "May 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:138
#, no-wrap
msgid "14.0-CURRENT after allowing the man:VFS_QUOTACTL[9] implementation to indicate busy state changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:139
#, no-wrap
msgid "1400019"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:140
#, no-wrap
msgid "gitref:37d64dcdfa519157aff9711f1f226ad7bd778f46[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:141
#, no-wrap
msgid "June 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:143
#, no-wrap
msgid "14.0-CURRENT after including `pr_err_once()` in the LinuxKPI [.filename]#printk.h#."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:144
#, no-wrap
msgid "1400020"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:145
#, no-wrap
msgid "gitref:8a1a42b2a7a428fb97fda9f19fd0d67a4eec7535[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:146
#, no-wrap
msgid "June 9, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:148
#, no-wrap
msgid "14.0-CURRENT after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:149
#, no-wrap
msgid "1400021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:150
#, no-wrap
msgid "gitref:b47f461c8e67253fdb394968428b760e880baa08[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:151
#, no-wrap
msgid "June 10, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:153
#, no-wrap
msgid "14.0-CURRENT after adding a `list_for_each_entry_lockless()` macro to the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:154
#, no-wrap
msgid "1400022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:155
#, no-wrap
msgid "gitref:40cc9a3a6b81a65a03712dfd93bbed48552a97ad[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:156
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1199
#, no-wrap
msgid "June 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:158
#, no-wrap
msgid "14.0-CURRENT after commit gitref:e1a907a25cfa422c0d1acaf9f91352ada04f4bca[repository=\"src\",length=12] changed the internal KAPI between the krpc and nfsserver modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:159
#, no-wrap
msgid "1400023"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:160
#, no-wrap
msgid "gitref:d409305fa3838fb39b38c26fc085fb729b8766d5[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:161
#, no-wrap
msgid "June 13, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:163
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.0-0-gd28af7c654d8, a.k.a. 12.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:164
#, no-wrap
msgid "1400024"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:165
#, no-wrap
msgid "gitref:41dfd8bd6466fd39957dee2614d88c81cdf420a7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:166
#, no-wrap
msgid "June 18, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:168
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:173
#, no-wrap
msgid "14.0-CURRENT after various additions to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:169
#, no-wrap
msgid "1400025"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:170
#, no-wrap
msgid "gitref:5fa1eb1cd927219070b5753b64114a9240d76bf8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:171
#, no-wrap
msgid "July 5, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:174
#, no-wrap
msgid "1400026"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:175
#, no-wrap
msgid "gitref:fad3f322efb53d4924fdda34f9f23f881659c269[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:176
#, no-wrap
msgid "July 16, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:178
#, no-wrap
msgid "14.0-CURRENT after changing the internal KAPI between the nfscommon and nfsd modules."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:179
#, no-wrap
msgid "1400027"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:180
#, no-wrap
msgid "gitref:cc55ee8009a550810d38777fd6ace9abf3a2f6b4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:181
#, no-wrap
msgid "July 28, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:183
#, no-wrap
msgid "14.0-CURRENT after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:184
#, no-wrap
msgid "1400028"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:185
#, no-wrap
msgid "gitref:792b602a337ddc5efaa5e5326d9433fe3da7f303[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:186
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1224
#, no-wrap
msgid "July 31, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:188
#, no-wrap
msgid "14.0-CURRENT after making FPU sections thread-safe in the LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:189
#, no-wrap
msgid "1400029"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:190
#, no-wrap
msgid "gitref:245ec7651e4221043d1032fb3f82f335dc65fc7f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:191
#, no-wrap
msgid "August 5, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:193
#, no-wrap
msgid "14.0-CURRENT after adding man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:194
#, no-wrap
msgid "1400030"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:195
#, no-wrap
msgid "gitref:95941b963606f6e03282cd6f866f3166dcedfa5b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:196
#, no-wrap
msgid "August 12, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:198
#, no-wrap
msgid "14.0-CURRENT after man:VOP_DEALLOCATE[9] parameter changes and addition of man:fspacectl[2] support to POSIX shared memory."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:199
#, no-wrap
msgid "1400031"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:200
#, no-wrap
msgid "gitref:1a4c5061fc5ba8f2eee41456a6873547915f268a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:201
#, no-wrap
msgid "August 24, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:203
#, no-wrap
msgid "14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to update rmsr.r_offset to a meaningful value."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:204
#, no-wrap
msgid "1400032"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:205
#, no-wrap
msgid "gitref:76321d2d432ed270d93b282e54e59b708c0cf3b4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:206
#, no-wrap
msgid "August 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:208
#, no-wrap
msgid "14.0-CURRENT after changing man:fspacectl[2], man:vn_deallocate[9] and man:VOP_DEALLOCATE[9] to make calculating the number of bytes zeroed easier."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:209
#, no-wrap
msgid "1400033"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:210
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:215
#, no-wrap
msgid "gitref:c751d067c166db71ce8bf3a323c62ac3428bd32a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:211
#, no-wrap
msgid "September 7, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:213
#, no-wrap
msgid "14.0-CURRENT after moving the socket buffer locks into the containing socket and renaming sb(un)lock to SOCK_IO_RECV_LOCK, SOCK_IO_RECV_UNLOCK, SOCK_IO_SEND_LOCK, and SOCK_IO_SEND_UNLOCK."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:214
#, no-wrap
msgid "1400034"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:216
#, no-wrap
msgid "September 29, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:218
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:219
#, no-wrap
msgid "1400035"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:220
#, no-wrap
msgid "gitref:16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:221
#, no-wrap
msgid "October 4, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:223
#, no-wrap
msgid "14.0-CURRENT after splitting libtinfow from libncurses."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:224
#, no-wrap
msgid "1400036"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:225
#, no-wrap
msgid "gitref:ac847dbf73685a5df9f70bbcdefa9fdeb559071d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:226
#, no-wrap
msgid "October 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:228
#, no-wrap
msgid "14.0-CURRENT after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:229
#, no-wrap
msgid "1400037"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:230
#, no-wrap
msgid "gitref:2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:231
#, no-wrap
msgid "October 11, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:233
#, no-wrap
msgid "14.0-CURRENT after removal of thread argument from man:VOP_STAT[9] and fo_stat."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:234
#, no-wrap
msgid "1400038"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:235
#, no-wrap
msgid "gitref:0d6516b453469ce1d92ec903c4c4df9ee08be0f9[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:236
#, no-wrap
msgid "October 17, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:238
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI gained support of lazy BAR allocation."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:239
#, no-wrap
msgid "1400039"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:240
#, no-wrap
msgid "gitref:bd49c454ca62170506a98959c1acab7ad50c3276[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:241
#, no-wrap
msgid "October 19, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:243
#, no-wrap
msgid "14.0-CURRENT after page allocator changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:244
#, no-wrap
msgid "1400040"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:245
#, no-wrap
msgid "gitref:f38bef2ce417d6270f32b4ed17cec84bfd95d548[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:246
#, no-wrap
msgid "October 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:248
#, no-wrap
msgid "14.0-CURRENT after libdialog shared library version number bump."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:249
#, no-wrap
msgid "1400041"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:250
#, no-wrap
msgid "gitref:0c276dee030b241e12e1ceb1b2ab619004f08ce1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:251
#, no-wrap
msgid "November 6, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:253
#, no-wrap
msgid "14.0-CURRENT after changing the arguments for man:VOP_ALLOCATE[9]."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:254
#, no-wrap
msgid "1400042"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:255
#, no-wrap
msgid "gitref:20aa359773befc8182f6b5dcb5aad7390cab6c26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:256
#, no-wrap
msgid "November 13, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:258
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-13.0.0-0-gd7b669b3a303, a.k.a. 13.0.0 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:259
#, no-wrap
msgid "1400043"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:260
#, no-wrap
msgid "gitref:7e1d3eefd410ca0fbae5a217422821244c3eeee4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:261
#, no-wrap
msgid "November 25, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:263
#, no-wrap
msgid "14.0-CURRENT after removing the unused thread argument from man:NDINIT[9]*."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:264
#, no-wrap
msgid "1400044"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:265
#, no-wrap
msgid "gitref:ec434c85b46dd715da1940e2a8911bf476b0e477[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:266
#, no-wrap
msgid "December 9, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:268
#, no-wrap
msgid "14.0-CURRENT after changing in-kernel software crypto ciphers transforms to support AEAD ciphers and changing the Blake-2S/B auth transforms to support Init before Setkey like other auth transforms."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:269
#, no-wrap
msgid "1400045"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:270
#, no-wrap
msgid "gitref:b214fcceacad6b842545150664bd2695c1c2b34f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:271
#, no-wrap
msgid "December 15, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:273
#, no-wrap
msgid "14.0-CURRENT after changing man:VOP_READDIR[9]'s cookies argument to a `**uint64_t`."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:274
#, no-wrap
msgid "1400046"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:275
#, no-wrap
msgid "gitref:e2650af157bc7489deaf2c9054995f0f88a6e5da[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:276
#, no-wrap
msgid "December 30, 2021"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:278
#, no-wrap
msgid "14.0-CURRENT after making the CPU_SET macros compatible with glibc."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:279
#, no-wrap
msgid "1400047"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:280
#, no-wrap
msgid "gitref:ed6417cd8d0bb5a2c175fce9d8e4a495fae9e9f4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:281
#, no-wrap
msgid "January 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:283
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:363
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:373
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:378
#, no-wrap
msgid "14.0-CURRENT after multiple LinuxKPI changes required by drm-kmod."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:284
#, no-wrap
msgid "1400048"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:285
#, no-wrap
msgid "gitref:dd2f7a4b45eb1285e710cfce60cb77f7c11f8075[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:286
#, no-wrap
msgid "January 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:288
#, no-wrap
msgid "14.0-CURRENT after adding <crypto/chacha20_poly1305.h>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:289
#, no-wrap
msgid "1400049"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:290
#, no-wrap
msgid "gitref:2c4b65cc3d227f31864e183c15f6c42e2c596cd9[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:291
#, no-wrap
msgid "January 24, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:293
#, no-wrap
msgid "14.0-CURRENT after adding <crypto/curve25519.h>."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:294
#, no-wrap
msgid "1400050"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:295
#, no-wrap
msgid "gitref:213e91399b7998554d787bb290109ebe602aa279[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:296
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:301
#, no-wrap
msgid "January 25, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:298
#, no-wrap
msgid "14.0-CURRENT after iflib adds the feature that a driver can set its own TX queue selection function as ift_txq_select in struct if_txrx."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:299
#, no-wrap
msgid "1400051"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:300
#, no-wrap
msgid "gitref:59d465e200bb7058dfdb183c061730c10dd5bc03[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:303
#, no-wrap
msgid "14.0-CURRENT after adding i2c support for LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:304
#, no-wrap
msgid "1400052"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:305
#, no-wrap
msgid "gitref:05f0b24bfb3416606c8ea02bc1bdb9bcee7aee0c[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:306
#, no-wrap
msgid "February 14, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:308
#, no-wrap
msgid "14.0-CURRENT after adding GUID_INIT and pm_qos.h support for LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:309
#, no-wrap
msgid "1400053"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:310
#, no-wrap
msgid "gitref:ba87e9bf74202b08b8e3b0a297b9b88f6869fbfb[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:311
#, no-wrap
msgid "February 17, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:313
#, no-wrap
msgid "14.0-CURRENT after adding mmap_lock.h to LinuxKPI."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:314
#, no-wrap
msgid "1400054"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:315
#, no-wrap
msgid "gitref:50bb3a33d879536e86e8a23365f070ef00b5cb32[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:316
#, no-wrap
msgid "March 28, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:318
#, no-wrap
msgid "14.0-CURRENT after changing irq_work_queue to return a bool in LinuxKPI to match 5.10 API."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:319
#, no-wrap
msgid "1400055"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:320
#, no-wrap
msgid "gitref:d69af4758be912625ec08656ba64eb90a98c9a7f[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:321
#, no-wrap
msgid "March 29, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:323
#, no-wrap
msgid "14.0-CURRENT after adding for_each_sgtable_dma_sg and for_each_sgtable_dma_page to LinuxKPI"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:324
#, no-wrap
msgid "1400056"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:325
#, no-wrap
msgid "gitref:ab8ac4c28574a42a2891b2e2341f802949c1fb57[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:326
#, no-wrap
msgid "March 31, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:328
#, no-wrap
msgid "14.0-CURRENT after zlib upgrade to 1.2.12"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:329
#, no-wrap
msgid "1400057"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:330
#, no-wrap
msgid "gitref:e68b35e40881a1bd858e1b4b5003123a484fd7cd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:331
#, no-wrap
msgid "April 22, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:333
#, no-wrap
msgid "14.0-CURRENT after changing udp_tun_func_t() prototype."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:334
#, no-wrap
msgid "1400058"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:335
#, no-wrap
msgid "gitref:2e32d4e41d205d6f14834f87306a77ff77b9c0bd[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:336
#, no-wrap
msgid "May 7, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:338
#, no-wrap
msgid "14.0-CURRENT after newbus changes to remove devclass arguments."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:339
#, no-wrap
msgid "1400059"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:340
#, no-wrap
msgid "gitref:3a9a9c0ca44ec535dcf73fe8462bee458e54814b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:341
#, no-wrap
msgid "May 14, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:343
#, no-wrap
msgid "14.0-CURRENT after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:344
#, no-wrap
msgid "1400060"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:345
#, no-wrap
msgid "gitref:85d7875d42913c2cb10a007a1be05b210dc6aab2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:346
#, no-wrap
msgid "June 6, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:348
#, no-wrap
msgid "14.0-CURRENT after LinuxKPI dmi_matches() fixes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:349
#, no-wrap
msgid "1400061"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:350
#, no-wrap
msgid "gitref:c4c5981c14d5bd69e9df9ae691069ec4c2e92174[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:351
#, no-wrap
msgid "June 8, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:353
#, no-wrap
msgid "14.0-CURRENT after mbuf(9) structure changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:354
#, no-wrap
msgid "1400062"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:355
#, no-wrap
msgid "gitref:8c309d48aabf1cb469334c7716033f177a2715c0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:356
#, no-wrap
msgid "June 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:358
#, no-wrap
msgid "14.0-CURRENT after struct kinfo_file changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:359
#, no-wrap
msgid "1400063"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:360
#, no-wrap
msgid "gitref:8cff8e6e13a6d3ccff40fc0d8d97f5aef22a8f4d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:361
#, no-wrap
msgid "June 29, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:364
#, no-wrap
msgid "1400064"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:365
#, no-wrap
msgid "gitref:ddd9004e7a5dbf02c34ef0effcef90f7d5df357d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:366
#, no-wrap
msgid "July 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:368
#, no-wrap
msgid "14.0-CURRENT after the removal of OBJT_DEFAULT."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:369
#, no-wrap
msgid "1400065"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:370
#, no-wrap
msgid "gitref:b273f93657cf0e6f2c6ee4d0f40a43656233c6d0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:371
#, no-wrap
msgid "August 8, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:374
#, no-wrap
msgid "1400066"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:375
#, no-wrap
msgid "gitref:ff7812ee7d444b738a454064f9639c3feb5743e8[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:376
#, no-wrap
msgid "August 18, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:379
#, no-wrap
msgid "1400069"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:380
#, no-wrap
msgid "gitref:f95c0bc89ea4fcde04b0990d57e842ef387ea896[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:381
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:386
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:396
#, no-wrap
msgid "September 22, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:383
#, no-wrap
msgid "14.0-CURRENT after multiple LinuxKPI changes."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:384
#, no-wrap
msgid "1400070"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:385
#, no-wrap
msgid "gitref:6bddde307e21eba297ac3f3e534b4cf3be81dfe2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:388
#, no-wrap
msgid "14.0-CURRENT after KPI changes to pmap_unmapdev() and kmem_*()."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:389
#, no-wrap
msgid "1400071"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:390
#, no-wrap
msgid "gitref:d3f96f661050e9bd21fe29931992a8b9e67ff189[repository=\"src\",length=12]"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:391
#, no-wrap
msgid "September 26, 2022"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:393
#, no-wrap
msgid "14.0-CURRENT after KPI changes that sysctl OIDs lists converted to RB trees."
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:394
#, no-wrap
msgid "1400072"
msgstr ""
#. type: Table
#: documentation/content/en/books/porters-handbook/versions/_index.adoc:395
#, no-wrap
msgid "gitref:8a96874eeeee5195b0b0952b77227bef6a26d1a6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:398
#, no-wrap
msgid "14.0-CURRENT after qsort_r prototype modified to match POSIX."
msgstr ""
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:399
+#, no-wrap
+msgid "1400073"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:400
+#, no-wrap
+msgid "gitref:9c950139051298831ce19d01ea5fb33ec6ea7f89[repository=\"src\",length=12]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:401
+#, no-wrap
+msgid "October 17, 2022"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:403
+#, no-wrap
+msgid "14.0-CURRENT after introduction of v2 of TX Queue Select Functionality."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:404
+#, no-wrap
+msgid "1400074"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:405
+#, no-wrap
+msgid "gitref:e28932c643e891294a49f386ba65322cf8410225[repository=\"src\",length=12]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:406
+#, no-wrap
+msgid "December 9, 2022"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:408
+#, no-wrap
+msgid "14.0-CURRENT after adding spare fops slots in fileops."
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:409
+#, no-wrap
+msgid "1400078"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:410
+#, no-wrap
+msgid "gitref:4b56afaf7bf4fa37bae5b26fd93ee1ff5969c1bb[repository=\"src\",length=12]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:411
+#, no-wrap
+msgid "January 13, 2023"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:413
+#, no-wrap
+msgid "14.0-CURRENT after changing LinuxKPI pci.h."
+msgstr ""
+
#. Template:
#. |14XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |14.0-CURRENT after XXXXXX.
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:425
#, no-wrap
msgid "FreeBSD 13 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:428
#, no-wrap
msgid "FreeBSD 13 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:437
#, no-wrap
msgid "1300000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:438
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339436[339436]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:423
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1782
#, no-wrap
msgid "October 19, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:441
#, no-wrap
msgid "13.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:442
#, no-wrap
msgid "1300001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:443
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339730[339730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:428
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:433
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1787
#, no-wrap
msgid "October 25, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:446
#, no-wrap
msgid "13.0-CURRENT after bumping OpenSSL shared library version numbers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:447
#, no-wrap
msgid "1300002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:448
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339765[339765]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:451
#, no-wrap
msgid "13.0-CURRENT after restoration of [.filename]#sys/joystick.h#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:452
#, no-wrap
msgid "1300003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:453
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340055[340055]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:454
#, no-wrap
msgid "November 2, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:456
#, no-wrap
msgid "13.0-CURRENT after vop_symlink API change (`a_target` is now `const`.)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:457
#, no-wrap
msgid "1300004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:458
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340841[340841]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:459
#, no-wrap
msgid "November 23, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:461
#, no-wrap
msgid "13.0-CURRENT after enabling crtbegin and crtend code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:462
#, no-wrap
msgid "1300005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:463
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/341836[341836]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:464
#, no-wrap
msgid "December 11, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:466
#, no-wrap
msgid "13.0-CURRENT after enabling UFS inode checksums."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:467
#, no-wrap
msgid "1300006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:468
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342398[342398]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:469
#, no-wrap
msgid "December 24, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:471
#, no-wrap
msgid "13.0-CURRENT after fixing [.filename]#sys/random.h# include to be usable from C++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:472
#, no-wrap
msgid "1300007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:473
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342629[342629]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:474
#, no-wrap
msgid "December 30, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:476
#, no-wrap
msgid "13.0-CURRENT after changing the size of `struct linux_cdev` on 32-bit platforms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:477
#, no-wrap
msgid "1300008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:478
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342772[342772]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:479
#, no-wrap
msgid "January 4, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:481
#, no-wrap
msgid "13.0-CURRENT after adding `kern.smp.threads_per_core` and `kern.smp.cores` sysctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:482
#, no-wrap
msgid "1300009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:483
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343213[343213]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:484
#, no-wrap
msgid "January 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:486
#, no-wrap
msgid "13.0-CURRENT after `struct ieee80211vap` structure change to resolve ioctl/detach race for ieee80211com structure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:471
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:487
#, no-wrap
msgid "1300010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:488
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343485[343485]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:489
#, no-wrap
msgid "January 27, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:491
#, no-wrap
msgid "13.0-CURRENT after increasing `SPECNAMELEN` from 63 to `MAXNAMELEN` (255)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:492
#, no-wrap
msgid "1300011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:493
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344041[344041]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:478
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:499
#, no-wrap
msgid "February 12, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:496
#, no-wrap
msgid "13.0-CURRENT after man:renameat[2] has been corrected to work with kernels built with the `CAPABILITIES` option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:497
#, no-wrap
msgid "1300012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:498
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344062[344062]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:501
#, no-wrap
msgid "13.0-CURRENT after `taskqgroup_attach()` and `taskqgroup_attach_cpu()` take a device_t and a struct resource pointer as arguments for denoting device interrupts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:502
#, no-wrap
msgid "1300013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:503
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344300[344300]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:504
#, no-wrap
msgid "February 19, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:506
#, no-wrap
msgid "13.0-CURRENT after the removal of drm and drm2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:507
#, no-wrap
msgid "1300014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:508
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344779[344779]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:509
#, no-wrap
msgid "March 4, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:511
#, no-wrap
msgid "13.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 8.0.0 rc3."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:512
#, no-wrap
msgid "1300015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:513
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345196[345196]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:498
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1812
#, no-wrap
msgid "March 15, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:516
#, no-wrap
msgid "13.0-CURRENT after deanonymizing thread and proc state enums, so userland applications can use them without redefining the value names."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:517
#, no-wrap
msgid "1300016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:518
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345236[345236]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:503
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:529
#, no-wrap
msgid "March 16, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:521
#, no-wrap
msgid "13.0-CURRENT after enabling LLVM OpenMP 8.0.0 rc5 on amd64 by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:522
#, no-wrap
msgid "1300017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:523
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345305[345305]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:524
#, no-wrap
msgid "March 19, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:526
#, no-wrap
msgid "13.0-CURRENT after exposing the Rx mbuf buffer size to drivers in iflib."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:527
#, no-wrap
msgid "1300018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:528
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346012[346012]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:531
#, no-wrap
msgid "13.0-CURRENT after introduction of funlinkat syscall in link:https://svnweb.freebsd.org/changeset/base/345982[345982]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:532
#, no-wrap
msgid "1300019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:533
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346282[346282]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:518
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2975
#, no-wrap
msgid "April 16, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:536
#, no-wrap
msgid "13.0-CURRENT after addition of man:is_random_seeded[9] to man:random[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:537
#, no-wrap
msgid "1300020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:538
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346358[346358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:539
#, no-wrap
msgid "April 18, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:541
#, no-wrap
msgid "13.0-CURRENT after restoring man:random[4] availability tradeoff prior to link:https://svnweb.freebsd.org/changeset/base/346250[346250] and adding new tunables and diagnostic sysctls for programmatically discovering early seeding problems after boot."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:542
#, no-wrap
msgid "1300021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:543
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346645[346645]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:544
#, no-wrap
msgid "April 24, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:546
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI uses man:bus_dma[9] to be compatible with an IOMMU."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:547
#, no-wrap
msgid "1300022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:548
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347089[347089]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:549
#, no-wrap
msgid "May 4, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:551
#, no-wrap
msgid "13.0-CURRENT after fixing regression issue after link:https://svnweb.freebsd.org/changeset/base/346645[346645] in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:552
#, no-wrap
msgid "1300023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:553
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347192[347192]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:538
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2985
#, no-wrap
msgid "May 6, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:556
#, no-wrap
msgid "13.0-CURRENT after list-ifying kernel dump device configuration."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:557
#, no-wrap
msgid "1300024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:558
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347325[347325]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:559
#, no-wrap
msgid "May 8, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:561
#, no-wrap
msgid "13.0-CURRENT after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:562
#, no-wrap
msgid "1300025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:563
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347532[347532]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:564
#, no-wrap
msgid "May 13, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:566
#, no-wrap
msgid "13.0-CURRENT after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:567
#, no-wrap
msgid "1300026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:568
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347596[347596]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:553
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:574
#, no-wrap
msgid "May 14, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:571
#, no-wrap
msgid "13.0-CURRENT after adding context member to ww_mutex in LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:572
#, no-wrap
msgid "1300027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:573
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347601[347601]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:576
#, no-wrap
msgid "13.0-CURRENT after adding prepare to pm_ops in LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:577
#, no-wrap
msgid "1300028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:578
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347925[347925]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:579
#, no-wrap
msgid "May 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:581
#, no-wrap
msgid "13.0-CURRENT after removal of bm, cs, de, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb, and xe drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:582
#, no-wrap
msgid "1300029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:583
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347984[347984]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:584
#, no-wrap
msgid "May 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:586
#, no-wrap
msgid "13.0-CURRENT after removing some header pollution due to [.filename]#sys/eventhandler.h#. Affected files may now need to explicitly include one or more of [.filename]#sys/eventhandler.h#, [.filename]#sys/ktr.h#, [.filename]#sys/lock.h#, or [.filename]#sys/mutex.h#, when the missing header may have been included implicitly prior to 1300029."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:587
#, no-wrap
msgid "1300030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:572
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:588
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348350[348350]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:589
#, no-wrap
msgid "May 29, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:591
#, no-wrap
msgid "13.0-CURRENT after adding relocation support to libdwarf on powerpc64 to fix handling of DWARF information on unlinked objects. Original commit in link:https://svnweb.freebsd.org/changeset/base/348347[348347]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:592
#, no-wrap
msgid "1300031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:593
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348808[348808]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:594
#, no-wrap
msgid "June 8, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:596
#, no-wrap
msgid "13.0-CURRENT after adding dpcpu and vnet section fixes to i386 kernel modules to avoid panics in certain conditions. i386 kernel modules need to be recompiled with the linker script magic in place or they will refuse to load."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:597
#, no-wrap
msgid "1300032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:598
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349151[349151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:599
#, no-wrap
msgid "June 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:601
#, no-wrap
msgid "13.0-CURRENT after separating kernel `crc32()` implementation to its own header ([.filename]#gsb_crc32.h#) and renaming the source to [.filename]#gsb_crc32.c#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:602
#, no-wrap
msgid "1300033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:603
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349277[349277]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:604
#, no-wrap
msgid "June 21, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:606
#, no-wrap
msgid "13.0-CURRENT after additions to LinuxKPI's `rcu` list."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:607
#, no-wrap
msgid "1300034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:608
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349352[349352]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:609
#, no-wrap
msgid "June 24, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:611
#, no-wrap
msgid "13.0-CURRENT after NAND and NANDFS removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:612
#, no-wrap
msgid "1300035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:613
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349846[349846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:614
#, no-wrap
msgid "July 8, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:616
#, no-wrap
msgid "13.0-CURRENT after merging the vm_page hold and wire mechanisms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:617
#, no-wrap
msgid "1300036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:618
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349972[349972]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:619
#, no-wrap
msgid "July 13, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:621
#, no-wrap
msgid "13.0-CURRENT after adding `arm_drain_writebuf()` and `arm_sync_icache()` for compatibility with NetBSD and OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:622
#, no-wrap
msgid "1300037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:623
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350307[350307]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:624
#, no-wrap
msgid "July 24, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:626
#, no-wrap
msgid "13.0-CURRENT after removal of man:libcap_random[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:627
#, no-wrap
msgid "1300038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:628
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350437[350437]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:629
#, no-wrap
msgid "July 30, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:631
#, no-wrap
msgid "13.0-CURRENT after removal of gzip'ed a.out support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:632
#, no-wrap
msgid "1300039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:633
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350665[350665]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:634
#, no-wrap
msgid "August 7, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:636
#, no-wrap
msgid "13.0-CURRENT after merge of fusefs from projects/fuse2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:637
#, no-wrap
msgid "1300040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:638
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351140[351140]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:639
#, no-wrap
msgid "August 16, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:641
#, no-wrap
msgid "13.0-CURRENT after deletion of [.filename]#sys/dir.h# which has been deprecated since 1997."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:626
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:811
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:981
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1443
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3193
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4734
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5267
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5820
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6008
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6972
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7000
#, no-wrap
msgid "(not changed)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:643
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351423[351423]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:644
#, no-wrap
msgid "August 23, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:646
#, no-wrap
msgid "13.0-CURRENT after changing most arguments to man:ping6[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:647
#, no-wrap
msgid "1300041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:648
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351480[351480]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:649
#, no-wrap
msgid "August 25, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:651
#, no-wrap
msgid "13.0-CURRENT after removal of zlib 1.0.4 after the completion of kernel zlib unification."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:652
#, no-wrap
msgid "1300042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:653
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351522[351522]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:654
#, no-wrap
msgid "August 27, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:656
#, no-wrap
msgid "13.0-CURRENT after addition of kernel-side support for in-kernel TLS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:657
#, no-wrap
msgid "1300043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:658
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351698[351698]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:643
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:664
#, no-wrap
msgid "September 2, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:661
#, no-wrap
msgid "13.0-CURRENT after removal of man:gets[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:662
#, no-wrap
msgid "1300044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:663
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351701[351701]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:666
#, no-wrap
msgid "13.0-CURRENT after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:667
#, no-wrap
msgid "1300045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:668
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351729[351729]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:669
#, no-wrap
msgid "September 3, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:671
#, no-wrap
msgid "13.0-CURRENT after adding man:sysctlbyname[3] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:672
#, no-wrap
msgid "1300046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:673
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351937[351937]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:674
#, no-wrap
msgid "September 6, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:676
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI sysfs improvements."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:677
#, no-wrap
msgid "1300047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:678
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352110[352110]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:663
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1877
#, no-wrap
msgid "September 9, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:681
#, no-wrap
msgid "13.0-CURRENT after changing the synchonization rules for vm_page reference counting.."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:682
#, no-wrap
msgid "1300048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:683
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352700[352700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:684
#, no-wrap
msgid "September 25, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:686
#, no-wrap
msgid "13.0-CURRENT after adding a shm_open2 syscall to support the upcoming man:memfd_create[2] syscall."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:687
#, no-wrap
msgid "1300049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:688
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353274[353274]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:689
#, no-wrap
msgid "October 7, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:691
#, no-wrap
msgid "13.0-CURRENT after factoring out the VNET shutdown check into an own vnet structure field."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:692
#, no-wrap
msgid "1300050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:693
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353358[353358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:694
#, no-wrap
msgid "October 9, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:696
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:697
#, no-wrap
msgid "1300051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:698
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353685[353685]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:683
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:688
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:709
#, no-wrap
msgid "October 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:701
#, no-wrap
msgid "13.0-CURRENT after splitting out a more generic man:debugnet[4] from man:netdump[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:702
#, no-wrap
msgid "1300052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:703
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353698[353698]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:706
#, no-wrap
msgid "13.0-CURRENT after promoting the page busy field to a first class lock that no longer requires the object lock for consistency."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:707
#, no-wrap
msgid "1300053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:708
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353700[353700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:711
#, no-wrap
msgid "13.0-CURRENT after implementing NetGDB."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:712
#, no-wrap
msgid "1300054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:713
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/353868[353868]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:714
#, no-wrap
msgid "October 21, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:716
#, no-wrap
msgid "13.0-CURRENT after removing obsoleted KPIs that were used to access interface address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:717
#, no-wrap
msgid "1300055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:718
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354335[354335]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:719
#, no-wrap
msgid "November 4, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:721
#, no-wrap
msgid "13.0-CURRENT after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:722
#, no-wrap
msgid "1300056"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:723
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354460[354460]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:724
#, no-wrap
msgid "November 7, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:726
#, no-wrap
msgid "13.0-CURRENT after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:727
#, no-wrap
msgid "1300057"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:728
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354694[354694]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:729
#, no-wrap
msgid "November 13, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:731
#, no-wrap
msgid "13.0-CURRENT after adding support for `AT_EXECPATH` to man:elf_aux_info[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:732
#, no-wrap
msgid "1300058"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:733
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354820[354820]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:718
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:739
#, no-wrap
msgid "November 18, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:736
#, no-wrap
msgid "13.0-CURRENT after widening the vm_page aflags field to 16 bits."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:737
#, no-wrap
msgid "1300059"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:738
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354835[354835]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:741
#, no-wrap
msgid "13.0-CURRENT after converting the in-tree sysent targets to use the new [.filename]#makesyscalls.lua#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:742
#, no-wrap
msgid "1300060"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:743
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354922[354922]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:744
#, no-wrap
msgid "November 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:746
#, no-wrap
msgid "13.0-CURRENT after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:747
#, no-wrap
msgid "1300061"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:748
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354977[354977]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:733
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1912
#, no-wrap
msgid "November 21, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:751
#, no-wrap
msgid "13.0-CURRENT after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:752
#, no-wrap
msgid "1300062"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:753
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355309[355309]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:754
#, no-wrap
msgid "December 2, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:756
#, no-wrap
msgid "13.0-CURRENT after adding TCP_STATS support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:757
#, no-wrap
msgid "1300063"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:758
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355537[355537]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:759
#, no-wrap
msgid "December 8, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:761
#, no-wrap
msgid "13.0-CURRENT after removal of VI_DOOMED (use VN_IS_DOOMED instead)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:762
#, no-wrap
msgid "1300064"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:747
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1916
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355658[355658]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:764
#, no-wrap
msgid "December 9, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:766
#, no-wrap
msgid "13.0-CURRENT after correcting the C++ version check for declaring man:timespec_get[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:767
#, no-wrap
msgid "1300065"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:768
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355643[355643]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:753
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:774
#, no-wrap
msgid "December 12, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:771
#, no-wrap
msgid "13.0-CURRENT after adding sigsetop extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:772
#, no-wrap
msgid "1300066"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:773
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355679[355679]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:776
#, no-wrap
msgid "13.0-CURRENT after changing the internal interface between the NFS modules as part of the introduction of NFS 4.2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:777
#, no-wrap
msgid "1300067"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:778
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355732[355732]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:779
#, no-wrap
msgid "December 13, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:781
#, no-wrap
msgid "13.0-CURRENT after removing the deprecated `callout_handle_init`, `timeout`, and `untimeout` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:782
#, no-wrap
msgid "1300068"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:783
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355828[355828]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:784
#, no-wrap
msgid "December 16, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:786
#, no-wrap
msgid "13.0-CURRENT after doubling the value of `ARG_MAX`, for 64 bit platforms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:787
#, no-wrap
msgid "1300069"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:788
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356051[356051]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:789
#, no-wrap
msgid "December 24, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:791
#, no-wrap
msgid "13.0-CURRENT after the addition of busdma templates."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:792
#, no-wrap
msgid "1300070"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:793
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356113[356113]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:778
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:799
#, no-wrap
msgid "December 27, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:796
#, no-wrap
msgid "13.0-CURRENT after eliminating the last MI difference in AT_* definitions (for powerpc)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:797
#, no-wrap
msgid "1300071"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:798
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356135[356135]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:801
#, no-wrap
msgid "13.0-CURRENT after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:802
#, no-wrap
msgid "1300072"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:803
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356185[356185]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:804
#, no-wrap
msgid "December 29, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:806
#, no-wrap
msgid "13.0-CURRENT after removal of `GEOM_SCHED` class and `gsched` tool."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:807
#, no-wrap
msgid "1300073"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:808
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356263[356263]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:793
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1932
#, no-wrap
msgid "January 2, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:811
#, no-wrap
msgid "13.0-CURRENT after removing arm/arm as a valid target."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:812
#, no-wrap
msgid "1300074"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:813
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356337[356337]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:814
#, no-wrap
msgid "January 3, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:816
#, no-wrap
msgid "13.0-CURRENT after removing flags argument from `VOP_UNLOCK`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:817
#, no-wrap
msgid "1300075"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:818
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356409[356409]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:803
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1915
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3007
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3803
#, no-wrap
msgid "January 6, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:821
#, no-wrap
msgid "13.0-CURRENT after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:822
#, no-wrap
msgid "1300076"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:823
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356511[356511]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:824
#, no-wrap
msgid "January 8, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:826
#, no-wrap
msgid "13.0-CURRENT after pushing vnop implementation into the fileop layer in man:posix_fallocate[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:828
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357396[357396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:829
#, no-wrap
msgid "February 2, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:831
#, no-wrap
msgid "13.0-CURRENT after removal of armv5 architecture code from the src tree."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:832
#, no-wrap
msgid "1300077"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:833
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357455[357455]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:834
#, no-wrap
msgid "February 3, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:836
#, no-wrap
msgid "13.0-CURRENT after removal of sparc64 architecture code from the src tree."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:837
#, no-wrap
msgid "1300078"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:838
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358020[358020]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:839
#, no-wrap
msgid "February 17, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:841
#, no-wrap
msgid "13.0-CURRENT after changing `struct vnet` and the VNET magic cookie."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:842
#, no-wrap
msgid "1300079"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:843
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358164[358164]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:828
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:849
#, no-wrap
msgid "February 20, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:846
#, no-wrap
msgid "13.0-CURRENT after upgrading ncurses to 6.2.x"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:847
#, no-wrap
msgid "1300080"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:848
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358172[358172]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:851
#, no-wrap
msgid "13.0-CURRENT after adding realpathat syscall to VFS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:852
#, no-wrap
msgid "1300081"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:853
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358218[358218]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:854
#, no-wrap
msgid "February 21, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:856
#, no-wrap
msgid "13.0-CURRENT after recent linuxkpi changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:857
#, no-wrap
msgid "1300082"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:858
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358497[358497]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:859
#, no-wrap
msgid "March 1, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:861
#, no-wrap
msgid "13.0-CURRENT after removal of man:bktr[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:862
#, no-wrap
msgid "1300083"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:863
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358834[358834]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:848
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:869
#, no-wrap
msgid "March 10, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:866
#, no-wrap
msgid "13.0-CURRENT after removal of man:amd[8], r358821."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:867
#, no-wrap
msgid "1300084"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:868
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/358851[358851]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:871
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0-rc3 c290cb61fdc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:872
#, no-wrap
msgid "1300085"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:873
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359261[359261]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:874
#, no-wrap
msgid "March 23, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:876
#, no-wrap
msgid "13.0-CURRENT after the import of the kyua test framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:877
#, no-wrap
msgid "1300086"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:878
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359347[359347]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:879
#, no-wrap
msgid "March 26, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:881
#, no-wrap
msgid "13.0-CURRENT after switching powerpc and powerpcspe to the lld linker."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:882
#, no-wrap
msgid "1300087"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:883
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359374[359374]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:884
#, no-wrap
msgid "March 27, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:886
#, no-wrap
msgid "13.0-CURRENT after refactoring the driver and consumer interfaces for in-kernel cryptography."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:887
#, no-wrap
msgid "1300088"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:888
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359530[359530]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:889
#, no-wrap
msgid "April 1, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:891
#, no-wrap
msgid "13.0-CURRENT after removing support for procfs process debugging."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:892
#, no-wrap
msgid "1300089"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:893
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359727[359727]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:894
#, no-wrap
msgid "April 8, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:896
#, no-wrap
msgid "13.0-CURRENT after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:897
#, no-wrap
msgid "1300090"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:898
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359747[359747]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:899
#, no-wrap
msgid "April 9, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:901
#, no-wrap
msgid "13.0-CURRENT after removing the old NFS lock device driver that uses Giant."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:902
#, no-wrap
msgid "1300091"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:903
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359839[359839]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:904
#, no-wrap
msgid "April 12, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:906
#, no-wrap
msgid "13.0-CURRENT after implementing a man:close_range[2] syscall."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:907
#, no-wrap
msgid "1300092"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:908
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359920[359920]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:909
#, no-wrap
msgid "April 14, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:911
#, no-wrap
msgid "13.0-CURRENT after reworking unmapped mbufs in KTLS to carry ext_pgs in the mbuf itself."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:912
#, no-wrap
msgid "1300093"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:913
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360418[360418]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:914
#, no-wrap
msgid "April 27, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:916
#, no-wrap
msgid "13.0-CURRENT after adding support for kernel TLS receive offload."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:917
#, no-wrap
msgid "1300094"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:918
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360796[360796]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:903
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3055
#, no-wrap
msgid "May 7, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:921
#, no-wrap
msgid "13.0-CURRENT after linuxkpi changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:922
#, no-wrap
msgid "1300095"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:923
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361275[361275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:924
#, no-wrap
msgid "May 20, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:926
#, no-wrap
msgid "13.0-CURRENT after adding HyperV socket support for FreeBSD guests."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:927
#, no-wrap
msgid "1300096"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:928
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361410[361410]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:929
#, no-wrap
msgid "May 23, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:931
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 rc1 f79cd71e145."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:932
#, no-wrap
msgid "1300097"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:933
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361724[361724]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:934
#, no-wrap
msgid "June 2, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:936
#, no-wrap
msgid "13.0-CURRENT after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:937
#, no-wrap
msgid "1300098"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:938
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362159[362159]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:939
#, no-wrap
msgid "June 14, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:941
#, no-wrap
msgid "13.0-CURRENT after changing the `export_args ex_flags` field so that is 64bits."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:942
#, no-wrap
msgid "1300099"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:943
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362453[362453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:944
#, no-wrap
msgid "June 20, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:946
#, no-wrap
msgid "13.0-CURRENT after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:947
#, no-wrap
msgid "1300100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:948
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362640[362640]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:949
#, no-wrap
msgid "June 26, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:951
#, no-wrap
msgid "13.0-CURRENT after changing the internal API between the NFS kernel modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:952
#, no-wrap
msgid "1300101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:953
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363077[363077]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:954
#, no-wrap
msgid "July 10, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:956
#, no-wrap
msgid "13.0-CURRENT after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:957
#, no-wrap
msgid "1300102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:958
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363562[363562]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:959
#, no-wrap
msgid "July 26, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:961
#, no-wrap
msgid "13.0-CURRENT after implementing lockless lookup in the VFS layer."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:962
#, no-wrap
msgid "1300103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:963
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363757[363757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:964
#, no-wrap
msgid "August 1, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:966
#, no-wrap
msgid "13.0-CURRENT after making rights mandatory for NDINIT_ALL."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:967
#, no-wrap
msgid "1300104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:968
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363783[363783]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:969
#, no-wrap
msgid "August 2, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:971
#, no-wrap
msgid "13.0-CURRENT after vnode layout changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:972
#, no-wrap
msgid "1300105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:973
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363894[363894]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:974
#, no-wrap
msgid "August 5, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:976
#, no-wrap
msgid "13.0-CURRENT after `vaccess()` change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:977
#, no-wrap
msgid "1300106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:978
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364092[364092]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:963
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:984
#, no-wrap
msgid "August 11, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:981
#, no-wrap
msgid "13.0-CURRENT after adding an argument to `newnfs_connect()` that indicates use TLS for the connection."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:982
#, no-wrap
msgid "1300107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:983
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364109[364109]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:986
#, no-wrap
msgid "13.0-CURRENT after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:987
#, no-wrap
msgid "1300108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:988
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364233[364233]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:989
#, no-wrap
msgid "August 14, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:991
#, no-wrap
msgid "13.0-CURRENT after adding a few wait_bit functions to the linuxkpi, which are needed for DRM from Linux v5.4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:992
#, no-wrap
msgid "1300109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:993
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364274[364274]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:978
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:999
#, no-wrap
msgid "August 16, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:996
#, no-wrap
msgid "13.0-CURRENT after `vget()` argument removal and namei flags renumbering."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:998
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364284[364284]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1001
#, no-wrap
msgid "13.0-CURRENT after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to release/11.x llvmorg-11.0.0-rc1-47-gff47911ddfc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1002
#, no-wrap
msgid "1300110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1003
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364331[364331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1004
#, no-wrap
msgid "August 18, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1006
#, no-wrap
msgid "13.0-CURRENT after deleting the unused `use_ext` argument to `nfscl_reqstart()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1007
#, no-wrap
msgid "1300111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1008
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364476[364476]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1009
#, no-wrap
msgid "August 22, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1011
#, no-wrap
msgid "13.0-CURRENT after adding TLS support to the kernel RPC."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1012
#, no-wrap
msgid "1300112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1013
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364747[364747]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:998
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1019
#, no-wrap
msgid "August 25, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1016
#, no-wrap
msgid "13.0-CURRENT after merging OpenZFS support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1017
#, no-wrap
msgid "1300113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1018
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364753[364753]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1021
#, no-wrap
msgid "13.0-CURRENT after adding atomic and bswap functions to libcompiler_rt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1022
#, no-wrap
msgid "1300114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1023
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365459[365459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1008
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2000
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3100
#, no-wrap
msgid "September 8, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1026
#, no-wrap
msgid "13.0-CURRENT after changing arm64 AT_HWCAP definitions for man:elf_aux_info[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1027
#, no-wrap
msgid "1300115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1028
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365705[365705]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1029
#, no-wrap
msgid "September 14, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1031
#, no-wrap
msgid "13.0-CURRENT after fixing man:crunchgen[1] application build with `WARNS=6`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1032
#, no-wrap
msgid "1300116"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1033
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366062[366062]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1034
#, no-wrap
msgid "September 22, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1036
#, no-wrap
msgid "13.0-CURRENT after the introduction of the powerpc64le ARCH."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1037
#, no-wrap
msgid "1300117"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1038
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366070[366070]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1039
#, no-wrap
msgid "September 23, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1041
#, no-wrap
msgid "13.0-CURRENT after reimplementing purgevfs to iterate vnodes instead of the entire hash."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1042
#, no-wrap
msgid "1300118"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1043
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366374[366374]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1044
#, no-wrap
msgid "October 2, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1046
#, no-wrap
msgid "13.0-CURRENT after adding backlight support and `dmi_*` functions to the linuxkpi."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1047
#, no-wrap
msgid "1300119"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1048
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366432[366432]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1049
#, no-wrap
msgid "October 6, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1051
#, no-wrap
msgid "13.0-CURRENT after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1052
#, no-wrap
msgid "1300120"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1053
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366666[366666]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1054
#, no-wrap
msgid "October 13, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1056
#, no-wrap
msgid "13.0-CURRENT after the fix to arm64 write-only mappings."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1057
#, no-wrap
msgid "1300121"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1058
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366719[366719]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1059
#, no-wrap
msgid "October 15, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1061
#, no-wrap
msgid "13.0-CURRENT after the addition of `VOP_EAGAIN`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1062
#, no-wrap
msgid "1300122"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1063
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366782[366782]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1064
#, no-wrap
msgid "October 17, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1066
#, no-wrap
msgid "13.0-CURRENT after the addition of `ptsname_r`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1067
#, no-wrap
msgid "1300123"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1068
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366871[366871]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1053
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2030
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3087
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3115
#, no-wrap
msgid "October 20, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1071
#, no-wrap
msgid "13.0-CURRENT after `VOP`, `VPTOCNP`, and `INACTIVE` changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1072
#, no-wrap
msgid "1300124"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1073
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367162[367162]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1074
#, no-wrap
msgid "October 30, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1076
#, no-wrap
msgid "13.0-CURRENT after adding `cache_vop_mkdir` and renaming `cache_rename` to `cache_vop_rename`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1077
#, no-wrap
msgid "1300125"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1078
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367347[367347]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1079
#, no-wrap
msgid "November 4, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1081
#, no-wrap
msgid "13.0-CURRENT after using a `rms` lock for teardown handling in `zfs`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1082
#, no-wrap
msgid "1300126"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1083
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367384[367384]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1084
#, no-wrap
msgid "November 5, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1086
#, no-wrap
msgid "13.0-CURRENT after rationalizing per-cpu zones."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1087
#, no-wrap
msgid "1300127"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1088
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367432[367432]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1089
#, no-wrap
msgid "November 6, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1091
#, no-wrap
msgid "13.0-CURRENT after moving `malloc_type_internal` into `malloc_type`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1092
#, no-wrap
msgid "1300128"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1093
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367522[367522]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1078
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2035
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3120
#, no-wrap
msgid "November 9, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1096
#, no-wrap
msgid "13.0-CURRENT after LinuxKPI additions to implement ACPI bits required by `drm-kmod` in the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1097
#, no-wrap
msgid "1300129"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1098
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367627[367627]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1099
#, no-wrap
msgid "November 12, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1101
#, no-wrap
msgid "13.0-CURRENT after retiring malloc_last_fail."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1102
#, no-wrap
msgid "1300130"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1103
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367777[367777]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1104
#, no-wrap
msgid "November 17, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1106
#, no-wrap
msgid "13.0-CURRENT after p_pd / pwddesc split from p_fd / filedesc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1107
#, no-wrap
msgid "1300131"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1108
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/368417[368417]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1109
#, no-wrap
msgid "December 7, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1111
#, no-wrap
msgid "13.0-CURRENT after removal of crypto file descriptors."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1112
#, no-wrap
msgid "1300132"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1113
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/368659[368659]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1114
#, no-wrap
msgid "December 15, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1116
#, no-wrap
msgid "13.0-CURRENT after improving handling of alternate settings in the USB stack."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1117
#, no-wrap
msgid "1300133"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1118
#, no-wrap
msgid "gitref:2ed0c8d801f5f72dbde7a7d30135c1cc361a1e90[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1119
#, no-wrap
msgid "December 23, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1121
#, no-wrap
msgid "13.0-CURRENT after changing the internal API between the NFS and kernel RPC modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1122
#, no-wrap
msgid "1300134"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1123
#, no-wrap
msgid "gitref:a84b0e94cdbf1a17a798ab7f77375aacb4d400ff[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1124
#, no-wrap
msgid "January 7, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1126
#, no-wrap
msgid "13.0-CURRENT after factoring out the hardware-independent part of USB HID support to a new module."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1127
#, no-wrap
msgid "1300135"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1128
#, no-wrap
msgid "gitref:35a39dc5b34962081eeda8dbcf0b99a31585499b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1129
#, no-wrap
msgid "January 12, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1131
#, no-wrap
msgid "13.0-CURRENT after adding `kernel_fpu_begin`/`kernel_fpu_end` to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1132
#, no-wrap
msgid "1300136"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1133
#, no-wrap
msgid "gitref:72c551930be195b5ea982c1b16767f54388424f2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1134
#, no-wrap
msgid "January 17, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1136
#, no-wrap
msgid "13.0-CURRENT after reimplementing LinuxKPI's `irq_work` queue on top of fast taskqueue."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1137
#, no-wrap
msgid "1300137"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1138
#, no-wrap
msgid "gitref:010196adcfaf2bb610725394d40691874b4ff2af[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1139
#, no-wrap
msgid "January 30, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1141
#, no-wrap
msgid "13.0-CURRENT after fixing a clang assertion when building the package:devel/onetbb[] port."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1142
#, no-wrap
msgid "1300138"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1143
#, no-wrap
msgid "gitref:dcee9964238b12a8e55917f292139f074b1a80b2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1144
#, no-wrap
msgid "February 1, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1146
#, no-wrap
msgid "13.0-ALPHA3 after adding lockless symlink lookup to vfs cache."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1147
#, no-wrap
msgid "1300139"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1148
#, no-wrap
msgid "gitref:91a07ed50ffca4dfada3e7f1f050ea746c1bac66[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1149
#, no-wrap
msgid "February 2, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1151
#, no-wrap
msgid "13.0-ALPHA3 after adding various LinuxKPI bits conflicting with drm-kmod."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1152
#, no-wrap
msgid "1300500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1153
#, no-wrap
msgid "gitref:3c6a89748a01869c18955d5e3bfcdf35f6705d26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1154
#, no-wrap
msgid "February 5, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1156
#, no-wrap
msgid "13.0-STABLE after releng/13.0 was branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1141
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1162
#, no-wrap
msgid "1300501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1142
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1163
#, no-wrap
msgid "gitref:c3f97dd75a1c294c4f60f42b604ee8bcda17be09[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1143
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1148
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1153
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1174
#, no-wrap
msgid "April 23, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1145
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1166
#, no-wrap
msgid "13.0-STABLE after fixing rtld's `dl_iterate_phdr()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1167
#, no-wrap
msgid "1300502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1168
#, no-wrap
msgid "gitref:da6a8ccfa293c3c831fdde51169754fcb9587657[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1171
#, no-wrap
msgid "13.0-STABLE after implementing `atomic_dec_and_lock_irqsave()` in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1172
#, no-wrap
msgid "1300503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1173
#, no-wrap
msgid "gitref:d60c6dc8f69b1264c7af5e2479ea94f000fd2c6d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1176
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the krpc and NFS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1177
#, no-wrap
msgid "1300504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1178
#, no-wrap
msgid "gitref:fb34817c686cc130449325499870e36979899801[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1163
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2067
#, no-wrap
msgid "April 30, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1181
#, no-wrap
msgid "13.0-STABLE after updating the LinuxKPI to accommodate the drm-kmod 5.5 update."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1182
#, no-wrap
msgid "1300505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1183
#, no-wrap
msgid "gitref:8f81f190a640e211dd814bdde7811982b9491fb0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1168
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2072
#, no-wrap
msgid "May 10, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1186
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1187
#, no-wrap
msgid "1300506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1188
#, no-wrap
msgid "gitref:e31579b8558db508dfc3f8fc276611a7c3c93aa1[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1173
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1194
#, no-wrap
msgid "June 2, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1191
#, no-wrap
msgid "13.0-STABLE after adding TCP LRO support for VLAN and VxLAN."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1192
#, no-wrap
msgid "1300507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1193
#, no-wrap
msgid "gitref:c64d1bd7145b5d30c97d1cd99e584da529d95100[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1196
#, no-wrap
msgid "13.0-STABLE after adding a new member to the man:EPOCH[9] tracker structure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1197
#, no-wrap
msgid "1300508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1198
#, no-wrap
msgid "gitref:658f5eed38c35f3f7d6695110b7dae8dc94d12c7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1201
#, no-wrap
msgid "13.0-STABLE after adding macros for `might_lock_nested()` and `lockdep_(re/un/)pin_lock()` to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1202
#, no-wrap
msgid "1300509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1203
#, no-wrap
msgid "gitref:210349325af9920d1535ad76fa3b92847684f6e0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1204
#, no-wrap
msgid "June 14, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1206
#, no-wrap
msgid "13.0-STABLE after adding a macro for `list_for_each_entry_lockless()` to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1207
#, no-wrap
msgid "1300510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1208
#, no-wrap
msgid "gitref:eb3397588e1b48043e166587ea454f60efea88d0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1193
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2077
#, no-wrap
msgid "June 26, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1211
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the krpc and nfsd modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1212
#, no-wrap
msgid "1300511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1213
#, no-wrap
msgid "gitref:2622570aeb3d162812d72f7ef192c322cd8b73ef[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1214
#, no-wrap
msgid "July 7, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1216
#, no-wrap
msgid "13.0-STABLE after changing `softdep_prelink()` to only do sync if another thread changed the vnode metadata since previous prelink."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1217
#, no-wrap
msgid "1300512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1218
#, no-wrap
msgid "gitref:f72db34d2295080f57a283858125aa906c0d409e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1219
#, no-wrap
msgid "July 18, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1221
#, no-wrap
msgid "13.0-STABLE after various merges to LinuxKPI, OFED, net80211, and drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1222
#, no-wrap
msgid "1300513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1223
#, no-wrap
msgid "gitref:af732203b8f7f006927528db5497f5cbc4c4742a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1226
#, no-wrap
msgid "13.0-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.1-0-gfed41342a82f, a.k.a. 12.0.1 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1227
#, no-wrap
msgid "1300514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1228
#, no-wrap
msgid "gitref:53d162819c20e5cf267cb91f7a19940e96e8bec4[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1213
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1229
#, no-wrap
msgid "August 3, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1231
#, no-wrap
msgid "Incompatible changes to the KBI of internal interfaces between NFS requires rebuilding modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1232
#, no-wrap
msgid "1300515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1233
#, no-wrap
msgid "gitref:0437d10e359ea1cbefff8d17cd18ca491dbbd5d7[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1234
#, no-wrap
msgid "September 22, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1236
#, no-wrap
msgid "13.0-STABLE returning to 13.0 KBI for linuxkpi."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1237
#, no-wrap
msgid "1300518"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1238
#, no-wrap
msgid "gitref:a017868e281874261a560ba1e3069b4e14b7483e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1223
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1244
#, no-wrap
msgid "October 21, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1241
#, no-wrap
msgid "13.0-STABLE after adding `crypto_cursor_segment()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1242
#, no-wrap
msgid "1300519"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1243
#, no-wrap
msgid "gitref:fe2827f1678b8ff0baf62a1529b2cc121a25b090[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1246
#, no-wrap
msgid "13.0-STABLE after extending the AES-CCM and Chacha20-Poly1305 ciphers in OCF to support multiple nonce lengths."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1247
#, no-wrap
msgid "1300521"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1248
#, no-wrap
msgid "gitref:29745cf91cfc22afa94da0ce43e07a6dc377f631[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1249
#, no-wrap
msgid "November 19, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1251
#, no-wrap
msgid "13.0-STABLE after various merges to LinuxKPI and net80211."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1252
#, no-wrap
msgid "1300522"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1253
#, no-wrap
msgid "gitref:0c8684ae20019b63c6672cc9fa40e1426708b007[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1254
#, no-wrap
msgid "November 24, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1256
#, no-wrap
msgid "13.0-STABLE after changing the internal KAPI between the NFS modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1241
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1257
#, no-wrap
msgid "1300523"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1258
#, no-wrap
msgid "gitref:690bcf605d84283c1f9d254885a3cac69c5e80a6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1259
#, no-wrap
msgid "December 18, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1261
#, no-wrap
msgid "13.0-STABLE after adding two arguments to man:VOP_ALLOCATE[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1262
#, no-wrap
msgid "1300524"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1263
#, no-wrap
msgid "gitref:dc4114875ef10618002d3eeb46f09dc42da56b30[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1264
#, no-wrap
msgid "January 14, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1266
#, no-wrap
msgid "13.0-STABLE after making the CPU_SET macros compatible with glibc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1267
#, no-wrap
msgid "1300525"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1268
#, no-wrap
msgid "gitref:dee0854a009cde7dcdb16ba39754237737022c8a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1269
#, no-wrap
msgid "January 22, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1271
#, no-wrap
msgid "13.0-STABLE after multiple LinuxKPI changes required by drm-kmod."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1272
#, no-wrap
msgid "1300526"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1273
#, no-wrap
msgid "gitref:c39ff2415cb965b729fd16f9eae91e712313877b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1274
#, no-wrap
msgid "February 20, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1276
#, no-wrap
msgid "13.0-STABLE after multiple LinuxKPI changes overlapping but not conflicting with drm-kmod."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1277
#, no-wrap
msgid "1301000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1278
#, no-wrap
msgid "gitref:ad329796bdb29c69bce610ad332d08257d7157ac[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1263
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1284
#, no-wrap
msgid "March 10, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1281
#, no-wrap
msgid "releng/13.1 branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1282
#, no-wrap
msgid "1301500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1267
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1283
#, no-wrap
msgid "gitref:08523c8c63bbcdcd3f0d36787a544817cb5b8282[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1286
#, no-wrap
msgid "13.1-STABLE after releng/13.1 branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1287
#, no-wrap
msgid "1301501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1288
#, no-wrap
msgid "gitref:6663718bb49635deac3f5dc55fa6f0f7cba593ba[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1289
#, no-wrap
msgid "March 27, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1291
#, no-wrap
msgid "13.1-STABLE after various merges to LinuxKPI and net80211."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1276
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1292
#, no-wrap
msgid "1301502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1293
#, no-wrap
msgid "gitref:2278cf4e48e7679b0a60008a83c764fe852174b2[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1294
#, no-wrap
msgid "April 27, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1280
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1295
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1321
#, no-wrap
msgid "13.1-STABLE after various merges to LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1297
#, no-wrap
msgid "1301503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1298
#, no-wrap
msgid "gitref:b2aa64d05bd8b04a1bdb63f2a5f9de39c600b463[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1299
#, no-wrap
msgid "May 19, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1301
#, no-wrap
msgid "13.1-STABLE after adding alternate DRIVER_MODULE macros without a devclass argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1286
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1302
#, no-wrap
msgid "1301504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1303
#, no-wrap
msgid "gitref:a13b6fc61908fd6afa460b88f94e4a67be74bb9a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1304
#, no-wrap
msgid "June 4, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1306
#, no-wrap
msgid "13.1-STABLE after upgrading llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-14.0.3-0-g1f9140064dfb, a.k.a. 14.0.3 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1307
#, no-wrap
msgid "1301505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1308
#, no-wrap
msgid "gitref:6f93a76ffeabf7d4488edc73a0cca01436c2903b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1293
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1319
#, no-wrap
msgid "June 21, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1312
#, no-wrap
msgid "1301506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1313
#, no-wrap
msgid "gitref:8e6cfc632cf6f9fc906df9d825649443939b55c6[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1314
#, no-wrap
msgid "July 13, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1316
#, no-wrap
msgid "13.1-STABLE after after adding <crypto/chacha20_poly1305.h> and <crypto/curve25519.h>."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1301
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1317
#, no-wrap
msgid "1301507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1318
#, no-wrap
msgid "gitref:9cbba5950123f3afedcc5f24c43956e7a26f22f4[repository=\"src\",length=12]"
msgstr ""
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1322
+#, no-wrap
+msgid "1301510"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1323
+#, no-wrap
+msgid "gitref:6820a0512fa6616ee1da46cb0075da80478776f0[repository=\"src\",length=12]"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1324
+#, no-wrap
+msgid "December 8, 2022"
+msgstr ""
+
+#. type: Table
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1326
+#, no-wrap
+msgid "13.1-STABLE after LinuxKPI dmi_matches() fixes."
+msgstr ""
+
#. Template:
#. |13XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |13.0-STABLE after XXXXXX.
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1338
#, no-wrap
msgid "FreeBSD 12 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1341
#, no-wrap
msgid "FreeBSD 12 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1328
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1350
#, no-wrap
msgid "1200000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1351
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302409[302409]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1352
#, no-wrap
msgid "July 7, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1354
#, no-wrap
msgid "12.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1355
#, no-wrap
msgid "1200001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1356
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302628[302628]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1357
#, no-wrap
msgid "July 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1359
#, no-wrap
msgid "12.0-CURRENT after removing collation from `[a-z]`-type ranges."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1360
#, no-wrap
msgid "1200002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1361
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304395[304395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1362
#, no-wrap
msgid "August 18, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1364
#, no-wrap
msgid "12.0-CURRENT after removing unused and obsolete `openbsd_poll` system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1365
#, no-wrap
msgid "1200003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1366
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304608[304608]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1345
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2747
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3733
#, no-wrap
msgid "August 22, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1369
#, no-wrap
msgid "12.0-CURRENT after adding C++11 `thread_local` support in rev link:https://svnweb.freebsd.org/changeset/base/303795[303795]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1370
#, no-wrap
msgid "1200004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1371
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304752[304752]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1372
#, no-wrap
msgid "August 24, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1374
#, no-wrap
msgid "12.0-CURRENT after fixing LC*MASK for man:newlocale[3] and man:querylocale[3] (rev link:https://svnweb.freebsd.org/changeset/base/304703[304703])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1375
#, no-wrap
msgid "1200005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1376
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304789[304789]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1377
#, no-wrap
msgid "August 25, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1379
#, no-wrap
msgid "12.0-CURRENT after changing some ioctl interfaces in rev link:https://svnweb.freebsd.org/changeset/base/304787[304787] between the iSCSI userspace programs and the kernel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1380
#, no-wrap
msgid "1200006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1381
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305256[305256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1382
#, no-wrap
msgid "September 1, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1384
#, no-wrap
msgid "12.0-CURRENT after man:crunchgen[1] META_MODE fix in link:https://svnweb.freebsd.org/changeset/base/305254[305254]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1385
#, no-wrap
msgid "1200007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1386
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305421[305421]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1387
#, no-wrap
msgid "September 5, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1389
#, no-wrap
msgid "12.0-CURRENT after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1390
#, no-wrap
msgid "1200008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1391
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305833[305833]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1392
#, no-wrap
msgid "September 15, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1394
#, no-wrap
msgid "12.0-CURRENT after removing the 4.3BSD compatible macro `m_copy()` in link:https://svnweb.freebsd.org/changeset/base/305824[305824]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1395
#, no-wrap
msgid "1200009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1396
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306077[306077]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1397
#, no-wrap
msgid "September 21, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1399
#, no-wrap
msgid "12.0-CURRENT after removing `bio_taskqueue()` in link:https://svnweb.freebsd.org/changeset/base/305988[305988]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1400
#, no-wrap
msgid "1200010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1401
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306276[306276]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1402
#, no-wrap
msgid "September 23, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1404
#, no-wrap
msgid "12.0-CURRENT after mounting man:msdosfs[5] with longnames support by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1405
#, no-wrap
msgid "1200011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1406
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306556[306556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1407
#, no-wrap
msgid "October 1, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1409
#, no-wrap
msgid "12.0-CURRENT after adding `fb_memattr` field to `fb_info` in link:https://svnweb.freebsd.org/changeset/base/306555[306555]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1410
#, no-wrap
msgid "1200012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1411
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/306592[306592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1412
#, no-wrap
msgid "October 2, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1414
#, no-wrap
msgid "12.0-CURRENT after man:net80211[4] changes (rev link:https://svnweb.freebsd.org/changeset/base/306590[306590], link:https://svnweb.freebsd.org/changeset/base/306591[306591])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1415
#, no-wrap
msgid "1200013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1416
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307140[307140]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1417
#, no-wrap
msgid "October 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1419
#, no-wrap
msgid "12.0-CURRENT after installing header files required development with libzfs_core."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1420
#, no-wrap
msgid "1200014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1421
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307529[307529]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1422
#, no-wrap
msgid "October 17, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1424
#, no-wrap
msgid "12.0-CURRENT after merging common code in man:rtwn[4] and man:urtwn[4], and adding support for 802.11ac devices."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1425
#, no-wrap
msgid "1200015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1426
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308874[308874]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1427
#, no-wrap
msgid "November 20, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1429
#, no-wrap
msgid "12.0-CURRENT after some ABI change for unbreaking powerpc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1430
#, no-wrap
msgid "1200016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1431
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309017[309017]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1432
#, no-wrap
msgid "November 22, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1434
#, no-wrap
msgid "12.0-CURRENT after removing `PG_CACHED`-related fields from `vmmeter`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1435
#, no-wrap
msgid "1200017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1436
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309124[309124]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1437
#, no-wrap
msgid "November 25, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1439
#, no-wrap
msgid "12.0-CURRENT after upgrading our copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.0 release, and adding lld 3.9.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1440
#, no-wrap
msgid "1200018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1441
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/309676[309676]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1442
#, no-wrap
msgid "December 7, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1444
#, no-wrap
msgid "12.0-CURRENT after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1445
#, no-wrap
msgid "1200019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1446
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310149[310149]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1447
#, no-wrap
msgid "December 16, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1449
#, no-wrap
msgid "12.0-CURRENT after starting to lay down the foundation for 11ac support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1450
#, no-wrap
msgid "1200020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1451
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/312087[312087]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1452
#, no-wrap
msgid "January 13, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1454
#, no-wrap
msgid "12.0-CURRENT after removing `fgetsock` and `fputsock`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1455
#, no-wrap
msgid "1200021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1456
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/313858[313858]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1457
#, no-wrap
msgid "February 16, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1459
#, no-wrap
msgid "12.0-CURRENT after removing MCA and EISA support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1460
#, no-wrap
msgid "1200022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1461
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314040[314040]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1462
#, no-wrap
msgid "February 21, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1464
#, no-wrap
msgid "12.0-CURRENT after making the LinuxKPI task struct persistent across system calls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1466
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314373[314373]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1445
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1472
#, no-wrap
msgid "March 2, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1469
#, no-wrap
msgid "12.0-CURRENT after removing System V Release 4 binary compatibility support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1470
#, no-wrap
msgid "1200023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1471
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314564[314564]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1474
#, no-wrap
msgid "12.0-CURRENT after upgrading our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1475
#, no-wrap
msgid "1200024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1476
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/314865[314865]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1477
#, no-wrap
msgid "March 7, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1479
#, no-wrap
msgid "12.0-CURRENT after removal of [.filename]#pcap-int.h#"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1480
#, no-wrap
msgid "1200025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1481
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315430[315430]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1460
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1487
#, no-wrap
msgid "March 16, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1484
#, no-wrap
msgid "12.0-CURRENT after addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1485
#, no-wrap
msgid "1200026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1486
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315662[315662]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1489
#, no-wrap
msgid "12.0-CURRENT after hiding `struct inpcb` and `struct tcpcb` from userland."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1490
#, no-wrap
msgid "1200027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1491
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315673[315673]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1492
#, no-wrap
msgid "March 21, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1494
#, no-wrap
msgid "12.0-CURRENT after making CAM SIM lock optional."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1495
#, no-wrap
msgid "1200028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1496
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316683[316683]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1497
#, no-wrap
msgid "April 10, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1499
#, no-wrap
msgid "12.0-CURRENT after renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()` in link:https://svnweb.freebsd.org/changeset/base/316648[316648]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1478
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1500
#, no-wrap
msgid "1200029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1501
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/317176[317176]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1502
#, no-wrap
msgid "April 19, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1504
#, no-wrap
msgid "12.0-CURRENT after the removal of `struct vmmeter` from `struct pcpu` from link:https://svnweb.freebsd.org/changeset/base/317061[317061]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1505
#, no-wrap
msgid "1200030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1506
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/317383[317383]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1507
#, no-wrap
msgid "April 24, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1509
#, no-wrap
msgid "12.0-CURRENT after removing NATM support including man:en[4], man:fatm[4], man:hatm[4], and man:patm[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1510
#, no-wrap
msgid "1200031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1511
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318736[318736]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1512
#, no-wrap
msgid "May 23, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1514
#, no-wrap
msgid "12.0-CURRENT after types `ino_t`, `dev_t`, `nlink_t` were extended to 64bit and `struct dirent` changed layout (also known as ino64)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1515
#, no-wrap
msgid "1200032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1516
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/319664[319664]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1517
#, no-wrap
msgid "June 8, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1519
#, no-wrap
msgid "12.0-CURRENT after removal of `groff`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1520
#, no-wrap
msgid "1200033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1521
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320043[320043]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1522
#, no-wrap
msgid "June 17, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1524
#, no-wrap
msgid "12.0-CURRENT after the type of the `struct event` member `data` was increased to 64bit, and ext structure members added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1525
#, no-wrap
msgid "1200034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1526
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320085[320085]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1527
#, no-wrap
msgid "June 19, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1529
#, no-wrap
msgid "12.0-CURRENT after the NFS client and server were changed so that they actually use the 64bit `ino_t`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1530
#, no-wrap
msgid "1200035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1531
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320317[320317]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1532
#, no-wrap
msgid "June 24, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1534
#, no-wrap
msgid "12.0-CURRENT after the `MAP_GUARD` man:mmap[2] flag was added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1535
#, no-wrap
msgid "1200036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1536
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320347[320347]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1537
#, no-wrap
msgid "June 26, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1539
#, no-wrap
msgid "12.0-CURRENT after changing `time_t` to 64 bits on powerpc (32-bit version)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1540
#, no-wrap
msgid "1200037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1541
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320545[320545]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1542
#, no-wrap
msgid "July 1, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1544
#, no-wrap
msgid "12.0-CURRENT after the cleanup and inlining of `bus_dmamap*` functions (link:https://svnweb.freebsd.org/changeset/base/320528[320528])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1545
#, no-wrap
msgid "1200038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1546
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320879[320879]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1547
#, no-wrap
msgid "July 10, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1549
#, no-wrap
msgid "12.0-CURRENT after MMC CAM committed. (link:https://svnweb.freebsd.org/changeset/base/320844[320844])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1550
#, no-wrap
msgid "1200039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1551
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321369[321369]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1552
#, no-wrap
msgid "July 22, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1554
#, no-wrap
msgid "12.0-CURRENT after upgrade of copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 5.0.0 (trunk r308421)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1555
#, no-wrap
msgid "1200040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1534
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2859
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321688[321688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1535
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2860
#, no-wrap
msgid "July 29, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1559
#, no-wrap
msgid "12.0-CURRENT after adding NFS client forced dismount support `umount -N`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1560
#, no-wrap
msgid "1200041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1561
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322762[322762]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1562
#, no-wrap
msgid "August 21, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1564
#, no-wrap
msgid "12.0-CURRENT after WRFSBASE instruction become operational on amd64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1565
#, no-wrap
msgid "1200042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1566
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322900[322900]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1567
#, no-wrap
msgid "August 25, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1569
#, no-wrap
msgid "12.0-CURRENT after PLPMTUD counters were changed to use man:counter[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1570
#, no-wrap
msgid "1200043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1571
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/322989[322989]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1572
#, no-wrap
msgid "August 28, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1574
#, no-wrap
msgid "12.0-CURRENT after dropping x86 CACHE_LINE_SIZE down to 64 bytes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1575
#, no-wrap
msgid "1200044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1576
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323349[323349]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1577
#, no-wrap
msgid "September 8, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1579
#, no-wrap
msgid "12.0-CURRENT after implementing `poll_wait()` in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1580
#, no-wrap
msgid "1200045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1559
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1581
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323706[323706]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1582
#, no-wrap
msgid "September 18, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1584
#, no-wrap
msgid "12.0-CURRENT after adding shared memory support to LinuxKPI. (link:https://svnweb.freebsd.org/changeset/base/323703[323703])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1585
#, no-wrap
msgid "1200046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1586
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323910[323910]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1587
#, no-wrap
msgid "September 22, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1589
#, no-wrap
msgid "12.0-CURRENT after adding support for 32-bit compatibility IOCTLs to LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1590
#, no-wrap
msgid "1200047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1591
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324053[324053]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1570
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2847
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2875
#, no-wrap
msgid "September 26, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1572
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1594
#, no-wrap
msgid "12.0-CURRENT after removing M_HASHTYPE_RSS_UDP_IPV4_EX. (link:https://svnweb.freebsd.org/changeset/base/324052[324052])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1595
#, no-wrap
msgid "1200048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1596
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324227[324227]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1597
#, no-wrap
msgid "October 2, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1599
#, no-wrap
msgid "12.0-CURRENT after hiding `struct socket` and `struct unpcb` from userland."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1600
#, no-wrap
msgid "1200049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1601
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324281[324281]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1602
#, no-wrap
msgid "October 4, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1604
#, no-wrap
msgid "12.0-CURRENT after adding the `value.u16` field to `struct diocgattr_arg`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1605
#, no-wrap
msgid "1200050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1606
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324342[324342]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1607
#, no-wrap
msgid "October 5, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1609
#, no-wrap
msgid "12.0-CURRENT after adding the `armv7 MACHINE_ARCH`. (link:https://svnweb.freebsd.org/changeset/base/324340[324340])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1610
#, no-wrap
msgid "1200051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1611
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324455[324455]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1612
#, no-wrap
msgid "October 9, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1614
#, no-wrap
msgid "12.0-CURRENT after removing [.filename]#libstand.a# as a public interface. (link:https://svnweb.freebsd.org/changeset/base/324454[324454])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1615
#, no-wrap
msgid "1200052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1616
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325028[325028]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1617
#, no-wrap
msgid "October 26, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1619
#, no-wrap
msgid "12.0-CURRENT after fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1620
#, no-wrap
msgid "1200053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1621
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325506[325506]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1622
#, no-wrap
msgid "November 7, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1624
#, no-wrap
msgid "12.0-CURRENT after changing `struct mbuf` layout to add optional hardware timestamps for receive packets."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1625
#, no-wrap
msgid "1200054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1626
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325852[325852]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1627
#, no-wrap
msgid "November 15, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1629
#, no-wrap
msgid "12.0-CURRENT after changing the layout of `struct vmtotal` to allow for reporting large memory counters."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1630
#, no-wrap
msgid "1200055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1631
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/327740[327740]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1632
#, no-wrap
msgid "January 9, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1634
#, no-wrap
msgid "12.0-CURRENT after adding `cpucontrol -e` support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1635
#, no-wrap
msgid "1200056"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1636
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/327952[327952]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1637
#, no-wrap
msgid "January 14, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1639
#, no-wrap
msgid "12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r321788)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1640
#, no-wrap
msgid "1200057"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1641
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329033[329033]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1642
#, no-wrap
msgid "February 8, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1644
#, no-wrap
msgid "12.0-CURRENT after applying a clang 6.0.0 fix to make the wine ports build correctly."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1645
#, no-wrap
msgid "1200058"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1646
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329166[329166]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1647
#, no-wrap
msgid "February 12, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1649
#, no-wrap
msgid "12.0-CURRENT after the lua loader was committed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1650
#, no-wrap
msgid "1200059"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1651
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/330299[330299]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1652
#, no-wrap
msgid "March 2, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1654
#, no-wrap
msgid "12.0-CURRENT after removing the declaration of `union semun` unless `_WANT_SEMUN` is defined. Also the removal of `struct mymsg` and the renaming of kernel-only members of `struct semid_ds` and `struct msgid_ds`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1655
#, no-wrap
msgid "1200060"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1656
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/330384[330384]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1657
#, no-wrap
msgid "March 4, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1659
#, no-wrap
msgid "12.0-CURRENT after upgrading clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1660
#, no-wrap
msgid "1200061"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1661
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332100[332100]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1662
#, no-wrap
msgid "April 6, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1664
#, no-wrap
msgid "12.0-CURRENT after changing man:syslog[3] to emit RFC 5424 formatted messages."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1665
#, no-wrap
msgid "1200062"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1666
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332423[332423]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1667
#, no-wrap
msgid "April 12, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1669
#, no-wrap
msgid "12.0-CURRENT after changing the Netmap API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1670
#, no-wrap
msgid "1200063"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1671
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/333446[333446]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1672
#, no-wrap
msgid "May 10, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1674
#, no-wrap
msgid "12.0-CURRENT after reworking CTL frontend and backend options to use man:nv[3], allow creating multiple ioctl frontend ports."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1675
#, no-wrap
msgid "1200064"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1676
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334074[334074]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1677
#, no-wrap
msgid "May 22, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1679
#, no-wrap
msgid "12.0-CURRENT after changing the ifnet address and multicast address TAILQ to CK_STAILQ."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1680
#, no-wrap
msgid "1200065"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1681
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334290[334290]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1682
#, no-wrap
msgid "May 28, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1684
#, no-wrap
msgid "12.0-CURRENT after changing man:dwatch[1] to allow '-E code' to override profile EVENT_DETAILS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1685
#, no-wrap
msgid "1200066"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1686
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334466[334466]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1665
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2912
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2940
#, no-wrap
msgid "June 1, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1689
#, no-wrap
msgid "12.0-CURRENT after removal of in-kernel pmc tables for Intel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1690
#, no-wrap
msgid "1200067"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1691
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334892[334892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1692
#, no-wrap
msgid "June 9, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1694
#, no-wrap
msgid "12.0-CURRENT after adding DW_LANG constants to libdwarf."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1695
#, no-wrap
msgid "1200068"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1696
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334930[334930]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1697
#, no-wrap
msgid "June 12, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1699
#, no-wrap
msgid "12.0-CURRENT after changing the interface between the NFS modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1700
#, no-wrap
msgid "1200069"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1701
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335237[335237]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1702
#, no-wrap
msgid "June 15, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1704
#, no-wrap
msgid "12.0-CURRENT after changing `struct kerneldumpheader` to version 4 (similar to version 2 in 11-STABLE and previous)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1705
#, no-wrap
msgid "1200070"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1706
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335873[335873]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1707
#, no-wrap
msgid "July 2, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1709
#, no-wrap
msgid "12.0-CURRENT after inlining man:atomic[9] in modules on amd64 and i386 requiring all modules of consumers to be rebuilt for these architectures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1710
#, no-wrap
msgid "1200071"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1711
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335930[335930]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1712
#, no-wrap
msgid "July 4, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1714
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of man:epoch[9] (link:https://svnweb.freebsd.org/changeset/base/335924[335924]) requiring modules of consumers to be rebuilt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1715
#, no-wrap
msgid "1200072"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1716
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335979[335979]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1717
#, no-wrap
msgid "July 5, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1719
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of `struct xinpcb` and friends."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1720
#, no-wrap
msgid "1200073"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1721
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336313[336313]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1722
#, no-wrap
msgid "July 15, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1724
#, no-wrap
msgid "12.0-CURRENT after changing the ABI and API of `struct if_shared_ctx` and `struct if_softc_ctx` requiring modules of man:iflib[9] consumers to be rebuilt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1725
#, no-wrap
msgid "1200074"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1726
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336360[336360]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1727
#, no-wrap
msgid "July 16, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1729
#, no-wrap
msgid "12.0-CURRENT after updating the configuration of libstdc++ to make use of C99 functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1730
#, no-wrap
msgid "1200075"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1731
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336538[336538]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1732
#, no-wrap
msgid "July 19, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1734
#, no-wrap
msgid "12.0-CURRENT after zfsloader being folded into loader, and after adding ntpd:ntpd as uid:gid 123:123, and after removing arm big-endian support (MACHINE_ARCH=armeb)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1735
#, no-wrap
msgid "1200076"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1736
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/336914[336914]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1737
#, no-wrap
msgid "July 30, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1739
#, no-wrap
msgid "12.0-CURRENT after KPI changes to timespecadd."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1740
#, no-wrap
msgid "1200077"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1741
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/337576[337576]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1742
#, no-wrap
msgid "August 10, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1744
#, no-wrap
msgid "12.0-CURRENT after man:timespec_get[3] was added to the system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1745
#, no-wrap
msgid "1200078"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1746
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/337863[337863]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1747
#, no-wrap
msgid "August 15, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1749
#, no-wrap
msgid "12.0-CURRENT after exec.created hook for jails."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1750
#, no-wrap
msgid "1200079"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1751
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338061[338061]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1752
#, no-wrap
msgid "August 19, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1754
#, no-wrap
msgid "12.0-CURRENT after converting `arc4random` to using the Chacha20 algorithm and deprecating `arc4random_stir` and `arc4random_addrandom`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1755
#, no-wrap
msgid "1200080"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1756
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338172[338172]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1757
#, no-wrap
msgid "August 22, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1759
#, no-wrap
msgid "12.0-CURRENT after removing the drm drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1760
#, no-wrap
msgid "1200081"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1761
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338182[338182]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1762
#, no-wrap
msgid "August 21, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1764
#, no-wrap
msgid "12.0-CURRENT after KPI changes to NVMe."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1765
#, no-wrap
msgid "1200082"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1766
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338285[338285]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1767
#, no-wrap
msgid "August 24, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1769
#, no-wrap
msgid "12.0-CURRENT after reverting the removal of the drm drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1770
#, no-wrap
msgid "1200083"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1771
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338331[338331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1772
#, no-wrap
msgid "August 26, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1774
#, no-wrap
msgid "12.0-CURRENT after removing `arc4random_stir` and `arc4random_addrandom`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1775
#, no-wrap
msgid "1200084"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1776
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338478[338478]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1777
#, no-wrap
msgid "September 5, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1779
#, no-wrap
msgid "12.0-CURRENT after updating man:objcopy[1] to properly handle little-endian MIPS64 object files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1780
#, no-wrap
msgid "1200085"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1781
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339270[339270]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1784
#, no-wrap
msgid "12.0-STABLE after updating OpenSSL to version 1.1.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1785
#, no-wrap
msgid "1200086"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1786
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/339732[339732]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1789
#, no-wrap
msgid "12.0-STABLE after updating OpenSSL shared library version numbers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1790
#, no-wrap
msgid "1200500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1791
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340471[340471]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1792
#, no-wrap
msgid "November 16, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1794
#, no-wrap
msgid "12-STABLE after releng/12.0 was branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1795
#, no-wrap
msgid "1200501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1796
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342801[342801]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1775
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2965
#, no-wrap
msgid "January 6, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1799
#, no-wrap
msgid "12-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1800
#, no-wrap
msgid "1200502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1801
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/343126[343126]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1802
#, no-wrap
msgid "January 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1804
#, no-wrap
msgid "12-STABLE after enabling sys/random.h #include from C++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1805
#, no-wrap
msgid "1200503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1806
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344152[344152]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1807
#, no-wrap
msgid "Febrary 15, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1809
#, no-wrap
msgid "12-STABLE after merge of fixing man:renameat[2] for CAPABILITIES kernels."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1810
#, no-wrap
msgid "1200504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1811
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345169[345169]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1814
#, no-wrap
msgid "12-STABLE after merging CCM for the benefit of the ZoF port."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1815
#, no-wrap
msgid "1200505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1816
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/345327[345327]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1817
#, no-wrap
msgid "March 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1819
#, no-wrap
msgid "12-STABLE after merging support for selectively disabling ZFS without disabling loader."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1820
#, no-wrap
msgid "1200506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1821
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346168[346168]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1822
#, no-wrap
msgid "April 12, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1824
#, no-wrap
msgid "12-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1825
#, no-wrap
msgid "1200507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1826
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346337[346337]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1827
#, no-wrap
msgid "April 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1829
#, no-wrap
msgid "12-STABLE after MFC of iflib changes in link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1830
#, no-wrap
msgid "1200508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1809
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2979
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346784[346784]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1810
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2980
#, no-wrap
msgid "April 27, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1834
#, no-wrap
msgid "12-STABLE after ether_gen_addr availability."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1835
#, no-wrap
msgid "1200509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1836
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347790[347790]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1815
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2990
#, no-wrap
msgid "May 16, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1839
#, no-wrap
msgid "12-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1840
#, no-wrap
msgid "1200510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1841
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348036[348036]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1842
#, no-wrap
msgid "May 21, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1844
#, no-wrap
msgid "12-STABLE after change to struct in linuxkpi from link:https://svnweb.freebsd.org/changeset/base/348035[348035]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1845
#, no-wrap
msgid "1200511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1846
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348243[348243]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1825
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1852
#, no-wrap
msgid "May 24, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1849
#, no-wrap
msgid "12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/347843[347843]: adding group_leader member to struct task_struct to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1850
#, no-wrap
msgid "1200512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1851
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/348245[348245]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1854
#, no-wrap
msgid "12-STABLE after adding context member to ww_mutex in LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1855
#, no-wrap
msgid "1200513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1856
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349763[349763]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1857
#, no-wrap
msgid "July 5, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1859
#, no-wrap
msgid "12-STABLE after MFC of man:epoch[9] changes: link:https://svnweb.freebsd.org/changeset/base/349763[349763], link:https://svnweb.freebsd.org/changeset/base/340404[340404], link:https://svnweb.freebsd.org/changeset/base/340415[340415], link:https://svnweb.freebsd.org/changeset/base/340417[340417], link:https://svnweb.freebsd.org/changeset/base/340419[340419], link:https://svnweb.freebsd.org/changeset/base/340420[340420]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1860
#, no-wrap
msgid "1200514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1861
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350083[350083]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1862
#, no-wrap
msgid "July 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1864
#, no-wrap
msgid "12-STABLE after additions to LinuxKPI's rcu list."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1865
#, no-wrap
msgid "1200515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1866
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/350877[350877]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1867
#, no-wrap
msgid "August 11, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1869
#, no-wrap
msgid "12-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/349891[349891] (reorganize the SRCS lists as one file per line, and then alphabetize them) and link:https://svnweb.freebsd.org/changeset/base/349972[349972] (add `arm_sync_icache()` and `arm_drain_writebuf()` sysarch syscall wrappers)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1870
#, no-wrap
msgid "1200516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1871
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/351276[351276]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1872
#, no-wrap
msgid "August 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1874
#, no-wrap
msgid "12-STABLE after MFC of various changes to iflib link:https://svnweb.freebsd.org/changeset/base/351276[351276]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1875
#, no-wrap
msgid "1200517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1876
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352076[352076]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1879
#, no-wrap
msgid "12-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1880
#, no-wrap
msgid "1200518"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1881
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352114[352114]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1882
#, no-wrap
msgid "September 10, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1884
#, no-wrap
msgid "12-STABLE after additional updates to LinuxKPI's sysfs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1885
#, no-wrap
msgid "1200519"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1886
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352351[352351]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1887
#, no-wrap
msgid "September 15, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1889
#, no-wrap
msgid "12-STABLE after MFC of the new fusefs driver."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1890
#, no-wrap
msgid "1201000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1891
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352546[352546]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1870
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1897
#, no-wrap
msgid "September 20, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1894
#, no-wrap
msgid "releng/12.1 branched from stable/12@r352480."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1895
#, no-wrap
msgid "1201500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1896
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/352547[352547]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1899
#, no-wrap
msgid "12-STABLE after branching releng/12.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1900
#, no-wrap
msgid "1201501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1879
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3004
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354598[354598]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1880
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1895
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3005
#, no-wrap
msgid "November 10, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1904
#, no-wrap
msgid "12-STABLE after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1905
#, no-wrap
msgid "1201502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1906
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354613[354613]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1885
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2987
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2992
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3020
#, no-wrap
msgid "November 11, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1909
#, no-wrap
msgid "12-STABLE after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1910
#, no-wrap
msgid "1201503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1911
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354928[354928]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1914
#, no-wrap
msgid "12-STABLE after adding support for `AT_EXECPATH` to man:elf_aux_info[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1915
#, no-wrap
msgid "1201504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1919
#, no-wrap
msgid "12-STABLE after correcting the C++ version check for declaring man:timespec_get[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1920
#, no-wrap
msgid "1201505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1899
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3024
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355899[355899]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1900
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3025
#, no-wrap
msgid "December 19, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1924
#, no-wrap
msgid "12-STABLE after adding sigsetop extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1925
#, no-wrap
msgid "1201506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1926
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/355968[355968]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1927
#, no-wrap
msgid "December 21, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1929
#, no-wrap
msgid "12-STABLE after doubling the value of `ARG_MAX`, for 64 bit platforms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1930
#, no-wrap
msgid "1201507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1931
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356306[356306]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1934
#, no-wrap
msgid "12-STABLE after adding functions to man:bitstring[3] to find contiguous sequences of set or unset bits."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1935
#, no-wrap
msgid "1201508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1936
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356394[356394]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1939
#, no-wrap
msgid "12-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1940
#, no-wrap
msgid "1201509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1941
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356460[356460]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1942
#, no-wrap
msgid "January 7, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1944
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1945
#, no-wrap
msgid "1201510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1946
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356679[356679]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1925
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3012
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3808
#, no-wrap
msgid "January 13, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1949
#, no-wrap
msgid "12-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1950
#, no-wrap
msgid "1201511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1951
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357333[357333]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1952
#, no-wrap
msgid "January 31, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1954
#, no-wrap
msgid "12-STABLE after adding [.filename]#/etc/os-release# as a symbolic link to [.filename]#/var/run/os-release#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1955
#, no-wrap
msgid "1201512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1956
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357612[357612]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1935
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3040
#, no-wrap
msgid "February 6, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1959
#, no-wrap
msgid "12-STABLE after recent LinuxKPI changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1960
#, no-wrap
msgid "1201513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1961
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359957[359957]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1940
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3045
#, no-wrap
msgid "April 15, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1964
#, no-wrap
msgid "12-STABLE after cloning the RCU interface into a sleepable and a non-sleepable part in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1965
#, no-wrap
msgid "1201514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1966
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360525[360525]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1945
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1972
#, no-wrap
msgid "May 1, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1969
#, no-wrap
msgid "12-STABLE after implementing full man:bus_dma[9] support in the LinuxKPI and pulling in all dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1970
#, no-wrap
msgid "1201515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1971
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360545[360545]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1974
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1975
#, no-wrap
msgid "1201516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1976
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360620[360620]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1977
#, no-wrap
msgid "May 4, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1979
#, no-wrap
msgid "12-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1980
#, no-wrap
msgid "1201517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1981
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/361350[361350]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1982
#, no-wrap
msgid "May 21, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1984
#, no-wrap
msgid "12-STABLE after renaming `vm.max_wired` to `vm.max_user_wired` and changing its type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1985
#, no-wrap
msgid "1201518"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1986
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362319[362319]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1965
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3075
#, no-wrap
msgid "June 18, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1989
#, no-wrap
msgid "12-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1990
#, no-wrap
msgid "1201519"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1991
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362916[362916]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1970
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3080
#, no-wrap
msgid "July 4, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1994
#, no-wrap
msgid "12-STABLE after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1995
#, no-wrap
msgid "1201520"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1996
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363494[363494]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1975
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3085
#, no-wrap
msgid "July 24, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1999
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2000
#, no-wrap
msgid "1201521"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2001
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363790[363790]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1980
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3090
#, no-wrap
msgid "August 3, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2004
#, no-wrap
msgid "12-STABLE after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2005
#, no-wrap
msgid "1201522"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2006
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363832[363832]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2007
#, no-wrap
msgid "August 4, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2009
#, no-wrap
msgid "12-STABLE after adding sysctlbyname system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2010
#, no-wrap
msgid "1201523"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2011
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364390[364390]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1990
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3095
#, no-wrap
msgid "August 19, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2014
#, no-wrap
msgid "12-STABLE after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2015
#, no-wrap
msgid "1201524"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2016
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365356[365356]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2017
#, no-wrap
msgid "September 5, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2019
#, no-wrap
msgid "12-STABLE after splitting XDR off into a separate kernel module, to minimize ZFS dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2020
#, no-wrap
msgid "1201525"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:1999
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3099
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365471[365471]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2002
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2089
#, no-wrap
msgid "12-STABLE after adding atomic and bswap functions to libcompiler_rt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2025
#, no-wrap
msgid "1201526"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2026
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365608[365608]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2027
#, no-wrap
msgid "September 10, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2029
#, no-wrap
msgid "12-STABLE after updating net80211 and kernel privilege checking API changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2030
#, no-wrap
msgid "1202000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2031
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365618[365618]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2010
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2037
#, no-wrap
msgid "September 11, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2034
#, no-wrap
msgid "releng/12.2 branched from stable/12@r365618."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2035
#, no-wrap
msgid "1202500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2036
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365619[365619]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2039
#, no-wrap
msgid "12-STABLE after branching releng/12.2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2040
#, no-wrap
msgid "1202501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2019
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3104
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365661[365661]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2020
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3105
#, no-wrap
msgid "September 12, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2044
#, no-wrap
msgid "12-STABLE after followup commits to libcompiler_rt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2045
#, no-wrap
msgid "1202502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2046
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/365816[365816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2047
#, no-wrap
msgid "September 16, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2049
#, no-wrap
msgid "12-STABLE after fixing man:crunchgen[1] application build with `WARNS=6`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2050
#, no-wrap
msgid "1202503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2051
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366878[366878]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2054
#, no-wrap
msgid "12-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2055
#, no-wrap
msgid "1202504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2056
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367511[367511]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2059
#, no-wrap
msgid "12-STABLE after the addition of man:ptsname_r[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2060
#, no-wrap
msgid "1202505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2061
#, no-wrap
msgid "gitref:f3d75bed5475b15f21edf4052665b1212b548bd0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2062
#, no-wrap
msgid "December 28, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2064
#, no-wrap
msgid "12-STABLE after improving handling of alternate settings in the USB stack."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2065
#, no-wrap
msgid "1202506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2066
#, no-wrap
msgid "gitref:d36cc12ddfe3335ec8306bd4b393f11069551fa0[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2069
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the krpc and NFS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2070
#, no-wrap
msgid "1202507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2071
#, no-wrap
msgid "gitref:1e279fe9deaea1c5e3503117dd3077dcffb1276d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2074
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the nscl.ko and nfscommon.ko modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2075
#, no-wrap
msgid "1202508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2076
#, no-wrap
msgid "gitref:489236b0474857b0a7a2df77c302290e12be9e7b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2079
#, no-wrap
msgid "12-STABLE after changing the internal KAPI between the krpc and nfsd modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2080
#, no-wrap
msgid "1203500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2081
#, no-wrap
msgid "gitref:f2900e784cb024e55ec0f5cd6834af5fadcb9f9a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2082
#, no-wrap
msgid "October 20, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2084
#, no-wrap
msgid "12-STABLE after branching releng/12.3."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2085
#, no-wrap
msgid "1203501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2086
#, no-wrap
msgid "gitref:b148c7b87148b653fdbef9c5aa591b9abcd99e26[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2065
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2092
#, no-wrap
msgid "December 22, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2090
#, no-wrap
msgid "1203502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2091
#, no-wrap
msgid "gitref:4772e4135cb3fe7f25531894f3b02f35ec086bda[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2094
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 11.0.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2095
#, no-wrap
msgid "1203503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2096
#, no-wrap
msgid "gitref:e405b2dc913c99189aa9b923ed686a790253cc7e[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2075
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2080
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2107
#, no-wrap
msgid "December 25, 2021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2099
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 12.0.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2100
#, no-wrap
msgid "1203504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2101
#, no-wrap
msgid "gitref:1a398266112e73f91a4f2e2701ceefd3f2948aac[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2104
#, no-wrap
msgid "12-STABLE after adding out-of-line LSE atomics helpers to [.filename]#libcompiler_rt.a# on aarch64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2105
#, no-wrap
msgid "1203505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2106
#, no-wrap
msgid "gitref:0b7be89b329e0f862c25f34abfb13c75a4d45f2a[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2109
#, no-wrap
msgid "12-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 13.0.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2110
#, no-wrap
msgid "1203506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2111
#, no-wrap
msgid "gitref:f591279d9c93bc2ea9cd1a447c2df11d437fbc7b[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2112
#, no-wrap
msgid "February 12, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2114
#, no-wrap
msgid "12-STABLE after restoring availability tradeoff of random(4)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2115
#, no-wrap
msgid "1203507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2116
#, no-wrap
msgid "gitref:180d95e04e938328de8f2a24d16fdb5049e15262[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2117
#, no-wrap
msgid "April 9, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2119
#, no-wrap
msgid "12-STABLE after zlib unification."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2120
#, no-wrap
msgid "1204000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2121
#, no-wrap
msgid "gitref:fce871fe35204527a2ce08e43e1572ae9295cc00[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2100
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2127
#, no-wrap
msgid "October 20, 2022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2124
#, no-wrap
msgid "releng/12.4 branched from stable/12."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2125
#, no-wrap
msgid "1204500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2126
#, no-wrap
msgid "gitref:6a9031c5e2ba5435aa4ea08ee05c351d5bef035d[repository=\"src\",length=12]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2129
#, no-wrap
msgid "12-STABLE after branching releng/12.4."
msgstr ""
#. Template:
#. |12XXXXX
#. |gitref:XXXXXXXX[repository="src",length=12]
#. |October 30, 2021
#. |12-STABLE after XXXXXX.
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2141
#, no-wrap
msgid "FreeBSD 11 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2144
#, no-wrap
msgid "FreeBSD 11 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2153
#, no-wrap
msgid "1100000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2154
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256284[256284]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2132
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3428
#, no-wrap
msgid "October 10, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2157
#, no-wrap
msgid "11.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2158
#, no-wrap
msgid "1100001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2159
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256776[256776]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2160
#, no-wrap
msgid "October 19, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2162
#, no-wrap
msgid "11.0-CURRENT after addition of support for \"first boot\" [.filename]#rc.d# scripts, so ports can make use of this."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2163
#, no-wrap
msgid "1100002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2164
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/257696[257696]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2165
#, no-wrap
msgid "November 5, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2167
#, no-wrap
msgid "11.0-CURRENT after dropping support for historic ioctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2168
#, no-wrap
msgid "1100003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2169
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/258284[258284]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2170
#, no-wrap
msgid "November 17, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2172
#, no-wrap
msgid "11.0-CURRENT after iconv changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2173
#, no-wrap
msgid "1100004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2174
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259424[259424]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2152
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3453
#, no-wrap
msgid "December 15, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2177
#, no-wrap
msgid "11.0-CURRENT after the behavior change of `gss_pseudo_random` introduced in link:https://svnweb.freebsd.org/changeset/base/259286[259286]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2178
#, no-wrap
msgid "1100005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2179
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260010[260010]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2180
#, no-wrap
msgid "December 28, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2182
#, no-wrap
msgid "11.0-CURRENT after link:https://svnweb.freebsd.org/changeset/base/259951[259951] - Do not coalesce entries in man:vm_map_stack[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2183
#, no-wrap
msgid "1100006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2184
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261246[261246]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2185
#, no-wrap
msgid "January 28, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2187
#, no-wrap
msgid "11.0-CURRENT after upgrades of libelf and libdwarf."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2188
#, no-wrap
msgid "1100007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2189
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261283[261283]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2190
#, no-wrap
msgid "January 30, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2192
#, no-wrap
msgid "11.0-CURRENT after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2193
#, no-wrap
msgid "1100008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2194
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261881[261881]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2195
#, no-wrap
msgid "February 14, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2197
#, no-wrap
msgid "11.0-CURRENT after libc++ 3.4 ABI compatibility fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2198
#, no-wrap
msgid "1100009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2199
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/261991[261991]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2200
#, no-wrap
msgid "February 16, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2202
#, no-wrap
msgid "11.0-CURRENT after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2203
#, no-wrap
msgid "1100010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2204
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262630[262630]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2205
#, no-wrap
msgid "February 28, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2207
#, no-wrap
msgid "11.0-CURRENT after upgrade of ncurses to 5.9 release (rev link:https://svnweb.freebsd.org/changeset/base/262629[262629])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2208
#, no-wrap
msgid "1100011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2209
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263102[263102]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2210
#, no-wrap
msgid "March 13, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2212
#, no-wrap
msgid "11.0-CURRENT after ABI change in struct if_data."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2213
#, no-wrap
msgid "1100012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2214
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263140[263140]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2192
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2197
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4166
#, no-wrap
msgid "March 14, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2217
#, no-wrap
msgid "11.0-CURRENT after removal of Novell IPX protocol support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2218
#, no-wrap
msgid "1100013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2219
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263152[263152]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2222
#, no-wrap
msgid "11.0-CURRENT after removal of AppleTalk protocol support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2223
#, no-wrap
msgid "1100014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2224
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263235[263235]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2225
#, no-wrap
msgid "March 16, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2227
#, no-wrap
msgid "11.0-CURRENT after renaming [.filename]#<sys/capability.h># to [.filename]#<sys/capsicum.h># to avoid a clash with similarly named headers in other operating systems. A compatibility header is left in place to limit build breakage, but will be deprecated in due course."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2228
#, no-wrap
msgid "1100015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2229
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263620[263620]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2230
#, no-wrap
msgid "March 22, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2232
#, no-wrap
msgid "11.0-CURRENT after `cnt` rename to `vm_cnt`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2233
#, no-wrap
msgid "1100016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2234
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263660[263660]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2235
#, no-wrap
msgid "March 23, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2237
#, no-wrap
msgid "11.0-CURRENT after addition of `armv6hf TARGET_ARCH`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2238
#, no-wrap
msgid "1100017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2239
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264121[264121]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2240
#, no-wrap
msgid "April 4, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2242
#, no-wrap
msgid "11.0-CURRENT after GCC support for `__block` definition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2243
#, no-wrap
msgid "1100018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2244
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264212[264212]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2222
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3478
#, no-wrap
msgid "April 6, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2247
#, no-wrap
msgid "11.0-CURRENT after support for UDP-Lite protocol (RFC 3828)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2248
#, no-wrap
msgid "1100019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2226
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3459
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4180
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264289[264289]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2227
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3483
#, no-wrap
msgid "April 8, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2252
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:06.openssl (rev link:https://svnweb.freebsd.org/changeset/base/264265[264265])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2253
#, no-wrap
msgid "1100020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2254
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265215[265215]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2255
#, no-wrap
msgid "May 1, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2257
#, no-wrap
msgid "11.0-CURRENT after removing lindev in favor of having /dev/full by default (rev link:https://svnweb.freebsd.org/changeset/base/265212[265212])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2258
#, no-wrap
msgid "1100021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2259
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/266151[266151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2260
#, no-wrap
msgid "May 6, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2262
#, no-wrap
msgid "11.0-CURRENT after [.filename]#src.opts.mk# changes, decoupling man:make.conf[5] from `buildworld` (rev link:https://svnweb.freebsd.org/changeset/base/265419[265419])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2263
#, no-wrap
msgid "1100022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2241
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2264
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/266904[266904]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2265
#, no-wrap
msgid "May 30, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2267
#, no-wrap
msgid "11.0-CURRENT after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]#<string.h># to [.filename]#<strings.h># for POSIX 2008 compliance (rev link:https://svnweb.freebsd.org/changeset/base/266865[266865])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2268
#, no-wrap
msgid "1100023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2269
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267440[267440]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2247
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3498
#, no-wrap
msgid "June 13, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2272
#, no-wrap
msgid "11.0-CURRENT after the CUSE library and kernel module have been attached to the build by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2273
#, no-wrap
msgid "1100024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2274
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267992[267992]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2275
#, no-wrap
msgid "June 27, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2277
#, no-wrap
msgid "11.0-CURRENT after man:sysctl[3] API change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2278
#, no-wrap
msgid "1100025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2279
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268066[268066]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2280
#, no-wrap
msgid "June 30, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2282
#, no-wrap
msgid "11.0-CURRENT after man:regex[3] library update to add \">\" and \"<\" delimiters."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2283
#, no-wrap
msgid "1100026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2284
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268118[268118]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2285
#, no-wrap
msgid "July 1, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2287
#, no-wrap
msgid "11.0-CURRENT after the internal interface between the NFS modules, including the krpc, was changed by (rev link:https://svnweb.freebsd.org/changeset/base/268115[268115])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2288
#, no-wrap
msgid "1100027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2289
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268441[268441]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2267
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3480
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4201
#, no-wrap
msgid "July 8, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2292
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268431[268431])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2293
#, no-wrap
msgid "1100028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2294
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268945[268945]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2295
#, no-wrap
msgid "July 21, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2297
#, no-wrap
msgid "11.0-CURRENT after man:hdestroy[3] compliance fix changed ABI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2298
#, no-wrap
msgid "1100029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2276
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2299
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270173[270173]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2277
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3490
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3518
#, no-wrap
msgid "August 3, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2302
#, no-wrap
msgid "11.0-CURRENT after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269489[269489])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2303
#, no-wrap
msgid "1100030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2304
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270929[270929]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2305
#, no-wrap
msgid "September 1, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2307
#, no-wrap
msgid "11.0-CURRENT after `SOCK_RAW` sockets were changed to not modify packets at all."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2308
#, no-wrap
msgid "1100031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2286
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3499
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4187
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4998
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271341[271341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2287
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2297
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3500
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4188
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4999
#, no-wrap
msgid "September 9, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2312
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:18.openssl (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2313
#, no-wrap
msgid "1100032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2314
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271438[271438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2315
#, no-wrap
msgid "September 11, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2317
#, no-wrap
msgid "11.0-CURRENT after API changes to `ifa_ifwithbroadaddr`, `ifa_ifwithdstaddr`, `ifa_ifwithnet`, and `ifa_ifwithroute`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2318
#, no-wrap
msgid "1100033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2319
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271657[271657]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2322
#, no-wrap
msgid "11.0-CURRENT after changing `access`, `eaccess`, and `faccessat` to validate the mode argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2323
#, no-wrap
msgid "1100034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2301
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3504
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4192
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5003
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271686[271686]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2302
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3505
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4193
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5004
#, no-wrap
msgid "September 16, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2327
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:19.tcp (rev link:https://svnweb.freebsd.org/changeset/base/271666[271666])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2328
#, no-wrap
msgid "1100035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2329
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271705[271705]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2307
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2335
#, no-wrap
msgid "September 17, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2332
#, no-wrap
msgid "11.0-CURRENT after i915 HW context support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2333
#, no-wrap
msgid "1100036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2334
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271724[271724]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2337
#, no-wrap
msgid "Version bump to have ABI note distinguish binaries ready for strict man:mmap[2] flags checking (rev link:https://svnweb.freebsd.org/changeset/base/271724[271724])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2338
#, no-wrap
msgid "1100037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2339
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272674[272674]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2340
#, no-wrap
msgid "October 6, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2342
#, no-wrap
msgid "11.0-CURRENT after addition of man:explicit_bzero[3] (rev link:https://svnweb.freebsd.org/changeset/base/272673[272673])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2343
#, no-wrap
msgid "1100038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2321
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2344
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272951[272951]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2345
#, no-wrap
msgid "October 11, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2347
#, no-wrap
msgid "11.0-CURRENT after cleanup of TCP wrapper headers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2348
#, no-wrap
msgid "1100039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2326
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2349
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273250[273250]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2350
#, no-wrap
msgid "October 18, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2352
#, no-wrap
msgid "11.0-CURRENT after removal of `MAP_RENAME` and `MAP_NORESERVE`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2353
#, no-wrap
msgid "1100040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2331
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3524
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4197
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5008
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273432[273432]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2332
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3525
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4198
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5009
#, no-wrap
msgid "October 21, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2357
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273146[273146])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2358
#, no-wrap
msgid "1100041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2336
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2359
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/273875[273875]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2360
#, no-wrap
msgid "October 30, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2362
#, no-wrap
msgid "11.0-CURRENT after API changes to `syscall_register`, `syscall32_register`, `syscall_register_helper` and `syscall32_register_helper` (rev link:https://svnweb.freebsd.org/changeset/base/273707[273707])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2363
#, no-wrap
msgid "1100042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2364
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274046[274046]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2365
#, no-wrap
msgid "November 3, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2367
#, no-wrap
msgid "11.0-CURRENT after a change to `struct tcpcb`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2368
#, no-wrap
msgid "1100043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2369
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274085[274085]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2347
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2352
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2357
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3530
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4203
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5014
#, no-wrap
msgid "November 4, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2372
#, no-wrap
msgid "11.0-CURRENT after enabling man:vt[4] by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2373
#, no-wrap
msgid "1100044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2374
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274116[274116]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2377
#, no-wrap
msgid "11.0-CURRENT after adding new libraries/utilities (dpv and figpar) for data throughput visualization."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2378
#, no-wrap
msgid "1100045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2356
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3529
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4202
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5013
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274162[274162]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2382
#, no-wrap
msgid "11.0-CURRENT after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2383
#, no-wrap
msgid "1100046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2384
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274470[274470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2362
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2390
#, no-wrap
msgid "November 13, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2387
#, no-wrap
msgid "11.0-CURRENT after `kern_poll` signature change (rev link:https://svnweb.freebsd.org/changeset/base/274462[274462])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2388
#, no-wrap
msgid "1100047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2389
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/274476[274476]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2392
#, no-wrap
msgid "11.0-CURRENT after removal of no-at version of VFS syscalls helpers, like `kern_open`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2393
#, no-wrap
msgid "1100048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2394
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275358[275358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2395
#, no-wrap
msgid "December 1, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2397
#, no-wrap
msgid "11.0-CURRENT after starting the process of removing the use of the deprecated \"M_FLOWID\" flag from the network code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2398
#, no-wrap
msgid "1100049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2399
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275633[275633]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2400
#, no-wrap
msgid "December 9, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2402
#, no-wrap
msgid "11.0-CURRENT after importing an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2403
#, no-wrap
msgid "1100050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2404
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275732[275732]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2405
#, no-wrap
msgid "December 12, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2407
#, no-wrap
msgid "11.0-CURRENT after adding AES-ICM and AES-GCM to OpenCrypto."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2408
#, no-wrap
msgid "1100051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2409
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276096[276096]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2410
#, no-wrap
msgid "December 23, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2412
#, no-wrap
msgid "11.0-CURRENT after removing old NFS client and server code from the kernel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2413
#, no-wrap
msgid "1100052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2414
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276479[276479]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2415
#, no-wrap
msgid "December 31, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2417
#, no-wrap
msgid "11.0-CURRENT after upgrade of clang, llvm and lldb to 3.5.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2418
#, no-wrap
msgid "1100053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2419
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276781[276781]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2420
#, no-wrap
msgid "January 7, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2422
#, no-wrap
msgid "11.0-CURRENT after man:MCLGET[9] gained a return value (rev link:https://svnweb.freebsd.org/changeset/base/276750[276750])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2423
#, no-wrap
msgid "1100054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2424
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277213[277213]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2425
#, no-wrap
msgid "January 15, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2427
#, no-wrap
msgid "11.0-CURRENT after rewrite of callout subsystem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2428
#, no-wrap
msgid "1100055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2406
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2429
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277528[277528]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2430
#, no-wrap
msgid "January 22, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2432
#, no-wrap
msgid "11.0-CURRENT after reverting callout changes in link:https://svnweb.freebsd.org/changeset/base/277213[277213]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2433
#, no-wrap
msgid "1100056"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2434
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277610[277610]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2435
#, no-wrap
msgid "January 23, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2437
#, no-wrap
msgid "11.0-CURRENT after addition of `futimens` and `utimensat` system calls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2438
#, no-wrap
msgid "1100057"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2416
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2439
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277897[277897]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2440
#, no-wrap
msgid "January 29, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2442
#, no-wrap
msgid "11.0-CURRENT after removal of d_thread_t."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2443
#, no-wrap
msgid "1100058"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2444
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278228[278228]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2445
#, no-wrap
msgid "February 5, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2447
#, no-wrap
msgid "11.0-CURRENT after addition of support for probing the SCSI VPD Extended Inquiry page (0x86)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2448
#, no-wrap
msgid "1100059"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2449
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278442[278442]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2450
#, no-wrap
msgid "February 9, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2452
#, no-wrap
msgid "11.0-CURRENT after import of xz 5.2.0, which added multi-threaded compression and lzma gained libthr dependency (rev link:https://svnweb.freebsd.org/changeset/base/278433[278433])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2453
#, no-wrap
msgid "1100060"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2454
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278846[278846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2455
#, no-wrap
msgid "February 16, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2457
#, no-wrap
msgid "11.0-CURRENT after forwarding `FBIO_BLANK` to framebuffer clients."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2458
#, no-wrap
msgid "1100061"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2459
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278964[278964]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2437
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3583
#, no-wrap
msgid "February 18, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2462
#, no-wrap
msgid "11.0-CURRENT after `CDAI_FLAG_NONE` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2463
#, no-wrap
msgid "1100062"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2464
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279221[279221]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2465
#, no-wrap
msgid "February 23, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2467
#, no-wrap
msgid "11.0-CURRENT after man:mtio[4] and man:sa[4] API and man:ioctl[2] additions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2468
#, no-wrap
msgid "1100063"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2469
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279728[279728]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2447
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2475
#, no-wrap
msgid "March 7, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2472
#, no-wrap
msgid "11.0-CURRENT after adding mutex support to the `pps_ioctl()` API in the kernel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2473
#, no-wrap
msgid "1100064"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2474
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279729[279729]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2477
#, no-wrap
msgid "11.0-CURRENT after adding PPS support to USB serial drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2478
#, no-wrap
msgid "1100065"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2479
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280031[280031]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2480
#, no-wrap
msgid "March 15, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2482
#, no-wrap
msgid "11.0-CURRENT after upgrading clang, llvm and lldb to 3.6.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2483
#, no-wrap
msgid "1100066"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2484
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280306[280306]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2485
#, no-wrap
msgid "March 20, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2487
#, no-wrap
msgid "11.0-CURRENT after removal of SSLv2 support from OpenSSL."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2488
#, no-wrap
msgid "1100067"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2489
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280630[280630]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2490
#, no-wrap
msgid "March 25, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2492
#, no-wrap
msgid "11.0-CURRENT after removal of SSLv2 support from man:fetch[1] and man:fetch[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2493
#, no-wrap
msgid "1100068"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2471
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2494
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281172[281172]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2495
#, no-wrap
msgid "April 6, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2497
#, no-wrap
msgid "11.0-CURRENT after change to net.inet6.ip6.mif6table sysctl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2498
#, no-wrap
msgid "1100069"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2499
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281550[281550]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2500
#, no-wrap
msgid "April 15, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2502
#, no-wrap
msgid "11.0-CURRENT after removal of const qualifier from man:iconv[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2503
#, no-wrap
msgid "1100070"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2504
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281613[281613]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2505
#, no-wrap
msgid "April 16, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2507
#, no-wrap
msgid "11.0-CURRENT after moving ALTQ from [.filename]#contrib# to [.filename]#net/altq#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2508
#, no-wrap
msgid "1100071"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2509
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282256[282256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2510
#, no-wrap
msgid "April 29, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2512
#, no-wrap
msgid "11.0-CURRENT after API/ABI change to man:smb[4] (rev link:https://svnweb.freebsd.org/changeset/base/281985[281985])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2513
#, no-wrap
msgid "1100072"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2514
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282319[282319]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2515
#, no-wrap
msgid "May 1, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2517
#, no-wrap
msgid "11.0-CURRENT after adding man:reallocarray[3] in libc (rev link:https://svnweb.freebsd.org/changeset/base/282314[282314])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2518
#, no-wrap
msgid "1100073"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2519
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282650[282650]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2520
#, no-wrap
msgid "May 8, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2522
#, no-wrap
msgid "11.0-CURRENT after extending the maximum number of allowed PCM channels in a PCM stream to 127 and decreasing the maximum number of sub-channels to 1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2523
#, no-wrap
msgid "1100074"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2524
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283526[283526]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2525
#, no-wrap
msgid "May 25, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2527
#, no-wrap
msgid "11.0-CURRENT after adding preliminary support for x86-64 Linux binaries (rev link:https://svnweb.freebsd.org/changeset/base/283424[283424]), and upgrading clang and llvm to 3.6.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2528
#, no-wrap
msgid "1100075"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2529
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283623[283623]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2530
#, no-wrap
msgid "May 27, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2532
#, no-wrap
msgid "11.0-CURRENT after `dounmount()` requiring a reference on the passed struct mount (rev link:https://svnweb.freebsd.org/changeset/base/283602[283602])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2533
#, no-wrap
msgid "1100076"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2534
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283983[283983]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2535
#, no-wrap
msgid "June 4, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2537
#, no-wrap
msgid "11.0-CURRENT after disabled generation of legacy formatted password databases entries by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2538
#, no-wrap
msgid "1100077"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2539
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284233[284233]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2517
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3633
#, no-wrap
msgid "June 10, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2542
#, no-wrap
msgid "11.0-CURRENT after API changes to `lim_cur`, `lim_max`, and `lim_rlimit` (rev link:https://svnweb.freebsd.org/changeset/base/284215[284215])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2543
#, no-wrap
msgid "1100078"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2544
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/286672[286672]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2522
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2760
#, no-wrap
msgid "August 12, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2547
#, no-wrap
msgid "11.0-CURRENT after man:crunchgen[1] changes from link:https://svnweb.freebsd.org/changeset/base/284356[284356] to link:https://svnweb.freebsd.org/changeset/base/285986[285986]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2548
#, no-wrap
msgid "1100079"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2549
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/286874[286874]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2550
#, no-wrap
msgid "August 18, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2552
#, no-wrap
msgid "11.0-CURRENT after import of jemalloc 4.0.0 (rev link:https://svnweb.freebsd.org/changeset/base/286866[286866])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2553
#, no-wrap
msgid "1100080"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2554
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/288943[288943]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2555
#, no-wrap
msgid "October 5, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2557
#, no-wrap
msgid "11.0-CURRENT after upgrading clang, llvm, lldb, compiler-rt and libc++ to 3.7.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2558
#, no-wrap
msgid "1100081"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2559
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289415[289415]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2560
#, no-wrap
msgid "October 16, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2562
#, no-wrap
msgid "11.0-CURRENT after undating ZFS to support resumable send/receive (rev link:https://svnweb.freebsd.org/changeset/base/289362[289362])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2563
#, no-wrap
msgid "1100082"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2564
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289594[289594]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2565
#, no-wrap
msgid "October 19, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2567
#, no-wrap
msgid "11.0-CURRENT after Linux KPI updates."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2568
#, no-wrap
msgid "1100083"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2569
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289749[289749]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2570
#, no-wrap
msgid "October 22, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2572
#, no-wrap
msgid "11.0-CURRENT after renaming [.filename]#linuxapi.ko# to [.filename]#linuxkpi.ko#."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2573
#, no-wrap
msgid "1100084"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2574
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290135[290135]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2575
#, no-wrap
msgid "October 29, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2577
#, no-wrap
msgid "11.0-CURRENT after moving the LinuxKPI module into the default kernel build."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2578
#, no-wrap
msgid "1100085"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2579
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290207[290207]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2580
#, no-wrap
msgid "October 30, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2559
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2582
#, no-wrap
msgid "11.0-CURRENT after import of OpenSSL 1.0.2d."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2583
#, no-wrap
msgid "1100086"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2584
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290275[290275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2585
#, no-wrap
msgid "November 2, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2587
#, no-wrap
msgid "11.0-CURRENT after making man:figpar[3] macros more unique."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2588
#, no-wrap
msgid "1100087"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2589
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290479[290479]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2567
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2572
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2600
#, no-wrap
msgid "November 7, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2592
#, no-wrap
msgid "11.0-CURRENT after changing man:sysctl_add_oid[9]'s ABI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2593
#, no-wrap
msgid "1100088"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2594
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290495[290495]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2597
#, no-wrap
msgid "11.0-CURRENT after string collation and locales rework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2598
#, no-wrap
msgid "1100089"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2599
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290505[290505]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2602
#, no-wrap
msgid "11.0-CURRENT after API change to man:sysctl_add_oid[9] (rev link:https://svnweb.freebsd.org/changeset/base/290475[290475])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2603
#, no-wrap
msgid "1100090"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2604
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/290715[290715]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2605
#, no-wrap
msgid "November 10, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2607
#, no-wrap
msgid "11.0-CURRENT after API change to callout_stop macro; (rev link:https://svnweb.freebsd.org/changeset/base/290664[290664])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2608
#, no-wrap
msgid "1100091"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2609
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/291537[291537]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2610
#, no-wrap
msgid "November 30, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2612
#, no-wrap
msgid "11.0-CURRENT after changing the interface between the [.filename]#nfsd.ko# and [.filename]#nfscommon.ko# modules in link:https://svnweb.freebsd.org/changeset/base/291527[291527]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2613
#, no-wrap
msgid "1100092"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2614
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292499[292499]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2615
#, no-wrap
msgid "December 19, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2617
#, no-wrap
msgid "11.0-CURRENT after removal of vm_pageout_grow_cache (rev link:https://svnweb.freebsd.org/changeset/base/292469[292469])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2618
#, no-wrap
msgid "1100093"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2619
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292966[292966]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2597
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3673
#, no-wrap
msgid "December 30, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2622
#, no-wrap
msgid "11.0-CURRENT after removal of sys/crypto/sha2.h (rev link:https://svnweb.freebsd.org/changeset/base/292782[292782])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2623
#, no-wrap
msgid "1100094"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2624
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294086[294086]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2625
#, no-wrap
msgid "January 15, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2627
#, no-wrap
msgid "11.0-CURRENT after LinuxKPI PCI changes (rev link:https://svnweb.freebsd.org/changeset/base/294086[294086])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2628
#, no-wrap
msgid "1100095"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2629
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294327[294327]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2630
#, no-wrap
msgid "January 19, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2632
#, no-wrap
msgid "11.0-CURRENT after LRO optimizations."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2633
#, no-wrap
msgid "1100096"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2634
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294505[294505]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2635
#, no-wrap
msgid "January 21, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2637
#, no-wrap
msgid "11.0-CURRENT after LinuxKPI idr_* additions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2638
#, no-wrap
msgid "1100097"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2639
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/294860[294860]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2640
#, no-wrap
msgid "January 26, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2642
#, no-wrap
msgid "11.0-CURRENT after API change to man:dpv[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2643
#, no-wrap
msgid "1100098"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2644
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295682[295682]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2645
#, no-wrap
msgid "February 16, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2647
#, no-wrap
msgid "11.0-CURRENT after API change to rman (rev link:https://svnweb.freebsd.org/changeset/base/294883[294883])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2648
#, no-wrap
msgid "1100099"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2649
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295739[295739]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2650
#, no-wrap
msgid "February 18, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2652
#, no-wrap
msgid "11.0-CURRENT after allowing drivers to set the TCP ACK/data segment aggregation limit."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2653
#, no-wrap
msgid "1100100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2654
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296136[296136]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2655
#, no-wrap
msgid "February 26, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2657
#, no-wrap
msgid "11.0-CURRENT after man:bus_alloc_resource_any[9] API addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2658
#, no-wrap
msgid "1100101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2659
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296417[296417]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2660
#, no-wrap
msgid "March 5, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2662
#, no-wrap
msgid "11.0-CURRENT after upgrading our copies of clang, llvm, lldb and compiler-rt to 3.8.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2663
#, no-wrap
msgid "1100102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2664
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296749[296749]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2665
#, no-wrap
msgid "March 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2667
#, no-wrap
msgid "11.0-CURRENT after libelf cross-endian fix in rev link:https://svnweb.freebsd.org/changeset/base/296685[296685]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2668
#, no-wrap
msgid "1100103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2669
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297000[297000]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2670
#, no-wrap
msgid "March 18, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2672
#, no-wrap
msgid "11.0-CURRENT after using uintmax_t for rman ranges."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2673
#, no-wrap
msgid "1100104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2674
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297156[297156]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2675
#, no-wrap
msgid "March 21, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2677
#, no-wrap
msgid "11.0-CURRENT after tracking filemon usage via a proc.p_filemon pointer rather than its own lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2678
#, no-wrap
msgid "1100105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2679
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/297602[297602]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2680
#, no-wrap
msgid "April 6, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2682
#, no-wrap
msgid "11.0-CURRENT after fixing sed functions `i` and `a` from discarding leading white space."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2683
#, no-wrap
msgid "1100106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2684
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/298486[298486]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2685
#, no-wrap
msgid "April 22, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2687
#, no-wrap
msgid "11.0-CURRENT after fixes for using IPv6 addresses with RDMA."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2688
#, no-wrap
msgid "1100107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2689
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299090[299090]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2690
#, no-wrap
msgid "May 4, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2692
#, no-wrap
msgid "11.0-CURRENT after improving performance and functionality of the man:bitstring[3] api."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2693
#, no-wrap
msgid "1100108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2694
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299530[299530]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2695
#, no-wrap
msgid "May 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2697
#, no-wrap
msgid "11.0-CURRENT after fixing handling of IOCTLs in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2698
#, no-wrap
msgid "1100109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2699
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299933[299933]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2700
#, no-wrap
msgid "May 16, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2702
#, no-wrap
msgid "11.0-CURRENT after implementing more Linux device related functions in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2703
#, no-wrap
msgid "1100110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2704
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300207[300207]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2682
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4246
#, no-wrap
msgid "May 19, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2707
#, no-wrap
msgid "11.0-CURRENT after adding support for managing Shingled Magnetic Recording (SMR) drives."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2708
#, no-wrap
msgid "1100111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2709
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300303[300303]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2710
#, no-wrap
msgid "May 20, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2712
#, no-wrap
msgid "11.0-CURRENT after removing brk and sbrk from arm64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2713
#, no-wrap
msgid "1100112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2714
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300539[300539]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2715
#, no-wrap
msgid "May 23, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2717
#, no-wrap
msgid "11.0-CURRENT after adding bit_count to the man:bitstring[3] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2718
#, no-wrap
msgid "1100113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2719
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300701[300701]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2697
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2725
#, no-wrap
msgid "May 26, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2722
#, no-wrap
msgid "11.0-CURRENT after disabling alignment faults on armv6."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2723
#, no-wrap
msgid "1100114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2724
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300806[300806]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2727
#, no-wrap
msgid "11.0-CURRENT after fixing man:crunchgen[1] usage with `MAKEOBJDIRPREFIX`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2728
#, no-wrap
msgid "1100115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2729
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300982[300982]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2730
#, no-wrap
msgid "May 30, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2732
#, no-wrap
msgid "11.0-CURRENT after adding an mbuf flag for `M_HASHTYPE_`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2733
#, no-wrap
msgid "1100116"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2734
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/301011[301011]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2735
#, no-wrap
msgid "May 31, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2737
#, no-wrap
msgid "11.0-CURRENT after SHA-512t256 (rev link:https://svnweb.freebsd.org/changeset/base/300903[300903]) and Skein (rev link:https://svnweb.freebsd.org/changeset/base/300966[300966]) where added to libmd, libcrypt, the kernel, and ZFS (rev link:https://svnweb.freebsd.org/changeset/base/301010[301010])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2738
#, no-wrap
msgid "1100117"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2739
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/301892[301892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2740
#, no-wrap
msgid "June 6, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2742
#, no-wrap
msgid "11.0-CURRENT after libpam was synced with stock link:https://svnweb.freebsd.org/changeset/base/301602[301602], bumping library version."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2743
#, no-wrap
msgid "1100118"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2744
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302071[302071]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2722
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3723
#, no-wrap
msgid "June 21, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2747
#, no-wrap
msgid "11.0-CURRENT after breaking binary compatibility of struct disk link:https://svnweb.freebsd.org/changeset/base/302069[302069]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2748
#, no-wrap
msgid "1100119"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2749
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302150[302150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2727
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2755
#, no-wrap
msgid "June 23, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2752
#, no-wrap
msgid "11.0-CURRENT after switching geom_disk to using a pool mutex."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2753
#, no-wrap
msgid "1100120"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2754
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302153[302153]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2757
#, no-wrap
msgid "11.0-CURRENT after adding spares to struct ifnet."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2758
#, no-wrap
msgid "1100121"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2736
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2764
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/303979[303979]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2762
#, no-wrap
msgid "11-STABLE after `releng/11.0` branched from 11-STABLE (rev link:https://svnweb.freebsd.org/changeset/base/303975[303975])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2763
#, no-wrap
msgid "1100500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2765
#, no-wrap
msgid "August 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2767
#, no-wrap
msgid "11.0-STABLE adding branched link:https://svnweb.freebsd.org/changeset/base/303976[303976]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2768
#, no-wrap
msgid "1100501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2769
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304609[304609]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2772
#, no-wrap
msgid "11.0-STABLE after adding C++11 thread_local support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2773
#, no-wrap
msgid "1100502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2774
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304865[304865]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2752
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3738
#, no-wrap
msgid "August 26, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2777
#, no-wrap
msgid "11.0-STABLE after `LC_*_MASK` fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2778
#, no-wrap
msgid "1100503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2779
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305733[305733]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2757
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3720
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4228
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5024
#, no-wrap
msgid "September 12, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2782
#, no-wrap
msgid "11.0-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2783
#, no-wrap
msgid "1100504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2784
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307330[307330]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2762
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3748
#, no-wrap
msgid "October 14, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2787
#, no-wrap
msgid "11.0-STABLE after ZFS merges."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2788
#, no-wrap
msgid "1100505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2789
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307590[307590]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2790
#, no-wrap
msgid "October 19, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2792
#, no-wrap
msgid "11.0-STABLE after `struct fb_info` change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2793
#, no-wrap
msgid "1100506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2794
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308048[308048]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2772
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3753
#, no-wrap
msgid "October 28, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2797
#, no-wrap
msgid "11.0-STABLE after installing header files required development with libzfs_core."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2798
#, no-wrap
msgid "1100507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2799
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310120[310120]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2777
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3758
#, no-wrap
msgid "December 15, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2802
#, no-wrap
msgid "11.0-STABLE after adding the `ki_moretdname` member to `struct kinfo_proc` and `struct kinfo_proc32` to export the whole thread name to user-space utilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2803
#, no-wrap
msgid "1100508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2804
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310618[310618]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2805
#, no-wrap
msgid "December 26, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2807
#, no-wrap
msgid "11.0-STABLE after upgrading our copies of clang, llvm, lldb, compiler-rt and libc++ to 3.9.1 release, and adding lld 3.9.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2808
#, no-wrap
msgid "1100509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2809
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/311186[311186]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2810
#, no-wrap
msgid "January 3, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2812
#, no-wrap
msgid "11.0-STABLE after man:crunchgen[1] META_MODE fix (rev link:https://svnweb.freebsd.org/changeset/base/311185[311185])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2813
#, no-wrap
msgid "1100510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2814
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315312[315312]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2815
#, no-wrap
msgid "March 15, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2817
#, no-wrap
msgid "11.0-STABLE after MFC of `fget_cap`, `getsock_cap`, and related changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2818
#, no-wrap
msgid "1100511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2819
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316423[316423]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2820
#, no-wrap
msgid "April 2, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2822
#, no-wrap
msgid "11.0-STABLE after multiple MFCs updating clang, llvm, lld, lldb, compiler-rt and libc++ to 4.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2823
#, no-wrap
msgid "1100512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2824
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316498[316498]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2802
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3768
#, no-wrap
msgid "April 4, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2827
#, no-wrap
msgid "11.0-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2828
#, no-wrap
msgid "1100513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2829
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318197[318197]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2807
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3773
#, no-wrap
msgid "May 11, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2832
#, no-wrap
msgid "11.0-STABLE after merging the addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2833
#, no-wrap
msgid "1100514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2834
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/319279[319279]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2835
#, no-wrap
msgid "May 31, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2837
#, no-wrap
msgid "11.0-STABLE after multiple MFCs of `libpcap`, `WITHOUT_INET6`, and a few other minor changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2838
#, no-wrap
msgid "1101000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2839
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320486[320486]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2817
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2822
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2850
#, no-wrap
msgid "June 30, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2842
#, no-wrap
msgid "`releng/11.1` branched from `stable/11`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2843
#, no-wrap
msgid "1101001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2844
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320763[320763]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2847
#, no-wrap
msgid "11.1-RC1 After merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2848
#, no-wrap
msgid "1101500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2849
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320487[320487]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2852
#, no-wrap
msgid "11-STABLE after `releng/11.1` branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2853
#, no-wrap
msgid "1101501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2854
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/320666[320666]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2855
#, no-wrap
msgid "July 5, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2857
#, no-wrap
msgid "11-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2858
#, no-wrap
msgid "1101502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2862
#, no-wrap
msgid "11-STABLE after merging the NFS client forced dismount support `umount -N` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2863
#, no-wrap
msgid "1101503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2864
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323431[323431]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2865
#, no-wrap
msgid "September 11, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2867
#, no-wrap
msgid "11-STABLE after merging changes making the WRFSBASE instruction operational on amd64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2868
#, no-wrap
msgid "1101504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2869
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324006[324006]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2872
#, no-wrap
msgid "11-STABLE after merging libm from head, which adds man:cacoshl[3], man:cacosl[3], man:casinhl[3], man:casinl[3], man:catanl[3], man:catanhl[3], man:sincos[3], man:sincosf[3], and man:sincosl[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2873
#, no-wrap
msgid "1101505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2874
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/324023[324023]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2877
#, no-wrap
msgid "11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 5.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2878
#, no-wrap
msgid "1101506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2879
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/325003[325003]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2880
#, no-wrap
msgid "October 25, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2882
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/324281[324281], adding the `value.u16` field to `struct diocgattr_arg`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2883
#, no-wrap
msgid "1101507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2861
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3797
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328379[328379]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2862
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2867
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3798
#, no-wrap
msgid "January 24, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2887
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2888
#, no-wrap
msgid "1101508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2889
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328386[328386]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2892
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/316648[316648], renaming `smp_no_rendevous_barrier()` to `smp_no_rendezvous_barrier()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2893
#, no-wrap
msgid "1101509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2894
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/328653[328653]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2895
#, no-wrap
msgid "February 1, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2897
#, no-wrap
msgid "11-STABLE after an overwrite merge backport of the LinuxKPI from FreeBSD-head."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2898
#, no-wrap
msgid "1101510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2899
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329450[329450]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2900
#, no-wrap
msgid "February 17, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2902
#, no-wrap
msgid "11-STABLE after the `cmpxchg()` macro is now fully functional in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2903
#, no-wrap
msgid "1101511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2904
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/329981[329981]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2905
#, no-wrap
msgid "February 25, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2907
#, no-wrap
msgid "11-STABLE after concluding the recent LinuxKPI related updates."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2908
#, no-wrap
msgid "1101512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2909
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/331219[331219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2910
#, no-wrap
msgid "March 19, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2912
#, no-wrap
msgid "11-STABLE after merging retpoline support from the upstream llvm, clang and lld 5.0 branches."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2913
#, no-wrap
msgid "1101513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2914
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/331838[331838]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2915
#, no-wrap
msgid "March 31, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2917
#, no-wrap
msgid "11-STABLE after merging clang, llvm, lld, lldb, compiler-rt and libc++ 6.0.0 release, and several follow-up fixes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2918
#, no-wrap
msgid "1101514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2919
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332089[332089]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2920
#, no-wrap
msgid "April 5, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2922
#, no-wrap
msgid "11-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/328331[328331], adding a new and incompatible interpretation of ${name}_limits in rc scripts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2923
#, no-wrap
msgid "1101515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2924
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/332363[332363]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2925
#, no-wrap
msgid "April 10, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2927
#, no-wrap
msgid "11-STABLE after reverting link:https://svnweb.freebsd.org/changeset/base/331880[331880], removing the new and incompatible interpretation of ${name}_limits in rc scripts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2928
#, no-wrap
msgid "1101516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2929
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334392[334392]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2930
#, no-wrap
msgid "May 30, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2932
#, no-wrap
msgid "11-STABLE after man:dwatch[1] touch-ups."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2933
#, no-wrap
msgid "1102000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2934
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334459[334459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2937
#, no-wrap
msgid "`releng/11.2` branched from `stable/11`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2938
#, no-wrap
msgid "1102500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2939
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/334461[334461]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2942
#, no-wrap
msgid "11-STABLE after releng/11.2 branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2943
#, no-wrap
msgid "1102501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2944
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/335436[335436]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2945
#, no-wrap
msgid "June 20, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2947
#, no-wrap
msgid "11-STABLE after LinuxKPI updates requiring recompilation of external kernel modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2948
#, no-wrap
msgid "1102502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2949
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338617[338617]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2950
#, no-wrap
msgid "September 12, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2952
#, no-wrap
msgid "11-STABLE after adding a socket option SO_TS_CLOCK and fixing `recvmsg32()` system call to properly down-convert layout of the 64-bit structures to match what 32-bit app(s) expect."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2953
#, no-wrap
msgid "1102503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2954
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/338931[338931]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2955
#, no-wrap
msgid "September 25, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2957
#, no-wrap
msgid "11-STABLE after merging a TCP checksum fix to man:iflib[9] and adding new media types to if_media.h"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2958
#, no-wrap
msgid "1102504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2959
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/340309[340309]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2960
#, no-wrap
msgid "November 9, 2018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2962
#, no-wrap
msgid "11-STABLE after several MFCs: updating man:objcopy[1] to properly handle little-endian MIPS64 object; correcting mips64el test to use ELF header; adding test for 64-bit ELF in _libelf_is_mips64el."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2963
#, no-wrap
msgid "1102505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2964
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/342804[342804]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2967
#, no-wrap
msgid "11-STABLE after merge of fixing `linux_destroy_dev()` behaviour when there are still files open from the destroying cdev."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2968
#, no-wrap
msgid "1102506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2969
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/344220[344220]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2970
#, no-wrap
msgid "February 17, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2972
#, no-wrap
msgid "11-STABLE after merging multiple commits to lualoader."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2973
#, no-wrap
msgid "1102507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2974
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/346296[346296]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2977
#, no-wrap
msgid "11-STABLE after merging llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp 8.0.0 final release r356365."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2978
#, no-wrap
msgid "1102508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2982
#, no-wrap
msgid "11-STABLE after ether_gen_addr availability."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2983
#, no-wrap
msgid "1102509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2984
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347212[347212]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2987
#, no-wrap
msgid "11-STABLE after MFC of link:https://svnweb.freebsd.org/changeset/base/345303[345303], link:https://svnweb.freebsd.org/changeset/base/345658,[345658,] and partially of link:https://svnweb.freebsd.org/changeset/base/345305[345305]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2988
#, no-wrap
msgid "1102510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2989
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/347883[347883]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2992
#, no-wrap
msgid "11-STABLE after bumping the Mellanox driver version numbers (man:mlx4en[4]; man:mlx5en[4])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2993
#, no-wrap
msgid "1103000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2994
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349026[349026]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2972
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3000
#, no-wrap
msgid "June 14, 2019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2997
#, no-wrap
msgid "`releng/11.3` branched from `stable/11`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2998
#, no-wrap
msgid "1103500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2999
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/349027[349027]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3002
#, no-wrap
msgid "11-STABLE after releng/11.3 branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3003
#, no-wrap
msgid "1103501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3007
#, no-wrap
msgid "11-STABLE after fixing a potential OOB read security issue in libc++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3008
#, no-wrap
msgid "1103502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3009
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354614[354614]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3012
#, no-wrap
msgid "11-STABLE after adding sysfs create/remove functions that handles multiple files in one call to the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3013
#, no-wrap
msgid "1103503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3014
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354615[354615]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3017
#, no-wrap
msgid "11-STABLE after LinuxKPI sysfs improvements."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3018
#, no-wrap
msgid "1103504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3019
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/354616[354616]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:2999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3022
#, no-wrap
msgid "11-STABLE after enabling device class group attributes in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3023
#, no-wrap
msgid "1103505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3027
#, no-wrap
msgid "11-STABLE after adding sigsetop extensions commonly found in musl libc and glibc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3028
#, no-wrap
msgid "1103506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3029
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356395[356395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3032
#, no-wrap
msgid "11-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3033
#, no-wrap
msgid "1103507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3034
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356680[356680]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3037
#, no-wrap
msgid "11-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3038
#, no-wrap
msgid "1103508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3039
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/357613[357613]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3042
#, no-wrap
msgid "11-STABLE after recent LinuxKPI changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3043
#, no-wrap
msgid "1103509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3044
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/359958[359958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3047
#, no-wrap
msgid "11-STABLE after moving `id_mapped` to end of `bus_dma_impl` structure to preserve KPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3048
#, no-wrap
msgid "1103510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3049
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360658[360658]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3050
#, no-wrap
msgid "May 5, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3052
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 9.0.0 final release r372316."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3053
#, no-wrap
msgid "1103511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3054
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360784[360784]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3057
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3058
#, no-wrap
msgid "1104000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3059
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360804[360804]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3037
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3042
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3070
#, no-wrap
msgid "May 8, 2020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3062
#, no-wrap
msgid "`releng/11.4` branched from `stable/11`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3063
#, no-wrap
msgid "1104001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3064
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360822[360822]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3067
#, no-wrap
msgid "11.4-BETA1 after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.0 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3068
#, no-wrap
msgid "1104500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3069
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/360805[360805]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3072
#, no-wrap
msgid "11-STABLE after releng/11.4 branched."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3073
#, no-wrap
msgid "1104501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3074
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362320[362320]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3077
#, no-wrap
msgid "11-STABLE after implementing `__is_constexpr()` function macro in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3078
#, no-wrap
msgid "1104502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3079
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/362919[362919]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3082
#, no-wrap
msgid "11-STABLE after making liblzma use libmd implementation of SHA256."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3083
#, no-wrap
msgid "1104503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3084
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363496[363496]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3087
#, no-wrap
msgid "11-STABLE after updating llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to 10.0.1 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3088
#, no-wrap
msgid "1104504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3089
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/363792[363792]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3092
#, no-wrap
msgid "11-STABLE after implementing the `array_size()` function in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3093
#, no-wrap
msgid "1104505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3094
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/364391[364391]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3097
#, no-wrap
msgid "11-STABLE after change to clone the task struct fields related to RCU."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3098
#, no-wrap
msgid "1104506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3102
#, no-wrap
msgid "11-STABLE after adding atomic and bswap functions to libcompiler_rt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3103
#, no-wrap
msgid "1104507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3107
#, no-wrap
msgid "11-STABLE after followup commits to libcompiler_rt."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3108
#, no-wrap
msgid "1104508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3109
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366879[366879]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3112
#, no-wrap
msgid "11-STABLE after populating the acquire context field of a `ww_mutex` in the LinuxKPI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3113
#, no-wrap
msgid "1104509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3114
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/366889[366889]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3117
#, no-wrap
msgid "11-STABLE after additions to LinuxKPI's `RCU` list."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3118
#, no-wrap
msgid "1104510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3119
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/367513[367513]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3121
#, no-wrap
msgid "11-STABLE after the addition of `ptsname_r`."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3124
#, no-wrap
msgid "FreeBSD 10 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3127
#, no-wrap
msgid "FreeBSD 10 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3136
#, no-wrap
msgid "1000000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3137
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225757[225757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3138
#, no-wrap
msgid "September 26, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3140
#, no-wrap
msgid "10.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3141
#, no-wrap
msgid "1000001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3142
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/227070[227070]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3143
#, no-wrap
msgid "November 4, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3145
#, no-wrap
msgid "10-CURRENT after addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3146
#, no-wrap
msgid "1000002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3147
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/228444[228444]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3148
#, no-wrap
msgid "December 12, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3150
#, no-wrap
msgid "10-CURRENT after defining boolean true/false in sys/types.h, sizeof(bool) may have changed (rev link:https://svnweb.freebsd.org/changeset/base/228444[228444]). 10-CURRENT after xlocale.h was introduced (rev link:https://svnweb.freebsd.org/changeset/base/227753[227753])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3151
#, no-wrap
msgid "1000003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3152
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/228571[228571]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3153
#, no-wrap
msgid "December 16, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3155
#, no-wrap
msgid "10-CURRENT after major changes to man:carp[4], changing size of struct in_aliasreq, struct in6_aliasreq (rev link:https://svnweb.freebsd.org/changeset/base/228571[228571]) and straitening arguments check of SIOCAIFADDR (rev link:https://svnweb.freebsd.org/changeset/base/228574[228574])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3156
#, no-wrap
msgid "1000004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3157
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229204[229204]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3158
#, no-wrap
msgid "January 1, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3160
#, no-wrap
msgid "10-CURRENT after the removal of `skpc()` and the addition of man:memcchr[9] (rev link:https://svnweb.freebsd.org/changeset/base/229200[229200])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3161
#, no-wrap
msgid "1000005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3162
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230207[230207]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3140
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4043
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4949
#, no-wrap
msgid "January 16, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3165
#, no-wrap
msgid "10-CURRENT after the removal of support for SIOCSIFADDR, SIOCSIFNETMASK, SIOCSIFBRDADDR, SIOCSIFDSTADDR ioctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3166
#, no-wrap
msgid "1000006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3167
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230590[230590]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3168
#, no-wrap
msgid "January 26, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3170
#, no-wrap
msgid "10-CURRENT after introduction of read capacity data asynchronous notification in the man:cam[4] layer."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3171
#, no-wrap
msgid "1000007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3172
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231025[231025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3173
#, no-wrap
msgid "February 5, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3175
#, no-wrap
msgid "10-CURRENT after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3153
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3176
#, no-wrap
msgid "1000008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3177
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231505[231505]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3178
#, no-wrap
msgid "February 11, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3180
#, no-wrap
msgid "10-CURRENT after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3181
#, no-wrap
msgid "1000009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3182
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232154[232154]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3183
#, no-wrap
msgid "February 25, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3185
#, no-wrap
msgid "10-CURRENT after import of libarchive 3.0.3 (rev link:https://svnweb.freebsd.org/changeset/base/232153[232153])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3186
#, no-wrap
msgid "1000010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3187
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/233757[233757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3188
#, no-wrap
msgid "March 31, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3190
#, no-wrap
msgid "10-CURRENT after xlocale cleanup."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3191
#, no-wrap
msgid "1000011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3192
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/234355[234355]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3193
#, no-wrap
msgid "April 16, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3195
#, no-wrap
msgid "10-CURRENT import of LLVM/Clang 3.1 trunk link:https://svnweb.freebsd.org/changeset/base/154661[154661] (rev link:https://svnweb.freebsd.org/changeset/base/234353[234353])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3196
#, no-wrap
msgid "1000012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3197
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/234924[234924]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3198
#, no-wrap
msgid "May 2, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3200
#, no-wrap
msgid "10-CURRENT jemalloc import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3201
#, no-wrap
msgid "1000013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3202
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/235788[235788]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3180
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4086
#, no-wrap
msgid "May 22, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3205
#, no-wrap
msgid "10-CURRENT after byacc import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3206
#, no-wrap
msgid "1000014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3207
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/237631[237631]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3208
#, no-wrap
msgid "June 27, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3210
#, no-wrap
msgid "10-CURRENT after BSD sort becoming the default sort (rev link:https://svnweb.freebsd.org/changeset/base/237629[237629])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3211
#, no-wrap
msgid "1000015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3212
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/238405[238405]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3213
#, no-wrap
msgid "July 12, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3215
#, no-wrap
msgid "10-CURRENT after import of OpenSSL 1.0.1c."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3217
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/238429[238429]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3218
#, no-wrap
msgid "July 13, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3220
#, no-wrap
msgid "10-CURRENT after the fix for LLVM/Clang 3.1 regression."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3221
#, no-wrap
msgid "1000016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3222
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239179[239179]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3200
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3228
#, no-wrap
msgid "August 8, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3225
#, no-wrap
msgid "10-CURRENT after KBI change in man:ucom[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3226
#, no-wrap
msgid "1000017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3227
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239214[239214]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3230
#, no-wrap
msgid "10-CURRENT after adding streams feature to the USB stack."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3231
#, no-wrap
msgid "1000018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3232
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/240233[240233]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3233
#, no-wrap
msgid "September 8, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3235
#, no-wrap
msgid "10-CURRENT after major rewrite of man:pf[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3213
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3236
#, no-wrap
msgid "1000019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3237
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241245[241245]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3238
#, no-wrap
msgid "October 6, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3240
#, no-wrap
msgid "10-CURRENT after man:pfil[9] KBI/KPI changed to supply packets in net byte order to AF_INET filter hooks."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3241
#, no-wrap
msgid "1000020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3242
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241610[241610]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3243
#, no-wrap
msgid "October 16, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3245
#, no-wrap
msgid "10-CURRENT after the network interface cloning KPI changed and struct if_clone becoming opaque."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3246
#, no-wrap
msgid "1000021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3247
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241897[241897]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3225
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3253
#, no-wrap
msgid "October 22, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3250
#, no-wrap
msgid "10-CURRENT after removal of support for non-MPSAFE filesystems and addition of support for FUSEFS (rev link:https://svnweb.freebsd.org/changeset/base/241519[241519])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3251
#, no-wrap
msgid "1000022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3252
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/241913[241913]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3255
#, no-wrap
msgid "10-CURRENT after the entire IPv4 stack switched to network byte order for IP packet header storage."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3256
#, no-wrap
msgid "1000023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3257
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/242619[242619]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3235
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3240
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3263
#, no-wrap
msgid "November 5, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3260
#, no-wrap
msgid "10-CURRENT after jitter buffer in the common USB serial driver code, to temporarily store characters if the TTY buffer is full. Add flow stop and start signals when this happens."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3261
#, no-wrap
msgid "1000024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3262
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/242624[242624]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3265
#, no-wrap
msgid "10-CURRENT after clang was made the default compiler on i386 and amd64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3266
#, no-wrap
msgid "1000025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3267
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/243443[243443]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3268
#, no-wrap
msgid "November 17, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3270
#, no-wrap
msgid "10-CURRENT after the sin6_scope_id member variable in struct sockaddr_in6 was changed to being filled by the kernel before passing the structure to the userland via sysctl or routing socket. This means the KAME-specific embedded scope id in sin6_addr.s6_addr[2] is always cleared in userland application."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3271
#, no-wrap
msgid "1000026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3272
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/245313[245313]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3273
#, no-wrap
msgid "January 11, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3275
#, no-wrap
msgid "10-CURRENT after install gained the -N flag. May also be used to indicate the presence of nmtree."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3276
#, no-wrap
msgid "1000027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3277
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/246084[246084]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3278
#, no-wrap
msgid "January 29, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3280
#, no-wrap
msgid "10-CURRENT after cat gained the -l flag (rev link:https://svnweb.freebsd.org/changeset/base/246083[246083])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3281
#, no-wrap
msgid "1000028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3282
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/246759[246759]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3283
#, no-wrap
msgid "February 13, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3285
#, no-wrap
msgid "10-CURRENT after USB moved to the driver structure requiring a rebuild of all USB modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3286
#, no-wrap
msgid "1000029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3287
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247821[247821]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3288
#, no-wrap
msgid "March 4, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3267
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3290
#, no-wrap
msgid "10-CURRENT after the introduction of tickless callout facility which also changed the layout of struct callout (rev link:https://svnweb.freebsd.org/changeset/base/247777[247777])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3291
#, no-wrap
msgid "1000030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3292
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248210[248210]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3293
#, no-wrap
msgid "March 12, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3295
#, no-wrap
msgid "10-CURRENT after KPI breakage introduced in the VM subsystem to support read/write locking (rev link:https://svnweb.freebsd.org/changeset/base/248084[248084])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3296
#, no-wrap
msgid "1000031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3297
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/249943[249943]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3298
#, no-wrap
msgid "April 26, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3300
#, no-wrap
msgid "10-CURRENT after the dst parameter of the ifnet `if_output` method was changed to take const qualifier (rev link:https://svnweb.freebsd.org/changeset/base/249925[249925])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3301
#, no-wrap
msgid "1000032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3302
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/250163[250163]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3303
#, no-wrap
msgid "May 1, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3305
#, no-wrap
msgid "10-CURRENT after the introduction of the man:accept4[2] (rev link:https://svnweb.freebsd.org/changeset/base/250154[250154]) and man:pipe2[2] (rev link:https://svnweb.freebsd.org/changeset/base/250159[250159]) system calls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3306
#, no-wrap
msgid "1000033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3307
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/250881[250881]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3308
#, no-wrap
msgid "May 21, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3310
#, no-wrap
msgid "10-CURRENT after flex 2.5.37 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3311
#, no-wrap
msgid "1000034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3312
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251294[251294]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3313
#, no-wrap
msgid "June 3, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3315
#, no-wrap
msgid "10-CURRENT after the addition of these functions to libm: man:cacos[3], man:cacosf[3], man:cacosh[3], man:cacoshf[3], man:casin[3], man:casinf[3], man:casinh[3], man:casinhf[3], man:catan[3], man:catanf[3], man:catanh[3], man:catanhf[3], man:logl[3], man:log2l[3], man:log10l[3], man:log1pl[3], man:expm1l[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3316
#, no-wrap
msgid "1000035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3317
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251527[251527]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3318
#, no-wrap
msgid "June 8, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3320
#, no-wrap
msgid "10-CURRENT after the introduction of the man:aio_mlock[2] system call (rev link:https://svnweb.freebsd.org/changeset/base/251526[251526])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3321
#, no-wrap
msgid "1000036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3322
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253049[253049]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3300
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3328
#, no-wrap
msgid "July 9, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3325
#, no-wrap
msgid "10-CURRENT after the addition of a new function to the kernel GSSAPI module's function call interface."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3326
#, no-wrap
msgid "1000037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3327
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253089[253089]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3307
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3330
#, no-wrap
msgid "10-CURRENT after the migration of statistics structures to PCPU counters. Changed structures include: `ahstat`, `arpstat`, `espstat`, `icmp6_ifstat`, `icmp6stat`, `in6_ifstat`, `ip6stat`, `ipcompstat`, `ipipstat`, `ipsecstat`, `mrt6stat`, `mrtstat`, `pfkeystat`, `pim6stat`, `pimstat`, `rip6stat`, `udpstat` (rev link:https://svnweb.freebsd.org/changeset/base/253081[253081])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3308
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3331
#, no-wrap
msgid "1000038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3332
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253396[253396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3333
#, no-wrap
msgid "July 16, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3335
#, no-wrap
msgid "10-CURRENT after making `ARM EABI` the default ABI on arm, armeb, armv6, and armv6eb architectures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3336
#, no-wrap
msgid "1000039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3337
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253549[253549]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3338
#, no-wrap
msgid "July 22, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3340
#, no-wrap
msgid "10-CURRENT after `CAM` and man:mps[4] driver scanning changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3318
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3341
#, no-wrap
msgid "1000040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3342
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253638[253638]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3343
#, no-wrap
msgid "July 24, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3345
#, no-wrap
msgid "10-CURRENT after addition of libusb pkgconf files."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3346
#, no-wrap
msgid "1000041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3347
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253970[253970]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3348
#, no-wrap
msgid "August 5, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3350
#, no-wrap
msgid "10-CURRENT after change from `time_second` to `time_uptime` in `PF_INET6`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3328
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3351
#, no-wrap
msgid "1000042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3352
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254138[254138]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3353
#, no-wrap
msgid "August 9, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3355
#, no-wrap
msgid "10-CURRENT after VM subsystem change to unify soft and hard busy mechanisms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3356
#, no-wrap
msgid "1000043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3357
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254273[254273]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3358
#, no-wrap
msgid "August 13, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3360
#, no-wrap
msgid "10-CURRENT after `WITH_ICONV` is enabled by default. A new man:src.conf[5] option, `WITH_LIBICONV_COMPAT` (disabled by default) adds `libiconv_open` to provide compatibility with the package:converters/libiconv[] port."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3361
#, no-wrap
msgid "1000044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3362
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254358[254358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3340
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3368
#, no-wrap
msgid "August 15, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3365
#, no-wrap
msgid "10-CURRENT after [.filename]#libc.so# conversion to an man:ld[1] script (rev link:https://svnweb.freebsd.org/changeset/base/251668[251668])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3366
#, no-wrap
msgid "1000045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3367
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254389[254389]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3370
#, no-wrap
msgid "10-CURRENT after devfs programming interface change by replacing the cdevsw flag `D_UNMAPPED_IO` with the struct cdev flag `SI_UNMAPPED`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3371
#, no-wrap
msgid "1000046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3372
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254537[254537]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3373
#, no-wrap
msgid "August 19, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3373
#, no-wrap
msgid "10-CURRENT after addition of `M_PROTO[9-12]` and removal of `M_FRAG\\"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3373
#, no-wrap
msgid "M_FIRSTFRAG\\"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3375
#, no-wrap
msgid "M_LASTFRAG` mbuf flags (rev link:https://svnweb.freebsd.org/changeset/base/254524[254524], link:https://svnweb.freebsd.org/changeset/base/254526[254526])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3376
#, no-wrap
msgid "1000047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3377
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254627[254627]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3378
#, no-wrap
msgid "August 21, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3380
#, no-wrap
msgid "10-CURRENT after man:stat[2] update to allow storing some Windows/DOS and CIFS file attributes as man:stat[2] flags."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3381
#, no-wrap
msgid "1000048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3382
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254672[254672]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3383
#, no-wrap
msgid "August 22, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3385
#, no-wrap
msgid "10-CURRENT after modification of structure `xsctp_inpcb`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3386
#, no-wrap
msgid "1000049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3387
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254760[254760]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3365
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3393
#, no-wrap
msgid "August 24, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3390
#, no-wrap
msgid "10-CURRENT after man:physio[9] support for devices that do not function properly with split I/O, such as man:sa[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3391
#, no-wrap
msgid "1000050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3392
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254844[254844]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3395
#, no-wrap
msgid "10-CURRENT after modifications of structure `mbuf` (rev link:https://svnweb.freebsd.org/changeset/base/254780[254780], link:https://svnweb.freebsd.org/changeset/base/254799[254799], link:https://svnweb.freebsd.org/changeset/base/254804[254804], link:https://svnweb.freebsd.org/changeset/base/254807[254807]link:https://svnweb.freebsd.org/changeset/base/254842[254842])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3396
#, no-wrap
msgid "1000051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3397
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254887[254887]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3398
#, no-wrap
msgid "August 25, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3400
#, no-wrap
msgid "10-CURRENT after Radeon KMS driver import (rev link:https://svnweb.freebsd.org/changeset/base/254885[254885])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3401
#, no-wrap
msgid "1000052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3402
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255180[255180]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3403
#, no-wrap
msgid "September 3, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3405
#, no-wrap
msgid "10-CURRENT after import of NetBSD `libexecinfo` is connected to the build."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3406
#, no-wrap
msgid "1000053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3407
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255305[255305]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3385
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3390
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3418
#, no-wrap
msgid "September 6, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3410
#, no-wrap
msgid "10-CURRENT after API and ABI changes to the Capsicum framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3411
#, no-wrap
msgid "1000054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3412
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255321[255321]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3415
#, no-wrap
msgid "10-CURRENT after `gcc` and `libstdc++` are no longer built by default."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3416
#, no-wrap
msgid "1000055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3417
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/255449[255449]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3420
#, no-wrap
msgid "10-CURRENT after addition of `MMAP_32BIT` man:mmap[2] flag (rev link:https://svnweb.freebsd.org/changeset/base/255426[255426])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3421
#, no-wrap
msgid "1000100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3422
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259065[259065]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3400
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3420
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3448
#, no-wrap
msgid "December 7, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3425
#, no-wrap
msgid "`releng/10.0` branched from `stable/10`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3426
#, no-wrap
msgid "1000500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3427
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256283[256283]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3430
#, no-wrap
msgid "10-STABLE after branch from `head/`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3431
#, no-wrap
msgid "1000501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3432
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256916[256916]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3410
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4146
#, no-wrap
msgid "October 22, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3435
#, no-wrap
msgid "10-STABLE after addition of first-boot man:rc[8] support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3436
#, no-wrap
msgid "1000502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3437
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/258398[258398]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3438
#, no-wrap
msgid "November 20, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3440
#, no-wrap
msgid "10-STABLE after removal of iconv symbols from `libc.so.7`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3441
#, no-wrap
msgid "1000510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3442
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259067[259067]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3445
#, no-wrap
msgid "`releng/10.0` __FreeBSD_version update to prevent the value from going backwards."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3446
#, no-wrap
msgid "1000700"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3447
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259069[259069]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3450
#, no-wrap
msgid "10-STABLE after `releng/10.0` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3451
#, no-wrap
msgid "1000701"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3452
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259447[259447]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3455
#, no-wrap
msgid "10.0-STABLE after Heimdal encoding fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3456
#, no-wrap
msgid "1000702"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3457
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260135[260135]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3435
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4156
#, no-wrap
msgid "December 31, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3460
#, no-wrap
msgid "10-STABLE after MAP_STACK fixes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3461
#, no-wrap
msgid "1000703"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3439
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4160
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262801[262801]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3440
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4161
#, no-wrap
msgid "March 5, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3465
#, no-wrap
msgid "10-STABLE after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3466
#, no-wrap
msgid "1000704"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3467
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/262889[262889]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3468
#, no-wrap
msgid "March 7, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3470
#, no-wrap
msgid "10-STABLE after MFC of the man:vt[4] driver (rev link:https://svnweb.freebsd.org/changeset/base/262861[262861])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3471
#, no-wrap
msgid "1000705"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3472
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263508[263508]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3450
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4171
#, no-wrap
msgid "March 21, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3475
#, no-wrap
msgid "10-STABLE after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3476
#, no-wrap
msgid "1000706"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3477
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/264214[264214]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3480
#, no-wrap
msgid "10-STABLE after GCC support for `__block` definition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3481
#, no-wrap
msgid "1000707"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3485
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:06.openssl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3486
#, no-wrap
msgid "1000708"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3487
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265122[265122]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3465
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4163
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4989
#, no-wrap
msgid "April 30, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3490
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:07.devfs, FreeBSD-SA-14:08.tcp, and FreeBSD-SA-14:09.openssl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3491
#, no-wrap
msgid "1000709"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3492
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265946[265946]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3493
#, no-wrap
msgid "May 13, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3495
#, no-wrap
msgid "10-STABLE after support for UDP-Lite protocol (RFC 3828)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3496
#, no-wrap
msgid "1000710"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3497
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267465[267465]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3477
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3500
#, no-wrap
msgid "10-STABLE after changes to man:strcasecmp[3], moving man:strcasecmp_l[3] and man:strncasecmp_l[3] from [.filename]#<string.h># to [.filename]#<strings.h># for POSIX 2008 compliance."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3478
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3501
#, no-wrap
msgid "1000711"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3502
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268442[268442]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3505
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268432[268432])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3506
#, no-wrap
msgid "1000712"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3507
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/269400[269400]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3508
#, no-wrap
msgid "August 1, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3510
#, no-wrap
msgid "10-STABLE after man:nfsd[8] 4.1 merge (rev link:https://svnweb.freebsd.org/changeset/base/269398[269398])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3511
#, no-wrap
msgid "1000713"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3512
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/269484[269484]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3515
#, no-wrap
msgid "10-STABLE after man:regex[3] library update to add \">\" and \"<\" delimiters."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3516
#, no-wrap
msgid "1000714"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3517
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270174[270174]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3520
#, no-wrap
msgid "10-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269490[269490])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3521
#, no-wrap
msgid "1000715"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3525
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269686[269686])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3526
#, no-wrap
msgid "1000716"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3530
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271667[271667])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3531
#, no-wrap
msgid "1000717"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3532
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/271816[271816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3533
#, no-wrap
msgid "September 18, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3535
#, no-wrap
msgid "10-STABLE after i915 HW context support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3536
#, no-wrap
msgid "1001000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3537
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272463[272463]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3515
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3543
#, no-wrap
msgid "October 2, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3540
#, no-wrap
msgid "10.1-RC1 after releng/10.1 branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3541
#, no-wrap
msgid "1001500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3542
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/272464[272464]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3545
#, no-wrap
msgid "10-STABLE after releng/10.1 branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3546
#, no-wrap
msgid "1001501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3550
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:22, and FreeBSD-SA-14:23 (rev link:https://svnweb.freebsd.org/changeset/base/273411[273411])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3551
#, no-wrap
msgid "1001502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3555
#, no-wrap
msgid "10-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3556
#, no-wrap
msgid "1001503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3557
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275040[275040]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3558
#, no-wrap
msgid "November 25, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3560
#, no-wrap
msgid "10-STABLE after merging new libraries/utilities (man:dpv[1] man:dpv[3], and man:figpar[3]) for data throughput visualization."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3561
#, no-wrap
msgid "1001504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3539
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4230
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/275742[275742]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3540
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4231
#, no-wrap
msgid "December 13, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3565
#, no-wrap
msgid "10-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3566
#, no-wrap
msgid "1001505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3567
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/276633[276633]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3568
#, no-wrap
msgid "January 3, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3570
#, no-wrap
msgid "10-STABLE after merging some arm constants in link:https://svnweb.freebsd.org/changeset/base/276312[276312]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3571
#, no-wrap
msgid "1001506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3572
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277087[277087]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3573
#, no-wrap
msgid "January 12, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3575
#, no-wrap
msgid "10-STABLE after merging max table size update for yacc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3576
#, no-wrap
msgid "1001507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3577
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/277790[277790]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3578
#, no-wrap
msgid "January 27, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3580
#, no-wrap
msgid "10-STABLE after changes to the UDP tunneling callback to provide a context pointer and the source sockaddr."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3581
#, no-wrap
msgid "1001508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3559
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3582
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/278974[278974]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3585
#, no-wrap
msgid "10-STABLE after addition of the `CDAI_TYPE_EXT_INQ` request type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3586
#, no-wrap
msgid "1001509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3564
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4212
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5018
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279287[279287]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3565
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4213
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5019
#, no-wrap
msgid "February 25, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3590
#, no-wrap
msgid "10-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3591
#, no-wrap
msgid "1001510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3592
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/279329[279329]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3593
#, no-wrap
msgid "February 26, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3572
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3595
#, no-wrap
msgid "10-STABLE after MFC of rev link:https://svnweb.freebsd.org/changeset/base/278964[278964]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3596
#, no-wrap
msgid "1001511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3597
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280246[280246]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3598
#, no-wrap
msgid "March 19, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3600
#, no-wrap
msgid "10-STABLE after [.filename]#sys/capability.h# is renamed to [.filename]#sys/capsicum.h# (rev link:https://svnweb.freebsd.org/changeset/base/280224/[280224/])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3601
#, no-wrap
msgid "1001512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3602
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/280438[280438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3603
#, no-wrap
msgid "March 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3605
#, no-wrap
msgid "10-STABLE after addition of new man:mtio[4], man:sa[4] ioctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3606
#, no-wrap
msgid "1001513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3607
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/281955[281955]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3608
#, no-wrap
msgid "April 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3610
#, no-wrap
msgid "10-STABLE after starting the process of removing the use of the deprecated \"M_FLOWID\" flag from the network code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3611
#, no-wrap
msgid "1001514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3612
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282275[282275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3613
#, no-wrap
msgid "April 30, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3615
#, no-wrap
msgid "10-STABLE after MFC of man:iconv[3] fixes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3616
#, no-wrap
msgid "1001515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3617
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/282781[282781]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3618
#, no-wrap
msgid "May 11, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3620
#, no-wrap
msgid "10-STABLE after adding back `M_FLOWID`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3621
#, no-wrap
msgid "1001516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3622
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283341[283341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3623
#, no-wrap
msgid "May 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3625
#, no-wrap
msgid "10-STABLE after MFC of many USB things."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3626
#, no-wrap
msgid "1001517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3627
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/283950[283950]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3628
#, no-wrap
msgid "June 3, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3630
#, no-wrap
msgid "10-STABLE after MFC of sound related things."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3631
#, no-wrap
msgid "1001518"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3632
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284204[284204]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3635
#, no-wrap
msgid "10-STABLE after MFC of zfs vfs fixes (rev link:https://svnweb.freebsd.org/changeset/base/284203[284203])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3636
#, no-wrap
msgid "1001519"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3637
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/284720[284720]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3638
#, no-wrap
msgid "June 23, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3640
#, no-wrap
msgid "10-STABLE after reverting bumping `MAXCPU` on amd64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3641
#, no-wrap
msgid "1002000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3642
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/285830[285830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3620
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3648
#, no-wrap
msgid "July 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3645
#, no-wrap
msgid "`releng/10.2` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3646
#, no-wrap
msgid "1002500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3647
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/285831[285831]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3650
#, no-wrap
msgid "10-STABLE after `releng/10.2` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3651
#, no-wrap
msgid "1002501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3652
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/289005[289005]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3653
#, no-wrap
msgid "October 8, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3655
#, no-wrap
msgid "10-STABLE after merge of ZFS changes that affected the internal interface of zfeature_info structure (rev link:https://svnweb.freebsd.org/changeset/base/288572[288572])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3656
#, no-wrap
msgid "1002502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3657
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/291243[291243]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3658
#, no-wrap
msgid "November 24, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3660
#, no-wrap
msgid "10-STABLE after merge of dump device changes that affected the arguments of `g_dev_setdumpdev()`(rev link:https://svnweb.freebsd.org/changeset/base/291215[291215])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3661
#, no-wrap
msgid "1002503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3662
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292224[292224]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3663
#, no-wrap
msgid "December 14, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3665
#, no-wrap
msgid "10-STABLE after merge of changes to the internal interface between the nfsd.ko and nfscommon.ko modules, requiring them to be upgraded together (rev link:https://svnweb.freebsd.org/changeset/base/292223[292223])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3666
#, no-wrap
msgid "1002504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3667
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292589[292589]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3668
#, no-wrap
msgid "December 22, 2015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3670
#, no-wrap
msgid "10-STABLE after merge of xz 5.2.2 merge (multithread support) (rev link:https://svnweb.freebsd.org/changeset/base/292588[292588])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3671
#, no-wrap
msgid "1002505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3672
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/292908[292908]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3675
#, no-wrap
msgid "10-STABLE after merge of changes to man:pci[4] (rev link:https://svnweb.freebsd.org/changeset/base/292907[292907])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3676
#, no-wrap
msgid "1002506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3677
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293476[293476]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3655
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3660
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3688
#, no-wrap
msgid "January 9, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3680
#, no-wrap
msgid "10-STABLE after merge of man:utimensat[2] (rev link:https://svnweb.freebsd.org/changeset/base/293473[293473])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3681
#, no-wrap
msgid "1002507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3682
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293610[293610]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3685
#, no-wrap
msgid "10-STABLE after merge of changes to man:linux[4] (rev link:https://svnweb.freebsd.org/changeset/base/293477[293477] through link:https://svnweb.freebsd.org/changeset/base/293609[293609])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3686
#, no-wrap
msgid "1002508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3687
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/293619[293619]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3690
#, no-wrap
msgid "10-STABLE after merge of changes to man:figpar[3] types/macros (rev link:https://svnweb.freebsd.org/changeset/base/290275[290275])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3691
#, no-wrap
msgid "1002509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3692
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/295107[295107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3693
#, no-wrap
msgid "February 1, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3695
#, no-wrap
msgid "10-STABLE after merge of API change to man:dpv[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3696
#, no-wrap
msgid "1003000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3697
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296373[296373]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3675
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3703
#, no-wrap
msgid "March 4, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3700
#, no-wrap
msgid "`releng/10.3` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3701
#, no-wrap
msgid "1003500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3702
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296374[296374]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3705
#, no-wrap
msgid "10-STABLE after `releng/10.3` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3706
#, no-wrap
msgid "1003501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3707
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/298299[298299]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3685
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3690
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3718
#, no-wrap
msgid "June 19, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3710
#, no-wrap
msgid "10-STABLE after adding kdbcontrol's -P option (rev link:https://svnweb.freebsd.org/changeset/base/298297[298297])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3711
#, no-wrap
msgid "1003502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3712
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/299966[299966]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3715
#, no-wrap
msgid "10-STABLE after libcrypto.so was made position independent."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3716
#, no-wrap
msgid "1003503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3717
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300235[300235]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3720
#, no-wrap
msgid "10-STABLE after allowing MK_ overrides (rev link:https://svnweb.freebsd.org/changeset/base/300233[300233])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3721
#, no-wrap
msgid "1003504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3722
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302066[302066]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3725
#, no-wrap
msgid "10-STABLE after MFC of filemon changes from 11-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3726
#, no-wrap
msgid "1003505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3727
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/302228[302228]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3728
#, no-wrap
msgid "June 27, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3730
#, no-wrap
msgid "10-STABLE after converting sed to use REG_STARTEND, fixing a Mesa issue."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3731
#, no-wrap
msgid "1003506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3732
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304611[304611]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3735
#, no-wrap
msgid "10-STABLE after adding C++11 thread_local support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3736
#, no-wrap
msgid "1003507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3737
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/304864[304864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3740
#, no-wrap
msgid "10-STABLE after `LC_*_MASK` fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3741
#, no-wrap
msgid "1003508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3742
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305734[305734]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3745
#, no-wrap
msgid "10-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3746
#, no-wrap
msgid "1003509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3747
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/307331[307331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3750
#, no-wrap
msgid "10-STABLE after ZFS merges."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3751
#, no-wrap
msgid "1003510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3752
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/308047[308047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3755
#, no-wrap
msgid "10-STABLE after installing header files required development with libzfs_core."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3756
#, no-wrap
msgid "1003511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3757
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/310121[310121]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3760
#, no-wrap
msgid "10-STABLE after exporting whole thread name in `kinfo_proc` (rev link:https://svnweb.freebsd.org/changeset/base/309676[309676])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3761
#, no-wrap
msgid "1003512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3762
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/315730[315730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3763
#, no-wrap
msgid "March 22, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3765
#, no-wrap
msgid "10-STABLE after libmd changes (rev link:https://svnweb.freebsd.org/changeset/base/314143[314143])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3766
#, no-wrap
msgid "1003513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3767
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/316499[316499]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3770
#, no-wrap
msgid "10-STABLE after making CAM SIM lock optional (revs link:https://svnweb.freebsd.org/changeset/base/315673[315673], link:https://svnweb.freebsd.org/changeset/base/315674[315674])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3771
#, no-wrap
msgid "1003514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3772
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/318198[318198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3775
#, no-wrap
msgid "10-STABLE after merging the addition of the [.filename]#<dev/mmc/mmc_ioctl.h># header."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3776
#, no-wrap
msgid "1003515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3777
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321222[321222]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3778
#, no-wrap
msgid "July 19, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3780
#, no-wrap
msgid "10-STABLE after adding C++14 sized deallocation functions to libc++."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3781
#, no-wrap
msgid "1003516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3782
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/321717[321717]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3783
#, no-wrap
msgid "July 30, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3785
#, no-wrap
msgid "10-STABLE after merging the `MAP_GUARD` man:mmap[2] flag addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3786
#, no-wrap
msgid "1004000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3787
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323604[323604]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3765
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3793
#, no-wrap
msgid "September 15, 2017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3790
#, no-wrap
msgid "`releng/10.4` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3791
#, no-wrap
msgid "1004500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3792
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/323605[323605]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3795
#, no-wrap
msgid "10-STABLE after `releng/10.4` branched from 10-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3796
#, no-wrap
msgid "1004501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3800
#, no-wrap
msgid "10-STABLE after merging link:https://svnweb.freebsd.org/changeset/base/325028[325028], fixing `ptrace()` to always clear the correct thread event when resuming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3801
#, no-wrap
msgid "1004502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3802
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356396[356396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3805
#, no-wrap
msgid "10-STABLE after making USB statistics be per-device instead of per bus."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3806
#, no-wrap
msgid "1004503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3807
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/356681[356681]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3809
#, no-wrap
msgid "10-STABLE after adding own counter for cancelled USB transfers."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3812
#, no-wrap
msgid "FreeBSD 9 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3815
#, no-wrap
msgid "FreeBSD 9 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3824
#, no-wrap
msgid "900000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3825
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196432[196432]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3826
#, no-wrap
msgid "August 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3828
#, no-wrap
msgid "9.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3829
#, no-wrap
msgid "900001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3830
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197019[197019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3831
#, no-wrap
msgid "September 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3833
#, no-wrap
msgid "9.0-CURRENT after importing x86emu, a software emulator for real mode x86 CPU from OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3834
#, no-wrap
msgid "900002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3835
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197430[197430]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3836
#, no-wrap
msgid "September 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3838
#, no-wrap
msgid "9.0-CURRENT after implementing the EVFILT_USER kevent filter functionality."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3839
#, no-wrap
msgid "900003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3840
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200039[200039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3841
#, no-wrap
msgid "December 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3843
#, no-wrap
msgid "9.0-CURRENT after addition of man:sigpause[2] and PIE support in csu."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3844
#, no-wrap
msgid "900004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3845
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200185[200185]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3846
#, no-wrap
msgid "December 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3848
#, no-wrap
msgid "9.0-CURRENT after addition of libulog and its libutempter compatibility interface."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3849
#, no-wrap
msgid "900005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3850
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/200447[200447]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3851
#, no-wrap
msgid "December 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3853
#, no-wrap
msgid "9.0-CURRENT after addition of man:sleepq_sleepcnt[9], which can be used to query the number of waiters on a specific waiting queue."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3854
#, no-wrap
msgid "900006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3855
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/201513[201513]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3856
#, no-wrap
msgid "January 4, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3858
#, no-wrap
msgid "9.0-CURRENT after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3859
#, no-wrap
msgid "900007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3860
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202219[202219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3861
#, no-wrap
msgid "January 13, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3863
#, no-wrap
msgid "9.0-CURRENT after the removal of man:utmp[5] and the addition of utmpx (see man:getutxent[3]) for improved logging of user logins and system events."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3864
#, no-wrap
msgid "900008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3842
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3865
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202722[202722]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3866
#, no-wrap
msgid "January 20, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3868
#, no-wrap
msgid "9.0-CURRENT after the import of BSDL bc/dc and the deprecation of GNU bc/dc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3869
#, no-wrap
msgid "900009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3870
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203052[203052]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3871
#, no-wrap
msgid "January 26, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3873
#, no-wrap
msgid "9.0-CURRENT after the addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3874
#, no-wrap
msgid "900010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3852
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3875
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/205471[205471]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3876
#, no-wrap
msgid "March 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3878
#, no-wrap
msgid "9.0-CURRENT after the import of zlib 1.2.4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3879
#, no-wrap
msgid "900011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3857
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3880
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/207410[207410]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3881
#, no-wrap
msgid "April 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3883
#, no-wrap
msgid "9.0-CURRENT after adding soft-updates journalling."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3884
#, no-wrap
msgid "900012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3862
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3885
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/207842[207842]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3886
#, no-wrap
msgid "May 10, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3888
#, no-wrap
msgid "9.0-CURRENT after adding liblzma, xz, xzdec, and lzmainfo."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3889
#, no-wrap
msgid "900013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3890
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208486[208486]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3891
#, no-wrap
msgid "May 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3893
#, no-wrap
msgid "9.0-CURRENT after bringing in USB fixes for man:linux[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3894
#, no-wrap
msgid "900014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3895
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208973[208973]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3896
#, no-wrap
msgid "June 10, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3898
#, no-wrap
msgid "9.0-CURRENT after adding Clang."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3899
#, no-wrap
msgid "900015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3900
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/210390[210390]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3901
#, no-wrap
msgid "July 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3903
#, no-wrap
msgid "9.0-CURRENT after the import of BSD grep."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3904
#, no-wrap
msgid "900016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3905
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/210565[210565]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3906
#, no-wrap
msgid "July 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3908
#, no-wrap
msgid "9.0-CURRENT after adding mti_zone to struct malloc_type_internal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3909
#, no-wrap
msgid "900017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3910
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211701[211701]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3911
#, no-wrap
msgid "August 23, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3913
#, no-wrap
msgid "9.0-CURRENT after changing back default grep to GNU grep and adding WITH_BSD_GREP knob."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3914
#, no-wrap
msgid "900018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3915
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211735[211735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3916
#, no-wrap
msgid "August 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3918
#, no-wrap
msgid "9.0-CURRENT after the man:pthread_kill[3] -generated signal is identified as SI_LWP in si_code. Previously, si_code was SI_USER."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3919
#, no-wrap
msgid "900019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3920
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/211937[211937]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3921
#, no-wrap
msgid "August 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3923
#, no-wrap
msgid "9.0-CURRENT after addition of the MAP_PREFAULT_READ flag to man:mmap[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3924
#, no-wrap
msgid "900020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3925
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/212381[212381]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3926
#, no-wrap
msgid "September 9, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3928
#, no-wrap
msgid "9.0-CURRENT after adding drain functionality to sbufs, which also changed the layout of struct sbuf."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3929
#, no-wrap
msgid "900021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3930
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/212568[212568]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3931
#, no-wrap
msgid "September 13, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3933
#, no-wrap
msgid "9.0-CURRENT after DTrace has grown support for userland tracing."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3934
#, no-wrap
msgid "900022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3935
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/213395[213395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3936
#, no-wrap
msgid "October 2, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3938
#, no-wrap
msgid "9.0-CURRENT after addition of the BSDL man utilities and retirement of GNU/GPL man utilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3939
#, no-wrap
msgid "900023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3940
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/213700[213700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3941
#, no-wrap
msgid "October 11, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3943
#, no-wrap
msgid "9.0-CURRENT after updating xz to git 20101010 snapshot."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3944
#, no-wrap
msgid "900024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3945
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/215127[215127]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3946
#, no-wrap
msgid "November 11, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3948
#, no-wrap
msgid "9.0-CURRENT after libgcc.a was replaced by libcompiler_rt.a."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3949
#, no-wrap
msgid "900025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3950
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/215166[215166]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3951
#, no-wrap
msgid "November 12, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3953
#, no-wrap
msgid "9.0-CURRENT after the introduction of the modularised congestion control."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3954
#, no-wrap
msgid "900026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3955
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216088[216088]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3956
#, no-wrap
msgid "November 30, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3958
#, no-wrap
msgid "9.0-CURRENT after the introduction of Serial Management Protocol (SMP) passthrough and the XPT_SMP_IO and XPT_GDEV_ADVINFO CAM CCBs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3959
#, no-wrap
msgid "900027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3960
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216212[216212]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3961
#, no-wrap
msgid "December 5, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3963
#, no-wrap
msgid "9.0-CURRENT after the addition of log2 to libm."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3964
#, no-wrap
msgid "900028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3965
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216615[216615]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3966
#, no-wrap
msgid "December 21, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3968
#, no-wrap
msgid "9.0-CURRENT after the addition of the Hhook (Helper Hook), Khelp (Kernel Helpers) and Object Specific Data (OSD) KPIs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3969
#, no-wrap
msgid "900029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3970
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216758[216758]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3971
#, no-wrap
msgid "December 28, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3973
#, no-wrap
msgid "9.0-CURRENT after the modification of the TCP stack to allow Khelp modules to interact with it via helper hook points and store per-connection data in the TCP control block."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3974
#, no-wrap
msgid "900030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3975
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/217309[217309]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3976
#, no-wrap
msgid "January 12, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3978
#, no-wrap
msgid "9.0-CURRENT after the update of libdialog to version 20100428."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3979
#, no-wrap
msgid "900031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3980
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218414[218414]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3981
#, no-wrap
msgid "February 7, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3983
#, no-wrap
msgid "9.0-CURRENT after the addition of man:pthread_getthreadid_np[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3984
#, no-wrap
msgid "900032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3985
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218425[218425]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3986
#, no-wrap
msgid "February 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3988
#, no-wrap
msgid "9.0-CURRENT after the removal of the uio_yield prototype and symbol."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3966
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3989
#, no-wrap
msgid "900033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3990
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/218822[218822]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3991
#, no-wrap
msgid "February 18, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3993
#, no-wrap
msgid "9.0-CURRENT after the update of binutils to version 2.17.50."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3994
#, no-wrap
msgid "900034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3995
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219406[219406]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3996
#, no-wrap
msgid "March 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3998
#, no-wrap
msgid "9.0-CURRENT after the struct sysvec (sv_schedtail) changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3999
#, no-wrap
msgid "900035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4000
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/220150[220150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4001
#, no-wrap
msgid "March 29, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4003
#, no-wrap
msgid "9.0-CURRENT after the update of base gcc and libstdc++ to the last GPLv2 licensed revision."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4004
#, no-wrap
msgid "900036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4005
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/220770[220770]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4006
#, no-wrap
msgid "April 18, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4008
#, no-wrap
msgid "9.0-CURRENT after the removal of libobjc and Objective-C support from the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4009
#, no-wrap
msgid "900037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4010
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221862[221862]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4011
#, no-wrap
msgid "May 13, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4013
#, no-wrap
msgid "9.0-CURRENT after importing the man:libprocstat[3] library and man:fuser[1] utility to the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4014
#, no-wrap
msgid "900038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4015
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222167[222167]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4016
#, no-wrap
msgid "May 22, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4018
#, no-wrap
msgid "9.0-CURRENT after adding a lock flag argument to man:VFS_FHTOVP[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4019
#, no-wrap
msgid "900039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4020
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/223637[223637]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:3998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4021
#, no-wrap
msgid "June 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4023
#, no-wrap
msgid "9.0-CURRENT after importing pf from OpenBSD 4.5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4024
#, no-wrap
msgid "900040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4025
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224217[224217]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4003
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4919
#, no-wrap
msgid "July 19, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4028
#, no-wrap
msgid "Increase default MAXCPU for FreeBSD to 64 on amd64 and ia64 and to 128 for XLP (mips)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4029
#, no-wrap
msgid "900041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4030
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224834[224834]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4031
#, no-wrap
msgid "August 13, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4010
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4033
#, no-wrap
msgid "9.0-CURRENT after the implementation of Capsicum capabilities; man:fget[9] gains a rights argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4034
#, no-wrap
msgid "900042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4012
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4040
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225350[225350]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4036
#, no-wrap
msgid "August 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4038
#, no-wrap
msgid "Bump shared libraries' version numbers for libraries whose ABI has changed in preparation for 9.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4039
#, no-wrap
msgid "900043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4041
#, no-wrap
msgid "September 2, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4043
#, no-wrap
msgid "Add automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4044
#, no-wrap
msgid "900044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4045
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225469[225469]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4023
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4906
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4929
#, no-wrap
msgid "September 10, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4025
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4048
#, no-wrap
msgid "Re-factor auto-quirk. 9.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4049
#, no-wrap
msgid "900045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4050
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229285[229285]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4028
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4056
#, no-wrap
msgid "January 2, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4053
#, no-wrap
msgid "9-STABLE after MFC of true/false from 1000002."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4054
#, no-wrap
msgid "900500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4055
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229318[229318]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4058
#, no-wrap
msgid "9.0-STABLE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4059
#, no-wrap
msgid "900501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4060
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229723[229723]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4038
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4944
#, no-wrap
msgid "January 6, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4063
#, no-wrap
msgid "9.0-STABLE after merging of addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4064
#, no-wrap
msgid "900502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4065
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230237[230237]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4068
#, no-wrap
msgid "9.0-STABLE after merging gperf 3.0.3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4069
#, no-wrap
msgid "900503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4070
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231768[231768]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4048
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4954
#, no-wrap
msgid "February 15, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4073
#, no-wrap
msgid "9.0-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4074
#, no-wrap
msgid "900504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4075
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232728[232728]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4053
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4936
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4964
#, no-wrap
msgid "March 3, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4078
#, no-wrap
msgid "9.0-STABLE after changes related to mounting of filesystem inside a jail."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4079
#, no-wrap
msgid "900505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4080
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232945[232945]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4081
#, no-wrap
msgid "March 13, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4083
#, no-wrap
msgid "9.0-STABLE after introduction of new man:tcp[4] socket options: TCP_KEEPINIT, TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4084
#, no-wrap
msgid "900506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4085
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/235786[235786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4088
#, no-wrap
msgid "9.0-STABLE after introduction of the `quick_exit` function and related changes required for C++11."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4089
#, no-wrap
msgid "901000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4090
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239082[239082]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4091
#, no-wrap
msgid "August 5, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4093
#, no-wrap
msgid "9.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4094
#, no-wrap
msgid "901500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4095
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/239081[239081]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4096
#, no-wrap
msgid "August 6, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4098
#, no-wrap
msgid "9.1-STABLE after branching releng/9.1 (RELENG_9_1)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4099
#, no-wrap
msgid "901501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4100
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/240659[240659]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4101
#, no-wrap
msgid "November 11, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4103
#, no-wrap
msgid "9.1-STABLE after man:LIST_PREV[3] added to queue.h (rev link:https://svnweb.freebsd.org/changeset/base/242893[242893]) and KBI change in USB serial devices."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4104
#, no-wrap
msgid "901502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4105
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/243656[243656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4106
#, no-wrap
msgid "November 28, 2012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4108
#, no-wrap
msgid "9.1-STABLE after USB serial jitter buffer requires rebuild of USB serial device modules."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4109
#, no-wrap
msgid "901503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4110
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247090[247090]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4088
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4969
#, no-wrap
msgid "February 21, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4113
#, no-wrap
msgid "9.1-STABLE after USB moved to the driver structure requiring a rebuild of all USB modules. Also indicates the presence of nmtree."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4114
#, no-wrap
msgid "901504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4115
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248338[248338]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4116
#, no-wrap
msgid "March 15, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4118
#, no-wrap
msgid "9.1-STABLE after install gained -l, -M, -N and related flags and cat gained the -l option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4119
#, no-wrap
msgid "901505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4120
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/251687[251687]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4121
#, no-wrap
msgid "June 13, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4123
#, no-wrap
msgid "9.1-STABLE after fixes in ctfmerge bootstrapping (rev link:https://svnweb.freebsd.org/changeset/base/249243[249243])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4124
#, no-wrap
msgid "902001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4125
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253912[253912]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4126
#, no-wrap
msgid "August 3, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4128
#, no-wrap
msgid "`releng/9.2` branched from `stable/9`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4129
#, no-wrap
msgid "902501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4130
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/253913[253913]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4131
#, no-wrap
msgid "August 2, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4133
#, no-wrap
msgid "9.2-STABLE after creation of `releng/9.2` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4134
#, no-wrap
msgid "902502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4135
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254938[254938]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4136
#, no-wrap
msgid "August 26, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4138
#, no-wrap
msgid "9.2-STABLE after inclusion of the `PIM_RESCAN` CAM path inquiry flag."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4139
#, no-wrap
msgid "902503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4140
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/254979[254979]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4141
#, no-wrap
msgid "August 27, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4143
#, no-wrap
msgid "9.2-STABLE after inclusion of the `SI_UNMAPPED` cdev flag."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4144
#, no-wrap
msgid "902504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4145
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/256917[256917]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4125
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4148
#, no-wrap
msgid "9.2-STABLE after inclusion of support for \"first boot\" man:rc[8] scripts."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4149
#, no-wrap
msgid "902505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4150
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259448[259448]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4151
#, no-wrap
msgid "December 12, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4153
#, no-wrap
msgid "9.2-STABLE after Heimdal encoding fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4154
#, no-wrap
msgid "902506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4155
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/260136[260136]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4158
#, no-wrap
msgid "9-STABLE after MAP_STACK fixes (rev link:https://svnweb.freebsd.org/changeset/base/260082[260082])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4159
#, no-wrap
msgid "902507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4163
#, no-wrap
msgid "9-STABLE after upgrade of libc++ to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4164
#, no-wrap
msgid "902508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4165
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263171[263171]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4168
#, no-wrap
msgid "9-STABLE after merge of the Radeon KMS driver (rev link:https://svnweb.freebsd.org/changeset/base/263170[263170])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4169
#, no-wrap
msgid "902509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4170
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263509[263509]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4173
#, no-wrap
msgid "9-STABLE after upgrade of llvm/clang to 3.4 release."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4174
#, no-wrap
msgid "902510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4175
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/263818[263818]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4153
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4181
#, no-wrap
msgid "March 27, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4178
#, no-wrap
msgid "9-STABLE after merge of the man:vt[4] driver."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4179
#, no-wrap
msgid "902511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4183
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:06.openssl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4184
#, no-wrap
msgid "902512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4162
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4988
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/265123[265123]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4188
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:08.tcp."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4189
#, no-wrap
msgid "903000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4190
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267656[267656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4168
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4196
#, no-wrap
msgid "June 20, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4193
#, no-wrap
msgid "9-RC1 `releng/9.3` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4194
#, no-wrap
msgid "903500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4195
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/267657[267657]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4198
#, no-wrap
msgid "9.3-STABLE `releng/9.3` branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4199
#, no-wrap
msgid "903501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4200
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268443[268443]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4203
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:17.kmem (rev link:https://svnweb.freebsd.org/changeset/base/268433[268433])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4204
#, no-wrap
msgid "903502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4205
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/270175[270175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4206
#, no-wrap
msgid "August 19, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4208
#, no-wrap
msgid "9-STABLE after `SOCK_DGRAM` bug fix (rev link:https://svnweb.freebsd.org/changeset/base/269789[269789])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4209
#, no-wrap
msgid "903503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4213
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/269687[269687])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4214
#, no-wrap
msgid "903504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4218
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4219
#, no-wrap
msgid "903505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4223
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:20, FreeBSD-SA-14:21, and FreeBSD-SA-14:22 (rev link:https://svnweb.freebsd.org/changeset/base/273412[273412])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4224
#, no-wrap
msgid "903506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4228
#, no-wrap
msgid "9-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4229
#, no-wrap
msgid "903507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4233
#, no-wrap
msgid "9-STABLE after merging an important fix to the LLVM vectorizer, which could lead to buffer overruns in some cases."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4234
#, no-wrap
msgid "903508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4238
#, no-wrap
msgid "9-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4239
#, no-wrap
msgid "903509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4240
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/296219[296219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4241
#, no-wrap
msgid "February 29, 2016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4220
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4243
#, no-wrap
msgid "9-STABLE after bumping the default value of `compat.linux.osrelease` to `2.6.18` to support the linux-c6-* ports out of the box."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4244
#, no-wrap
msgid "903510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4245
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/300236[300236]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4248
#, no-wrap
msgid "9-STABLE after System Binary Interface (SBI) page was moved in latest version of Berkeley Boot Loader (BBL) due to code size increase in link:https://svnweb.freebsd.org/changeset/base/300234[300234]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4249
#, no-wrap
msgid "903511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4250
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305735[305735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4252
#, no-wrap
msgid "9-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4255
#, no-wrap
msgid "FreeBSD 8 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4258
#, no-wrap
msgid "FreeBSD 8 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4267
#, no-wrap
msgid "800000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4268
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172531[172531]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4269
#, no-wrap
msgid "October 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4271
#, no-wrap
msgid "8.0-CURRENT. Separating wide and single byte ctype."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4272
#, no-wrap
msgid "800001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4273
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172688[172688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4274
#, no-wrap
msgid "October 16, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4276
#, no-wrap
msgid "8.0-CURRENT after libpcap 0.9.8 and tcpdump 3.9.8 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4277
#, no-wrap
msgid "800002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4278
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172841[172841]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4279
#, no-wrap
msgid "October 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4281
#, no-wrap
msgid "8.0-CURRENT after renaming man:kthread_create[9] and friends to man:kproc_create[9] etc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4282
#, no-wrap
msgid "800003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4283
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172932[172932]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4284
#, no-wrap
msgid "October 24, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4286
#, no-wrap
msgid "8.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was added, which required the ABI of the PCIOCGETCONF IOCTL to be broken again"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4287
#, no-wrap
msgid "800004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4288
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173573[173573]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4289
#, no-wrap
msgid "November 12, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4291
#, no-wrap
msgid "8.0-CURRENT after man:agp[4] driver moved from src/sys/pci to src/sys/dev/agp"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4292
#, no-wrap
msgid "800005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4293
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174261[174261]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4294
#, no-wrap
msgid "December 4, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4296
#, no-wrap
msgid "8.0-CURRENT after changes to the jumbo frame allocator (rev link:https://svnweb.freebsd.org/changeset/base/174247[174247])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4297
#, no-wrap
msgid "800006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4298
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174399[174399]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4276
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5845
#, no-wrap
msgid "December 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4301
#, no-wrap
msgid "8.0-CURRENT after the addition of callgraph capture functionality to man:hwpmc[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4302
#, no-wrap
msgid "800007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4303
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174901[174901]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4304
#, no-wrap
msgid "December 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4306
#, no-wrap
msgid "8.0-CURRENT after `kdb_enter()` gains a \"why\" argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4307
#, no-wrap
msgid "800008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4308
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174951[174951]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4286
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4309
#, no-wrap
msgid "December 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4311
#, no-wrap
msgid "8.0-CURRENT after LK_EXCLUPGRADE option removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4312
#, no-wrap
msgid "800009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4313
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175168[175168]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4314
#, no-wrap
msgid "January 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4316
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_disown[9]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4317
#, no-wrap
msgid "800010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4318
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175204[175204]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4319
#, no-wrap
msgid "January 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4321
#, no-wrap
msgid "8.0-CURRENT after the man:vn_lock[9] prototype change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4322
#, no-wrap
msgid "800011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4323
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175295[175295]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4301
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4324
#, no-wrap
msgid "January 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4326
#, no-wrap
msgid "8.0-CURRENT after the man:VOP_LOCK[9] and man:VOP_UNLOCK[9] prototype changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4327
#, no-wrap
msgid "800012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4328
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175487[175487]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4329
#, no-wrap
msgid "January 19, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4308
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4331
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_recursed[9], man:BUF_RECURSED[9] and man:BUF_ISLOCKED[9] and the removal of `BUF_REFCNT()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4332
#, no-wrap
msgid "800013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4333
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175581[175581]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4334
#, no-wrap
msgid "January 23, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4336
#, no-wrap
msgid "8.0-CURRENT after introduction of the \"ASCII\" encoding."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4337
#, no-wrap
msgid "800014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4338
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175636[175636]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4339
#, no-wrap
msgid "January 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4318
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4341
#, no-wrap
msgid "8.0-CURRENT after changing the prototype of man:lockmgr[9] and removal of `lockcount()` and `LOCKMGR_ASSERT()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4342
#, no-wrap
msgid "800015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4343
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175688[175688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4321
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4344
#, no-wrap
msgid "January 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4346
#, no-wrap
msgid "8.0-CURRENT after extending the types of the man:fts[3] structures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4347
#, no-wrap
msgid "800016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4348
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/175872[175872]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4326
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4349
#, no-wrap
msgid "February 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4328
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4351
#, no-wrap
msgid "8.0-CURRENT after adding an argument to man:MEXTADD[9]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4352
#, no-wrap
msgid "800017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4353
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176015[176015]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4331
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4354
#, no-wrap
msgid "February 6, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4356
#, no-wrap
msgid "8.0-CURRENT after the introduction of LK_NODUP and LK_NOWITNESS options in the man:lockmgr[9] space."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4357
#, no-wrap
msgid "800018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4335
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4358
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176112[176112]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4336
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5332
#, no-wrap
msgid "February 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4361
#, no-wrap
msgid "8.0-CURRENT after the addition of m_collapse."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4362
#, no-wrap
msgid "800019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4363
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176124[176124]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4364
#, no-wrap
msgid "February 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4366
#, no-wrap
msgid "8.0-CURRENT after the addition of current working directory, root directory, and jail directory support to the kern.proc.filedesc sysctl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4367
#, no-wrap
msgid "800020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4368
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176251[176251]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4369
#, no-wrap
msgid "February 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4371
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_assert[9] and `BUF_ASSERT` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4372
#, no-wrap
msgid "800021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4373
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176321[176321]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4374
#, no-wrap
msgid "February 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4376
#, no-wrap
msgid "8.0-CURRENT after introduction of man:lockmgr_args[9] and LK_INTERNAL flag removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4377
#, no-wrap
msgid "800022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4378
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176556[176556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4356
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4379
#, no-wrap
msgid "(backed out)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4381
#, no-wrap
msgid "8.0-CURRENT after changing the default system ar to BSD man:ar[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4382
#, no-wrap
msgid "800023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4383
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176560[176560]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4384
#, no-wrap
msgid "February 25, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4386
#, no-wrap
msgid "8.0-CURRENT after changing the prototypes of man:lockstatus[9] and man:VOP_ISLOCKED[9];, more specifically retiring the `struct thread` argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4387
#, no-wrap
msgid "800024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4388
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176709[176709]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4389
#, no-wrap
msgid "March 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4391
#, no-wrap
msgid "8.0-CURRENT after axing out the `lockwaiters` and `BUF_LOCKWAITERS` functions, changing the return value of `brelvp` from void to int and introducing new flags for man:lockinit[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4392
#, no-wrap
msgid "800025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4393
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176958[176958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4394
#, no-wrap
msgid "March 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4396
#, no-wrap
msgid "8.0-CURRENT after adding F_DUP2FD command to man:fcntl[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4397
#, no-wrap
msgid "800026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4398
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177086[177086]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4399
#, no-wrap
msgid "March 12, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4401
#, no-wrap
msgid "8.0-CURRENT after changing the priority parameter to cv_broadcastpri such that 0 means no priority."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4402
#, no-wrap
msgid "800027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4403
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177551[177551]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4404
#, no-wrap
msgid "March 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4406
#, no-wrap
msgid "8.0-CURRENT after changing the bpf monitoring ABI when zerocopy bpf buffers were added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4407
#, no-wrap
msgid "800028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4408
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177637[177637]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4409
#, no-wrap
msgid "March 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4411
#, no-wrap
msgid "8.0-CURRENT after adding l_sysid to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4412
#, no-wrap
msgid "800029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4413
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177688[177688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4414
#, no-wrap
msgid "March 28, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4416
#, no-wrap
msgid "8.0-CURRENT after reintegration of the `BUF_LOCKWAITERS` function and the addition of man:lockmgr_waiters[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4417
#, no-wrap
msgid "800030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4418
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177844[177844]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4419
#, no-wrap
msgid "April 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4421
#, no-wrap
msgid "8.0-CURRENT after the introduction of the man:rw_try_rlock[9] and man:rw_try_wlock[9] functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4422
#, no-wrap
msgid "800031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4423
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177958[177958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4424
#, no-wrap
msgid "April 6, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4426
#, no-wrap
msgid "8.0-CURRENT after the introduction of the `lockmgr_rw` and `lockmgr_args_rw` functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4427
#, no-wrap
msgid "800032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4428
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178006[178006]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4406
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4434
#, no-wrap
msgid "April 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4431
#, no-wrap
msgid "8.0-CURRENT after the implementation of the openat and related syscalls, introduction of the O_EXEC flag for the man:open[2], and providing the corresponding linux compatibility syscalls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4432
#, no-wrap
msgid "800033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4433
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178017[178017]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4436
#, no-wrap
msgid "8.0-CURRENT after added man:write[2] support for man:psm[4] in native operation level. Now arbitrary commands can be written to [.filename]#/dev/psm%d# and status can be read back from it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4437
#, no-wrap
msgid "800034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4438
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178051[178051]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4416
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5342
#, no-wrap
msgid "April 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4441
#, no-wrap
msgid "8.0-CURRENT after introduction of the `memrchr` function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4442
#, no-wrap
msgid "800035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4443
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178256[178256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4444
#, no-wrap
msgid "April 16, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4446
#, no-wrap
msgid "8.0-CURRENT after introduction of the `fdopendir` function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4447
#, no-wrap
msgid "800036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4448
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178362[178362]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4426
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5362
#, no-wrap
msgid "April 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4451
#, no-wrap
msgid "8.0-CURRENT after switchover of 802.11 wireless to multi-bss support (aka vaps)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4452
#, no-wrap
msgid "800037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4453
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178892[178892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4454
#, no-wrap
msgid "May 9, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4456
#, no-wrap
msgid "8.0-CURRENT after addition of multi routing table support (aka man:setfib[1], man:setfib[2])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4457
#, no-wrap
msgid "800038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4435
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4458
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179316[179316]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4459
#, no-wrap
msgid "May 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4461
#, no-wrap
msgid "8.0-CURRENT after removal of netatm and ISDN4BSD. Also, the addition of the Compact C Type (CTF) tools."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4462
#, no-wrap
msgid "800039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4463
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179784[179784]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4464
#, no-wrap
msgid "June 14, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4466
#, no-wrap
msgid "8.0-CURRENT after removal of sgtty."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4467
#, no-wrap
msgid "800040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4468
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/180025[180025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4469
#, no-wrap
msgid "June 26, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4471
#, no-wrap
msgid "8.0-CURRENT with kernel NFS lockd client."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4472
#, no-wrap
msgid "800041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4473
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/180691[180691]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4474
#, no-wrap
msgid "July 22, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4476
#, no-wrap
msgid "8.0-CURRENT after addition of man:arc4random_buf[3] and man:arc4random_uniform[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4477
#, no-wrap
msgid "800042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4478
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181439[181439]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4479
#, no-wrap
msgid "August 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4481
#, no-wrap
msgid "8.0-CURRENT after addition of man:cpuctl[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4482
#, no-wrap
msgid "800043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4483
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181694[181694]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4484
#, no-wrap
msgid "August 13, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4486
#, no-wrap
msgid "8.0-CURRENT after changing man:bpf[4] to use a single device node, instead of device cloning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4487
#, no-wrap
msgid "800044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4488
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181803[181803]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4489
#, no-wrap
msgid "August 17, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4491
#, no-wrap
msgid "8.0-CURRENT after the commit of the first step of the vimage project renaming global variables to be virtualized with a V_ prefix with macros to map them back to their global names."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4492
#, no-wrap
msgid "800045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4493
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181905[181905]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4471
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5382
#, no-wrap
msgid "August 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4496
#, no-wrap
msgid "8.0-CURRENT after the integration of the MPSAFE TTY layer, including changes to various drivers and utilities that interact with it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4497
#, no-wrap
msgid "800046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4498
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182869[182869]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4499
#, no-wrap
msgid "September 8, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4478
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4501
#, no-wrap
msgid "8.0-CURRENT after the separation of the GDT per CPU on amd64 architecture."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4502
#, no-wrap
msgid "800047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4480
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4503
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182905[182905]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4481
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4504
#, no-wrap
msgid "September 10, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4483
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4506
#, no-wrap
msgid "8.0-CURRENT after removal of VSVTX, VSGID and VSUID."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4484
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4507
#, no-wrap
msgid "800048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4508
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183091[183091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4509
#, no-wrap
msgid "September 16, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4488
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4511
#, no-wrap
msgid "8.0-CURRENT after converting the kernel NFS mount code to accept individual mount options in the man:nmount[2] iovec, not just one big struct nfs_args."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4512
#, no-wrap
msgid "800049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4513
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183114[183114]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4514
#, no-wrap
msgid "September 17, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4516
#, no-wrap
msgid "8.0-CURRENT after the removal of man:suser[9] and man:suser_cred[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4517
#, no-wrap
msgid "800050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4518
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184099[184099]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4519
#, no-wrap
msgid "October 20, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4521
#, no-wrap
msgid "8.0-CURRENT after buffer cache API change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4522
#, no-wrap
msgid "800051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4523
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184205[184205]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4524
#, no-wrap
msgid "October 23, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4526
#, no-wrap
msgid "8.0-CURRENT after the removal of the man:MALLOC[9] and man:FREE[9] macros."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4527
#, no-wrap
msgid "800052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4528
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184419[184419]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4529
#, no-wrap
msgid "October 28, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4508
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4531
#, no-wrap
msgid "8.0-CURRENT after the introduction of accmode_t and renaming of VOP_ACCESS 'a_mode' argument to 'a_accmode'."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4532
#, no-wrap
msgid "800053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4533
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/184555[184555]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4534
#, no-wrap
msgid "November 2, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4536
#, no-wrap
msgid "8.0-CURRENT after the prototype change of man:vfs_busy[9] and the introduction of its MBF_NOWAIT and MBF_MNTLSTLOCK flags."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4537
#, no-wrap
msgid "800054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4538
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185162[185162]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4539
#, no-wrap
msgid "November 22, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4541
#, no-wrap
msgid "8.0-CURRENT after the addition of buf_ring, memory barriers and ifnet functions to facilitate multiple hardware transmit queues for cards that support them, and a lockless ring-buffer implementation to enable drivers to more efficiently manage queuing of packets."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4542
#, no-wrap
msgid "800055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4543
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185363[185363]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4544
#, no-wrap
msgid "November 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4546
#, no-wrap
msgid "8.0-CURRENT after the addition of Intel(TM) Core, Core2, and Atom support to man:hwpmc[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4547
#, no-wrap
msgid "800056"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4548
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185435[185435]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4549
#, no-wrap
msgid "November 29, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4551
#, no-wrap
msgid "8.0-CURRENT after the introduction of multi-/no-IPv4/v6 jails."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4552
#, no-wrap
msgid "800057"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4553
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185522[185522]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4554
#, no-wrap
msgid "December 1, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4556
#, no-wrap
msgid "8.0-CURRENT after the switch to the ath hal source code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4557
#, no-wrap
msgid "800058"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4558
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185968[185968]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4559
#, no-wrap
msgid "December 12, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4561
#, no-wrap
msgid "8.0-CURRENT after the introduction of the VOP_VPTOCNP operation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4562
#, no-wrap
msgid "800059"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4563
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/186119[186119]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4564
#, no-wrap
msgid "December 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4566
#, no-wrap
msgid "8.0-CURRENT incorporates the new arp-v2 rewrite."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4567
#, no-wrap
msgid "800060"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4568
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/186344[186344]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4569
#, no-wrap
msgid "December 19, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4571
#, no-wrap
msgid "8.0-CURRENT after the addition of makefs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4572
#, no-wrap
msgid "800061"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4573
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187289[187289]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4574
#, no-wrap
msgid "January 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4576
#, no-wrap
msgid "8.0-CURRENT after TCP Appropriate Byte Counting."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4577
#, no-wrap
msgid "800062"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4578
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187830[187830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4579
#, no-wrap
msgid "January 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4581
#, no-wrap
msgid "8.0-CURRENT after removal of `minor()`, `minor2unit()`, `unit2minor()`, etc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4559
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4582
#, no-wrap
msgid "800063"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4583
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188745[188745]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4584
#, no-wrap
msgid "February 18, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4586
#, no-wrap
msgid "8.0-CURRENT after GENERIC config change to use the USB2 stack, but also the addition of man:fdevname[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4587
#, no-wrap
msgid "800064"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4588
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188946[188946]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4589
#, no-wrap
msgid "February 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4591
#, no-wrap
msgid "8.0-CURRENT after the USB2 stack is moved to and replaces dev/usb."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4592
#, no-wrap
msgid "800065"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4593
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189092[189092]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4594
#, no-wrap
msgid "February 26, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4596
#, no-wrap
msgid "8.0-CURRENT after the renaming of all functions in man:libmp[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4597
#, no-wrap
msgid "800066"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4598
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189110[189110]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4599
#, no-wrap
msgid "February 27, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4601
#, no-wrap
msgid "8.0-CURRENT after changing USB devfs handling and layout."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4602
#, no-wrap
msgid "800067"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4603
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189136[189136]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4604
#, no-wrap
msgid "February 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4606
#, no-wrap
msgid "8.0-CURRENT after adding `getdelim()`, `getline()`, `stpncpy()`, `strnlen()`, `wcsnlen()`, `wcscasecmp()`, and `wcsncasecmp()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4607
#, no-wrap
msgid "800068"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4608
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189276[189276]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4609
#, no-wrap
msgid "March 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4611
#, no-wrap
msgid "8.0-CURRENT after renaming the ushub devclass to uhub."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4612
#, no-wrap
msgid "800069"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4613
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189585[189585]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4591
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4619
#, no-wrap
msgid "March 9, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4616
#, no-wrap
msgid "8.0-CURRENT after libusb20.so.1 was renamed to libusb.so.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4617
#, no-wrap
msgid "800070"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4618
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189592[189592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4621
#, no-wrap
msgid "8.0-CURRENT after merging IGMPv3 and Source-Specific Multicast (SSM) to the IPv4 stack."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4622
#, no-wrap
msgid "800071"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4623
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189825[189825]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4601
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5427
#, no-wrap
msgid "March 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4626
#, no-wrap
msgid "8.0-CURRENT after gcc was patched to use C99 inline semantics in c99 and gnu99 mode."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4627
#, no-wrap
msgid "800072"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4628
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189853[189853]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4629
#, no-wrap
msgid "March 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4631
#, no-wrap
msgid "8.0-CURRENT after the IFF_NEEDSGIANT flag has been removed; non-MPSAFE network device drivers are no longer supported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4632
#, no-wrap
msgid "800073"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4633
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190265[190265]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4634
#, no-wrap
msgid "March 18, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4636
#, no-wrap
msgid "8.0-CURRENT after the dynamic string token substitution has been implemented for rpath and needed paths."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4637
#, no-wrap
msgid "800074"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4638
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190373[190373]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4639
#, no-wrap
msgid "March 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4641
#, no-wrap
msgid "8.0-CURRENT after tcpdump 4.0.0 and libpcap 1.0.0 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4642
#, no-wrap
msgid "800075"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4643
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190787[190787]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4644
#, no-wrap
msgid "April 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4623
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4646
#, no-wrap
msgid "8.0-CURRENT after layout of structs vnet_net, vnet_inet and vnet_ipfw has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4647
#, no-wrap
msgid "800076"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4648
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190866[190866]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4649
#, no-wrap
msgid "April 9, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4651
#, no-wrap
msgid "8.0-CURRENT after adding delay profiles in dummynet."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4652
#, no-wrap
msgid "800077"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4653
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/190914[190914]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4654
#, no-wrap
msgid "April 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4656
#, no-wrap
msgid "8.0-CURRENT after removing `VOP_LEASE()` and vop_vector.vop_lease."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4657
#, no-wrap
msgid "800078"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4658
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191080[191080]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4636
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4641
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4646
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5409
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5437
#, no-wrap
msgid "April 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4661
#, no-wrap
msgid "8.0-CURRENT after struct rt_weight fields have been added to struct rt_metrics and struct rt_metrics_lite, changing the layout of struct rt_metrics_lite. A bump to RTM_VERSION was made, but backed out."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4662
#, no-wrap
msgid "800079"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4663
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191117[191117]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4666
#, no-wrap
msgid "8.0-CURRENT after struct llentry pointers are added to struct route and struct route_in6."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4667
#, no-wrap
msgid "800080"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4668
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191126[191126]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4671
#, no-wrap
msgid "8.0-CURRENT after layout of struct inpcb has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4672
#, no-wrap
msgid "800081"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4673
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191267[191267]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4674
#, no-wrap
msgid "April 19, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4676
#, no-wrap
msgid "8.0-CURRENT after the layout of struct malloc_type has been changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4677
#, no-wrap
msgid "800082"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4678
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191368[191368]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4679
#, no-wrap
msgid "April 21, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4681
#, no-wrap
msgid "8.0-CURRENT after the layout of struct ifnet has changed, and with `if_ref()` and `if_rele()` ifnet refcounting."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4682
#, no-wrap
msgid "800083"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4683
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191389[191389]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4684
#, no-wrap
msgid "April 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4686
#, no-wrap
msgid "8.0-CURRENT after the implementation of a low-level Bluetooth HCI API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4687
#, no-wrap
msgid "800084"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4688
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191672[191672]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4689
#, no-wrap
msgid "April 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4691
#, no-wrap
msgid "8.0-CURRENT after IPv6 SSM and MLDv2 changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4692
#, no-wrap
msgid "800085"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4693
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191688[191688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4694
#, no-wrap
msgid "April 30, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4696
#, no-wrap
msgid "8.0-CURRENT after enabling support for VIMAGE kernel builds with one active image."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4697
#, no-wrap
msgid "800086"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4698
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191910[191910]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4699
#, no-wrap
msgid "May 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4701
#, no-wrap
msgid "8.0-CURRENT after adding support for input lines of arbitrarily length in man:patch[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4702
#, no-wrap
msgid "800087"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4703
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191990[191990]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4704
#, no-wrap
msgid "May 11, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4706
#, no-wrap
msgid "8.0-CURRENT after some VFS KPI changes. The thread argument has been removed from the FSD parts of the VFS. `VFS_*` functions do not need the context any more because it always refers to `curthread`. In some special cases, the old behavior is retained."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4707
#, no-wrap
msgid "800088"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4708
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192470[192470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4709
#, no-wrap
msgid "May 20, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4688
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4711
#, no-wrap
msgid "8.0-CURRENT after net80211 monitor mode changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4712
#, no-wrap
msgid "800089"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4713
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192649[192649]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4691
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4719
#, no-wrap
msgid "May 23, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4716
#, no-wrap
msgid "8.0-CURRENT after adding UDP control block support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4717
#, no-wrap
msgid "800090"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4718
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192669[192669]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4721
#, no-wrap
msgid "8.0-CURRENT after virtualizing interface cloning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4722
#, no-wrap
msgid "800091"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4723
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192895[192895]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4724
#, no-wrap
msgid "May 27, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4726
#, no-wrap
msgid "8.0-CURRENT after adding hierarchical jails and removing global securelevel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4727
#, no-wrap
msgid "800092"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4728
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193011[193011]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4706
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4734
#, no-wrap
msgid "May 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4708
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4731
#, no-wrap
msgid "8.0-CURRENT after changing `sx_init_flags()` KPI. The `SX_ADAPTIVESPIN` is retired and a new `SX_NOADAPTIVE` flag is introduced to handle the reversed logic."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4732
#, no-wrap
msgid "800093"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4733
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193047[193047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4736
#, no-wrap
msgid "8.0-CURRENT after adding mnt_xflag to struct mount."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4737
#, no-wrap
msgid "800094"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4738
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193093[193093]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4716
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4744
#, no-wrap
msgid "May 30, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4741
#, no-wrap
msgid "8.0-CURRENT after adding man:VOP_ACCESSX[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4742
#, no-wrap
msgid "800095"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4743
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193096[193096]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4723
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4746
#, no-wrap
msgid "8.0-CURRENT after changing the polling KPI. The polling handlers now return the number of packets processed. A new `IFCAP_POLLING_NOCOUNT` is also introduced to specify that the return value is not significant and the counting should be skipped."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4747
#, no-wrap
msgid "800096"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4748
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193219[193219]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4749
#, no-wrap
msgid "June 1, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4751
#, no-wrap
msgid "8.0-CURRENT after updating to the new netisr implementation and after changing the way we store and access FIBs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4752
#, no-wrap
msgid "800097"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4753
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193731[193731]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4754
#, no-wrap
msgid "June 8, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4756
#, no-wrap
msgid "8.0-CURRENT after the introduction of vnet destructor hooks and infrastructure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4758
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194012[194012]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4759
#, no-wrap
msgid "June 11, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4761
#, no-wrap
msgid "8.0-CURRENT after the introduction of netgraph outbound to inbound path call detection and queuing, which also changed the layout of struct thread."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4762
#, no-wrap
msgid "800098"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4763
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194210[194210]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4764
#, no-wrap
msgid "June 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4766
#, no-wrap
msgid "8.0-CURRENT after OpenSSL 0.9.8k import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4767
#, no-wrap
msgid "800099"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4768
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194675[194675]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4769
#, no-wrap
msgid "June 22, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4771
#, no-wrap
msgid "8.0-CURRENT after NGROUPS update and moving route virtualization into its own VImage module."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4772
#, no-wrap
msgid "800100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4773
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/194920[194920]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4774
#, no-wrap
msgid "June 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4776
#, no-wrap
msgid "8.0-CURRENT after SYSVIPC ABI change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4777
#, no-wrap
msgid "800101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4778
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195175[195175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4779
#, no-wrap
msgid "June 29, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4781
#, no-wrap
msgid "8.0-CURRENT after the removal of the /dev/net/* per-interface character devices."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4782
#, no-wrap
msgid "800102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4783
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195634[195634]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4784
#, no-wrap
msgid "July 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4786
#, no-wrap
msgid "8.0-CURRENT after padding was added to struct sackhint, struct tcpcb, and struct tcpstat."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4787
#, no-wrap
msgid "800103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4788
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195654[195654]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4789
#, no-wrap
msgid "July 13, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4791
#, no-wrap
msgid "8.0-CURRENT after replacing struct tcpopt with struct toeopt in the TOE driver interface to the TCP syncache."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4792
#, no-wrap
msgid "800104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4793
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195699[195699]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4771
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5457
#, no-wrap
msgid "July 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4796
#, no-wrap
msgid "8.0-CURRENT after the addition of the linker-set based per-vnet allocator."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4797
#, no-wrap
msgid "800105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4798
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195767[195767]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4799
#, no-wrap
msgid "July 19, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4801
#, no-wrap
msgid "8.0-CURRENT after version bump for all shared libraries that do not have symbol versioning turned on."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4802
#, no-wrap
msgid "800106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4803
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195852[195852]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4804
#, no-wrap
msgid "July 24, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4783
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4806
#, no-wrap
msgid "8.0-CURRENT after introduction of OBJT_SG VM object type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4807
#, no-wrap
msgid "800107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4808
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196037[196037]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4809
#, no-wrap
msgid "August 2, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4811
#, no-wrap
msgid "8.0-CURRENT after making the newbus subsystem Giant free by adding the newbus sxlock and 8.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4812
#, no-wrap
msgid "800108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4813
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/199627[199627]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4814
#, no-wrap
msgid "November 21, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4816
#, no-wrap
msgid "8.0-STABLE after implementing EVFILT_USER kevent filter."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4817
#, no-wrap
msgid "800500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4818
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/201749[201749]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4819
#, no-wrap
msgid "January 7, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4821
#, no-wrap
msgid "8.0-STABLE after `__FreeBSD_version` bump to make `pkg_add -r` use packages-8-stable."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4822
#, no-wrap
msgid "800501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4823
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/202922[202922]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4824
#, no-wrap
msgid "January 24, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4826
#, no-wrap
msgid "8.0-STABLE after change of the man:scandir[3] and man:alphasort[3] prototypes to conform to SUSv4."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4827
#, no-wrap
msgid "800502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4828
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203299[203299]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4829
#, no-wrap
msgid "January 31, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4831
#, no-wrap
msgid "8.0-STABLE after addition of man:sigpause[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4832
#, no-wrap
msgid "800503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4833
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/204344[204344]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4834
#, no-wrap
msgid "February 25, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4836
#, no-wrap
msgid "8.0-STABLE after addition of SIOCGIFDESCR and SIOCSIFDESCR ioctls to network interfaces. These ioctl can be used to manipulate interface description, as inspired by OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4837
#, no-wrap
msgid "800504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4838
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/204546[204546]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4839
#, no-wrap
msgid "March 1, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4841
#, no-wrap
msgid "8.0-STABLE after MFC of importing x86emu, a software emulator for real mode x86 CPU from OpenBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4842
#, no-wrap
msgid "800505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4843
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/208259[208259]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4844
#, no-wrap
msgid "May 18, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4823
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4846
#, no-wrap
msgid "8.0-STABLE after MFC of adding liblzma, xz, xzdec, and lzmainfo."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4847
#, no-wrap
msgid "801000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4848
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/209150[209150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4826
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4854
#, no-wrap
msgid "June 14, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4851
#, no-wrap
msgid "8.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4852
#, no-wrap
msgid "801500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4853
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/209146[209146]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4856
#, no-wrap
msgid "8.1-STABLE after 8.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4857
#, no-wrap
msgid "801501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4858
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/214762[214762]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4859
#, no-wrap
msgid "November 3, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4838
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4861
#, no-wrap
msgid "8.1-STABLE after KBI change in struct sysentvec, and implementation of PL_FLAG_SCE/SCX/EXEC/SI and pl_siginfo for ptrace(PT_LWPINFO) ."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4862
#, no-wrap
msgid "802000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4863
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216639[216639]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4841
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4846
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5459
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5487
#, no-wrap
msgid "December 22, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4843
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4866
#, no-wrap
msgid "8.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4867
#, no-wrap
msgid "802500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4868
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216654[216654]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4871
#, no-wrap
msgid "8.2-STABLE after 8.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4872
#, no-wrap
msgid "802501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4873
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219107[219107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4874
#, no-wrap
msgid "February 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4876
#, no-wrap
msgid "8.2-STABLE after merging DTrace changes, including support for userland tracing."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4877
#, no-wrap
msgid "802502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4878
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/219324[219324]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4879
#, no-wrap
msgid "March 6, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4881
#, no-wrap
msgid "8.2-STABLE after merging log2 and log2f into libm."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4882
#, no-wrap
msgid "802503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4883
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221275[221275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4884
#, no-wrap
msgid "May 1, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4886
#, no-wrap
msgid "8.2-STABLE after upgrade of the gcc to the last GPLv2 version from the FSF gcc-4_2-branch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4887
#, no-wrap
msgid "802504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4888
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222401[222401]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4866
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4871
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4876
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4899
#, no-wrap
msgid "May 28, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4891
#, no-wrap
msgid "8.2-STABLE after introduction of the KPI and supporting infrastructure for modular congestion control."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4892
#, no-wrap
msgid "802505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4893
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222406[222406]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4896
#, no-wrap
msgid "8.2-STABLE after introduction of Hhook and Khelp KPIs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4897
#, no-wrap
msgid "802506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4898
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222408[222408]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4901
#, no-wrap
msgid "8.2-STABLE after addition of OSD to struct tcpcb."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4902
#, no-wrap
msgid "802507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4903
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222741[222741]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4904
#, no-wrap
msgid "June 6, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4906
#, no-wrap
msgid "8.2-STABLE after ZFS v28 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4907
#, no-wrap
msgid "802508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4908
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/222846[222846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4909
#, no-wrap
msgid "June 8, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4911
#, no-wrap
msgid "8.2-STABLE after removal of the schedtail event handler and addition of the sv_schedtail method to struct sysvec."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4912
#, no-wrap
msgid "802509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4913
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224017[224017]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4914
#, no-wrap
msgid "July 14, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4916
#, no-wrap
msgid "8.2-STABLE after merging the SSSE3 support into binutils."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4917
#, no-wrap
msgid "802510"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4918
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/224214[224214]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4921
#, no-wrap
msgid "8.2-STABLE after addition of RFTSIGZMB flag for man:rfork[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4922
#, no-wrap
msgid "802511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4923
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225458[225458]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4924
#, no-wrap
msgid "September 9, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4926
#, no-wrap
msgid "8.2-STABLE after addition of automatic detection of USB mass storage devices which do not support the no synchronize cache SCSI command."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4927
#, no-wrap
msgid "802512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4928
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/225470[225470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4931
#, no-wrap
msgid "8.2-STABLE after merging of re-factoring of auto-quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4932
#, no-wrap
msgid "802513"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4933
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/226763[226763]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4934
#, no-wrap
msgid "October 25, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4936
#, no-wrap
msgid "8.2-STABLE after merging of the MAP_PREFAULT_READ flag to man:mmap[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4937
#, no-wrap
msgid "802514"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4938
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/227573[227573]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4939
#, no-wrap
msgid "November 16, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4941
#, no-wrap
msgid "8.2-STABLE after merging of addition of man:posix_fallocate[2] syscall."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4942
#, no-wrap
msgid "802515"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4943
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/229725[229725]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4946
#, no-wrap
msgid "8.2-STABLE after merging of addition of the man:posix_fadvise[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4947
#, no-wrap
msgid "802516"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4948
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/230239[230239]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4951
#, no-wrap
msgid "8.2-STABLE after merging gperf 3.0.3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4952
#, no-wrap
msgid "802517"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4953
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/231769[231769]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4956
#, no-wrap
msgid "8.2-STABLE after introduction of the new extensible man:sysctl[3] interface NET_RT_IFLISTL to query address lists."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4957
#, no-wrap
msgid "803000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4958
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232446[232446]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4961
#, no-wrap
msgid "8.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4962
#, no-wrap
msgid "803500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4963
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/232439[232439]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4966
#, no-wrap
msgid "8.3-STABLE after branching releng/8.3 (RELENG_8_3)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4967
#, no-wrap
msgid "803501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4968
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/247091[247091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4971
#, no-wrap
msgid "8.3-STABLE after MFC of two USB fixes (rev link:https://svnweb.freebsd.org/changeset/base/246616[246616] and link:https://svnweb.freebsd.org/changeset/base/246759[246759])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4972
#, no-wrap
msgid "804000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4973
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248850[248850]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4951
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4956
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4979
#, no-wrap
msgid "March 28, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4976
#, no-wrap
msgid "8.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4977
#, no-wrap
msgid "804500"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4978
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/248819[248819]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4981
#, no-wrap
msgid "8.4-STABLE after 8.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4982
#, no-wrap
msgid "804501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4983
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/259449[259449]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4961
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4984
#, no-wrap
msgid "December 16, 2013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4986
#, no-wrap
msgid "8.4-STABLE after MFC of upstream Heimdal encoding fix."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4987
#, no-wrap
msgid "804502"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4991
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:08.tcp."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4992
#, no-wrap
msgid "804503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4993
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/268444[268444]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4994
#, no-wrap
msgid "July 9, 2014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4996
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:17.kmem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4974
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4997
#, no-wrap
msgid "804504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5001
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:18 (rev link:https://svnweb.freebsd.org/changeset/base/271305[271305])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5002
#, no-wrap
msgid "804505"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5006
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:19 (rev link:https://svnweb.freebsd.org/changeset/base/271668[271668])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5007
#, no-wrap
msgid "804506"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5011
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:21 (rev link:https://svnweb.freebsd.org/changeset/base/273413[273413])."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5012
#, no-wrap
msgid "804507"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5016
#, no-wrap
msgid "8.4-STABLE after FreeBSD-SA-14:23, FreeBSD-SA-14:24, and FreeBSD-SA-14:25."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5017
#, no-wrap
msgid "804508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5021
#, no-wrap
msgid "8-STABLE after FreeBSD-EN-15:01.vt, FreeBSD-EN-15:02.openssl, FreeBSD-EN-15:03.freebsd-update, FreeBSD-SA-15:04.igmp, and FreeBSD-SA-15:05.bind."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:4999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5022
#, no-wrap
msgid "804509"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5023
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/305736[305736]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5025
#, no-wrap
msgid "8-STABLE after resolving a deadlock between `device_detach()` and man:usbd_do_request_flags[9]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5028
#, no-wrap
msgid "FreeBSD 7 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5031
#, no-wrap
msgid "FreeBSD 7 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5040
#, no-wrap
msgid "700000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5041
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147925[147925]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5019
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5670
#, no-wrap
msgid "July 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5044
#, no-wrap
msgid "7.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5045
#, no-wrap
msgid "700001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5046
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/148341[148341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5024
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5047
#, no-wrap
msgid "July 23, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5049
#, no-wrap
msgid "7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5050
#, no-wrap
msgid "700002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5051
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149039[149039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5029
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5680
#, no-wrap
msgid "August 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5054
#, no-wrap
msgid "7.0-CURRENT after credential argument is added to dev_clone event handler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5055
#, no-wrap
msgid "700003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5056
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149470[149470]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5057
#, no-wrap
msgid "August 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5059
#, no-wrap
msgid "7.0-CURRENT after man:memmem[3] is added to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5060
#, no-wrap
msgid "700004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5061
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/151888[151888]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5062
#, no-wrap
msgid "October 30, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5064
#, no-wrap
msgid "7.0-CURRENT after man:solisten[9] kernel arguments are modified to accept a backlog parameter."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5065
#, no-wrap
msgid "700005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5066
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152296[152296]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5044
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5072
#, no-wrap
msgid "November 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5046
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5069
#, no-wrap
msgid "7.0-CURRENT after `IFP2ENADDR()` was changed to return a pointer to `IF_LLADDR()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5070
#, no-wrap
msgid "700006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5071
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152315[152315]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5051
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5074
#, no-wrap
msgid "7.0-CURRENT after addition of `if_addr` member to `struct ifnet` and `IFP2ENADDR()` removal."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5075
#, no-wrap
msgid "700007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5076
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153027[153027]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5077
#, no-wrap
msgid "December 2, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5079
#, no-wrap
msgid "7.0-CURRENT after incorporating scripts from the local_startup directories into the base man:rcorder[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5080
#, no-wrap
msgid "700008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5081
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153107[153107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5082
#, no-wrap
msgid "December 5, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5061
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5084
#, no-wrap
msgid "7.0-CURRENT after removal of MNT_NODEV mount option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5085
#, no-wrap
msgid "700009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5086
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153519[153519]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5087
#, no-wrap
msgid "December 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5066
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5089
#, no-wrap
msgid "7.0-CURRENT after ELF-64 type changes and symbol versioning."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5090
#, no-wrap
msgid "700010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5091
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153579[153579]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5092
#, no-wrap
msgid "December 20, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5094
#, no-wrap
msgid "7.0-CURRENT after addition of hostb and vgapci drivers, addition of `pci_find_extcap()`, and changing the AGP drivers to no longer map the aperture."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5095
#, no-wrap
msgid "700011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5096
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153936[153936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5097
#, no-wrap
msgid "December 31, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5099
#, no-wrap
msgid "7.0-CURRENT after tv_sec was made time_t on all platforms but Alpha."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5100
#, no-wrap
msgid "700012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5101
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154114[154114]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5102
#, no-wrap
msgid "January 8, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5104
#, no-wrap
msgid "7.0-CURRENT after ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5105
#, no-wrap
msgid "700013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5106
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154269[154269]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5107
#, no-wrap
msgid "January 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5109
#, no-wrap
msgid "7.0-CURRENT after changes to [.filename]#/etc/rc.d/abi# to support [.filename]#/compat/linux/etc/ld.so.cache# being a symlink in a readonly filesystem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5110
#, no-wrap
msgid "700014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5111
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154863[154863]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5112
#, no-wrap
msgid "January 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5114
#, no-wrap
msgid "7.0-CURRENT after pts import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5115
#, no-wrap
msgid "700015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5116
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157144[157144]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5117
#, no-wrap
msgid "March 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5119
#, no-wrap
msgid "7.0-CURRENT after the introduction of version 2 of man:hwpmc[4]'s ABI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5120
#, no-wrap
msgid "700016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5121
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157962[157962]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5122
#, no-wrap
msgid "April 22, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5124
#, no-wrap
msgid "7.0-CURRENT after addition of man:fcloseall[3] to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5125
#, no-wrap
msgid "700017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5126
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158513[158513]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5127
#, no-wrap
msgid "May 13, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5129
#, no-wrap
msgid "7.0-CURRENT after removal of ip6fw."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5130
#, no-wrap
msgid "700018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5131
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160386[160386]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5132
#, no-wrap
msgid "July 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5134
#, no-wrap
msgid "7.0-CURRENT after import of snd_emu10kx."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5135
#, no-wrap
msgid "700019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5136
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160821[160821]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5137
#, no-wrap
msgid "July 29, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5116
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5139
#, no-wrap
msgid "7.0-CURRENT after import of OpenSSL 0.9.8b."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5140
#, no-wrap
msgid "700020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5141
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161931[161931]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5142
#, no-wrap
msgid "September 3, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5121
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5144
#, no-wrap
msgid "7.0-CURRENT after addition of bus_dma_get_tag function"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5145
#, no-wrap
msgid "700021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5146
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162023[162023]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5147
#, no-wrap
msgid "September 4, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5126
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5149
#, no-wrap
msgid "7.0-CURRENT after libpcap 0.9.4 and tcpdump 3.9.4 import."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5150
#, no-wrap
msgid "700022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5151
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162170[162170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5152
#, no-wrap
msgid "September 9, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5131
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5154
#, no-wrap
msgid "7.0-CURRENT after dlsym change to look for a requested symbol both in specified dso and its implicit dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5155
#, no-wrap
msgid "700023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5156
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162588[162588]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5157
#, no-wrap
msgid "September 23, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5136
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5159
#, no-wrap
msgid "7.0-CURRENT after adding new sound IOCTLs for the OSSv4 mixer API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5160
#, no-wrap
msgid "700024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5161
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162919[162919]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5162
#, no-wrap
msgid "September 28, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5141
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5164
#, no-wrap
msgid "7.0-CURRENT after import of OpenSSL 0.9.8d."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5165
#, no-wrap
msgid "700025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5166
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164190[164190]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5167
#, no-wrap
msgid "November 11, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5146
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5169
#, no-wrap
msgid "7.0-CURRENT after the addition of libelf."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5170
#, no-wrap
msgid "700026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5171
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164614[164614]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5172
#, no-wrap
msgid "November 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5151
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5174
#, no-wrap
msgid "7.0-CURRENT after major changes on sound sysctls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5175
#, no-wrap
msgid "700027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5153
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5176
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164770[164770]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5177
#, no-wrap
msgid "November 30, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5156
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5179
#, no-wrap
msgid "7.0-CURRENT after the addition of Wi-Spy quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5180
#, no-wrap
msgid "700028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5181
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165242[165242]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5182
#, no-wrap
msgid "December 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5161
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5184
#, no-wrap
msgid "7.0-CURRENT after the addition of sctp calls to libc"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5185
#, no-wrap
msgid "700029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5186
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166259[166259]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5187
#, no-wrap
msgid "January 26, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5166
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5189
#, no-wrap
msgid "7.0-CURRENT after the GNU man:gzip[1] implementation was replaced with a BSD licensed version ported from NetBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5190
#, no-wrap
msgid "700030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5191
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166549[166549]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5192
#, no-wrap
msgid "February 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5171
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5194
#, no-wrap
msgid "7.0-CURRENT after the removal of IPIP tunnel encapsulation (VIFF_TUNNEL) from the IPv4 multicast forwarding code."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5195
#, no-wrap
msgid "700031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5196
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166907[166907]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5197
#, no-wrap
msgid "February 23, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5176
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5199
#, no-wrap
msgid "7.0-CURRENT after the modification of `bus_setup_intr()` (newbus)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5200
#, no-wrap
msgid "700032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5201
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167165[167165]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5202
#, no-wrap
msgid "March 2, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5181
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5204
#, no-wrap
msgid "7.0-CURRENT after the inclusion of man:ipw[4] and man:iwi[4] firmware."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5205
#, no-wrap
msgid "700033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5206
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167360[167360]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5207
#, no-wrap
msgid "March 9, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5186
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5209
#, no-wrap
msgid "7.0-CURRENT after the inclusion of ncurses wide character support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5210
#, no-wrap
msgid "700034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5211
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167684[167684]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5212
#, no-wrap
msgid "March 19, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5191
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5214
#, no-wrap
msgid "7.0-CURRENT after changes to how `insmntque()`, `getnewvnode()`, and `vfs_hash_insert()` work."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5215
#, no-wrap
msgid "700035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5193
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5216
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/167906[167906]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5217
#, no-wrap
msgid "March 26, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5196
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5219
#, no-wrap
msgid "7.0-CURRENT after addition of a notify mechanism for CPU frequency changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5220
#, no-wrap
msgid "700036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5221
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168413[168413]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5199
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5790
#, no-wrap
msgid "April 6, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5201
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5224
#, no-wrap
msgid "7.0-CURRENT after import of the ZFS filesystem."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5225
#, no-wrap
msgid "700037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5226
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168504[168504]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5227
#, no-wrap
msgid "April 8, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5206
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5229
#, no-wrap
msgid "7.0-CURRENT after addition of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5230
#, no-wrap
msgid "700038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5231
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169151[169151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5232
#, no-wrap
msgid "April 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5211
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5234
#, no-wrap
msgid "7.0-CURRENT after changing man:getenv[3], man:putenv[3], man:setenv[3] and man:unsetenv[3] to be POSIX conformant."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5235
#, no-wrap
msgid "700039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5213
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5236
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169190[169190]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5237
#, no-wrap
msgid "May 1, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5216
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5239
#, no-wrap
msgid "7.0-CURRENT after the changes in 700038 were backed out."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5240
#, no-wrap
msgid "700040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5241
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169453[169453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5242
#, no-wrap
msgid "May 10, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5221
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5244
#, no-wrap
msgid "7.0-CURRENT after the addition of man:flopen[3] to libutil."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5245
#, no-wrap
msgid "700041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5246
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169526[169526]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5247
#, no-wrap
msgid "May 13, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5226
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5249
#, no-wrap
msgid "7.0-CURRENT after enabling symbol versioning, and changing the default thread library to libthr."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5250
#, no-wrap
msgid "700042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5251
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169758[169758]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5252
#, no-wrap
msgid "May 19, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5231
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5254
#, no-wrap
msgid "7.0-CURRENT after the import of gcc 4.2.0."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5255
#, no-wrap
msgid "700043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5256
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169830[169830]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5257
#, no-wrap
msgid "May 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5236
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5259
#, no-wrap
msgid "7.0-CURRENT after bump of all shared library versions that had not been changed since RELENG_6."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5260
#, no-wrap
msgid "700044"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5261
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170395[170395]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5262
#, no-wrap
msgid "June 7, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5241
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5264
#, no-wrap
msgid "7.0-CURRENT after changing the argument for `vn_open()`/`VOP_OPEN()` from file descriptor index to the struct file *."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5265
#, no-wrap
msgid "700045"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5266
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170510[170510]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5267
#, no-wrap
msgid "June 10, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5246
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5269
#, no-wrap
msgid "7.0-CURRENT after changing man:pam_nologin[8] to provide an account management function instead of an authentication function to the PAM framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5270
#, no-wrap
msgid "700046"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5271
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170530[170530]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5249
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5254
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5810
#, no-wrap
msgid "June 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5251
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5274
#, no-wrap
msgid "7.0-CURRENT after updated 802.11 wireless support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5275
#, no-wrap
msgid "700047"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5276
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170579[170579]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5256
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5279
#, no-wrap
msgid "7.0-CURRENT after adding TCP LRO interface capabilities."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5280
#, no-wrap
msgid "700048"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5281
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170613[170613]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5282
#, no-wrap
msgid "June 12, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5261
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5284
#, no-wrap
msgid "7.0-CURRENT after RFC 3678 API support added to the IPv4 stack. Legacy RFC 1724 behavior of the IP_MULTICAST_IF ioctl has now been removed; 0.0.0.0/8 may no longer be used to specify an interface index. Use struct ipmreqn instead."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5285
#, no-wrap
msgid "700049"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5286
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171175[171175]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5287
#, no-wrap
msgid "July 3, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5266
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5289
#, no-wrap
msgid "7.0-CURRENT after importing pf from OpenBSD 4.1"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5291
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171167[171167]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5271
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5294
#, no-wrap
msgid "7.0-CURRENT after adding IPv6 support for FAST_IPSEC, deleting KAME IPSEC, and renaming FAST_IPSEC to IPSEC."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5295
#, no-wrap
msgid "700050"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5296
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171195[171195]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5274
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5302
#, no-wrap
msgid "July 4, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5276
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5299
#, no-wrap
msgid "7.0-CURRENT after converting setenv/putenv/etc. calls from traditional BSD to POSIX."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5300
#, no-wrap
msgid "700051"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5301
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171211[171211]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5281
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5304
#, no-wrap
msgid "7.0-CURRENT after adding new mmap/lseek/etc syscalls."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5305
#, no-wrap
msgid "700052"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5306
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/171275[171275]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5307
#, no-wrap
msgid "July 6, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5286
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5309
#, no-wrap
msgid "7.0-CURRENT after moving I4B headers to include/i4b."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5310
#, no-wrap
msgid "700053"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5311
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172394[172394]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5312
#, no-wrap
msgid "September 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5291
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5314
#, no-wrap
msgid "7.0-CURRENT after the addition of support for PCI domains"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5315
#, no-wrap
msgid "700054"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5316
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172988[172988]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5294
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5820
#, no-wrap
msgid "October 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5296
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5319
#, no-wrap
msgid "7.0-STABLE after MFC of wide and single byte ctype separation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5320
#, no-wrap
msgid "700055"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5321
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173104[173104]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5322
#, no-wrap
msgid "October 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5301
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5324
#, no-wrap
msgid "7.0-RELEASE, and 7.0-CURRENT after ABI backwards compatibility to the FreeBSD 4/5/6 versions of the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs was MFCed, which required the ABI of the PCIOCGETCONF IOCTL to be broken again"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5325
#, no-wrap
msgid "700100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5326
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174864[174864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5327
#, no-wrap
msgid "December 22, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5306
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5329
#, no-wrap
msgid "7.0-STABLE after 7.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5307
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5330
#, no-wrap
msgid "700101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5308
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5331
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/176111[176111]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5311
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5334
#, no-wrap
msgid "7.0-STABLE after the MFC of `m_collapse()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5335
#, no-wrap
msgid "700102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5336
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/177735[177735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5337
#, no-wrap
msgid "March 30, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5316
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5339
#, no-wrap
msgid "7.0-STABLE after the MFC of `kdb_enter_why()`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5340
#, no-wrap
msgid "700103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5318
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5341
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178061[178061]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5321
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5344
#, no-wrap
msgid "7.0-STABLE after adding l_sysid to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5345
#, no-wrap
msgid "700104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5346
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178108[178108]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5324
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5352
#, no-wrap
msgid "April 11, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5326
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5349
#, no-wrap
msgid "7.0-STABLE after the MFC of man:procstat[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5350
#, no-wrap
msgid "700105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5328
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5351
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178120[178120]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5331
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5354
#, no-wrap
msgid "7.0-STABLE after the MFC of umtx features."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5355
#, no-wrap
msgid "700106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5356
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178225[178225]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5357
#, no-wrap
msgid "April 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5336
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5359
#, no-wrap
msgid "7.0-STABLE after the MFC of man:write[2] support to man:psm[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5360
#, no-wrap
msgid "700107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5361
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178353[178353]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5341
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5364
#, no-wrap
msgid "7.0-STABLE after the MFC of F_DUP2FD command to man:fcntl[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5365
#, no-wrap
msgid "700108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5366
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178783[178783]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5367
#, no-wrap
msgid "May 5, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5346
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5369
#, no-wrap
msgid "7.0-STABLE after some man:lockmgr[9] changes, which makes it necessary to include [.filename]#sys/lock.h# to use man:lockmgr[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5370
#, no-wrap
msgid "700109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5348
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5854
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179367[179367]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5349
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5855
#, no-wrap
msgid "May 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5351
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5374
#, no-wrap
msgid "7.0-STABLE after MFC of the man:memrchr[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5375
#, no-wrap
msgid "700110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5376
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181328[181328]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5377
#, no-wrap
msgid "August 5, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5356
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5379
#, no-wrap
msgid "7.0-STABLE after MFC of kernel NFS lockd client."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5380
#, no-wrap
msgid "700111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5381
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/181940[181940]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5361
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5384
#, no-wrap
msgid "7.0-STABLE after addition of physically contiguous jumbo frame support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5385
#, no-wrap
msgid "700112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5386
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/182294[182294]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5387
#, no-wrap
msgid "August 27, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5366
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5389
#, no-wrap
msgid "7.0-STABLE after MFC of kernel DTrace support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5390
#, no-wrap
msgid "701000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5391
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185315[185315]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5369
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5397
#, no-wrap
msgid "November 25, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5371
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5394
#, no-wrap
msgid "7.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5395
#, no-wrap
msgid "701100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5396
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/185302[185302]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5376
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5399
#, no-wrap
msgid "7.1-STABLE after 7.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5400
#, no-wrap
msgid "701101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5401
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187023[187023]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5402
#, no-wrap
msgid "January 10, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5381
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5404
#, no-wrap
msgid "7.1-STABLE after man:strndup[3] merge."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5405
#, no-wrap
msgid "701102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5406
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/187370[187370]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5407
#, no-wrap
msgid "January 17, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5386
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5409
#, no-wrap
msgid "7.1-STABLE after man:cpuctl[4] support added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5410
#, no-wrap
msgid "701103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5411
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188281[188281]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5412
#, no-wrap
msgid "February 7, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5391
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5414
#, no-wrap
msgid "7.1-STABLE after the merge of multi-/no-IPv4/v6 jails."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5415
#, no-wrap
msgid "701104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5416
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/188625[188625]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5417
#, no-wrap
msgid "February 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5396
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5419
#, no-wrap
msgid "7.1-STABLE after the store of the suspension owner in the struct mount, and introduction of vfs_susp_clean method into the struct vfsops."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5420
#, no-wrap
msgid "701105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5421
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189740[189740]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5422
#, no-wrap
msgid "March 12, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5401
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5424
#, no-wrap
msgid "7.1-STABLE after the incompatible change to the kern.ipc.shmsegs sysctl to allow allocating larger SysV shared memory segments on 64bit architectures."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5425
#, no-wrap
msgid "701106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5426
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/189786[189786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5406
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5429
#, no-wrap
msgid "7.1-STABLE after the merge of a fix for POSIX semaphore wait operations."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5430
#, no-wrap
msgid "702000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5431
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191099[191099]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5411
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5434
#, no-wrap
msgid "7.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5435
#, no-wrap
msgid "702100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5436
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/191091[191091]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5416
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5439
#, no-wrap
msgid "7.2-STABLE after 7.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5440
#, no-wrap
msgid "702101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5441
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/192149[192149]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5442
#, no-wrap
msgid "May 15, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5421
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5444
#, no-wrap
msgid "7.2-STABLE after man:ichsmb[4] was changed to use left-adjusted slave addressing to match other SMBus controller drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5445
#, no-wrap
msgid "702102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5446
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193020[193020]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5447
#, no-wrap
msgid "May 28, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5426
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5449
#, no-wrap
msgid "7.2-STABLE after MFC of the man:fdopendir[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5450
#, no-wrap
msgid "702103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5451
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/193638[193638]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5452
#, no-wrap
msgid "June 6, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5431
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5454
#, no-wrap
msgid "7.2-STABLE after MFC of PmcTools."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5455
#, no-wrap
msgid "702104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5456
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/195694[195694]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5436
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5459
#, no-wrap
msgid "7.2-STABLE after MFC of the man:closefrom[2] system call."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5460
#, no-wrap
msgid "702105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5461
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/196006[196006]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5462
#, no-wrap
msgid "July 31, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5441
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5464
#, no-wrap
msgid "7.2-STABLE after MFC of the SYSVIPC ABI change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5465
#, no-wrap
msgid "702106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5466
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/197198[197198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5467
#, no-wrap
msgid "September 14, 2009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5446
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5469
#, no-wrap
msgid "7.2-STABLE after MFC of the x86 PAT enhancements and addition of `d_mmap_single()` and the scatter/gather list VM object type."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5470
#, no-wrap
msgid "703000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5471
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203740[203740]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5449
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5477
#, no-wrap
msgid "February 9, 2010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5451
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5474
#, no-wrap
msgid "7.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5475
#, no-wrap
msgid "703100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5476
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/203742[203742]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5456
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5479
#, no-wrap
msgid "7.3-STABLE after 7.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5480
#, no-wrap
msgid "704000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5481
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216647[216647]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5461
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5484
#, no-wrap
msgid "7.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5485
#, no-wrap
msgid "704100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5486
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/216658[216658]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5466
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5489
#, no-wrap
msgid "7.4-STABLE after 7.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5490
#, no-wrap
msgid "704101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5491
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/221318[221318]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5492
#, no-wrap
msgid "May 2, 2011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5470
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5493
#, no-wrap
msgid "7.4-STABLE after the gcc MFC in rev link:https://svnweb.freebsd.org/changeset/base/221317[221317]."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5496
#, no-wrap
msgid "FreeBSD 6 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5499
#, no-wrap
msgid "FreeBSD 6 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5485
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5508
#, no-wrap
msgid "600000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5486
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5509
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133921[133921]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5487
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5510
#, no-wrap
msgid "August 18, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5489
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5512
#, no-wrap
msgid "6.0-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5490
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5513
#, no-wrap
msgid "600001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5514
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134396[134396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5515
#, no-wrap
msgid "August 27, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5494
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5517
#, no-wrap
msgid "6.0-CURRENT after permanently enabling PFIL_HOOKS in the kernel."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5518
#, no-wrap
msgid "600002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5519
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134514[134514]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5520
#, no-wrap
msgid "August 30, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5499
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5522
#, no-wrap
msgid "6.0-CURRENT after initial addition of ifi_epoch to struct if_data. Backed out after a few days. Do not use this value."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5523
#, no-wrap
msgid "600003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5524
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134933[134933]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5525
#, no-wrap
msgid "September 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5504
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5527
#, no-wrap
msgid "6.0-CURRENT after the re-addition of the ifi_epoch member of struct if_data."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5528
#, no-wrap
msgid "600004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5529
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/135920[135920]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5530
#, no-wrap
msgid "September 29, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5509
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5532
#, no-wrap
msgid "6.0-CURRENT after addition of the struct inpcb argument to the pfil API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5533
#, no-wrap
msgid "600005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5534
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/136172[136172]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5535
#, no-wrap
msgid "October 5, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5514
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5537
#, no-wrap
msgid "6.0-CURRENT after addition of the \"-d DESTDIR\" argument to newsyslog."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5538
#, no-wrap
msgid "600006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5539
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/137192[137192]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5540
#, no-wrap
msgid "November 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5519
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5542
#, no-wrap
msgid "6.0-CURRENT after addition of glibc style man:strftime[3] padding options."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5543
#, no-wrap
msgid "600007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5544
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138760[138760]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5545
#, no-wrap
msgid "December 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5524
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5547
#, no-wrap
msgid "6.0-CURRENT after addition of 802.11 framework updates."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5548
#, no-wrap
msgid "600008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5549
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/140809[140809]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5550
#, no-wrap
msgid "January 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5529
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5552
#, no-wrap
msgid "6.0-CURRENT after changes to `VOP_*VOBJECT()` functions and introduction of `MNTK_MPSAFE` flag for Giantfree filesystems."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5553
#, no-wrap
msgid "600009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5554
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141250[141250]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5555
#, no-wrap
msgid "February 4, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5534
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5557
#, no-wrap
msgid "6.0-CURRENT after addition of the cpufreq framework and drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5558
#, no-wrap
msgid "600010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5559
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141394[141394]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5560
#, no-wrap
msgid "February 6, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5539
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5562
#, no-wrap
msgid "6.0-CURRENT after importing OpenBSD's man:nc[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5563
#, no-wrap
msgid "600011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5564
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141727[141727]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5565
#, no-wrap
msgid "February 12, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5544
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5567
#, no-wrap
msgid "6.0-CURRENT after removing semblance of SVID2 `matherr()` support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5568
#, no-wrap
msgid "600012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5569
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141940[141940]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5570
#, no-wrap
msgid "February 15, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5549
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5572
#, no-wrap
msgid "6.0-CURRENT after increase of default thread stacks' size."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5573
#, no-wrap
msgid "600013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5574
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142089[142089]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5575
#, no-wrap
msgid "February 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5554
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5577
#, no-wrap
msgid "6.0-CURRENT after fixes in [.filename]#<src/include/stdbool.h># and [.filename]#<src/sys/i386/include/_types.h># for using the GCC-compatibility of the Intel C/C++ compiler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5578
#, no-wrap
msgid "600014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5579
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142184[142184]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5580
#, no-wrap
msgid "February 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5559
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5582
#, no-wrap
msgid "6.0-CURRENT after EOVERFLOW checks in man:vswprintf[3] fixed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5583
#, no-wrap
msgid "600015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5584
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142501[142501]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5585
#, no-wrap
msgid "February 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5564
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5587
#, no-wrap
msgid "6.0-CURRENT after changing the struct if_data member, ifi_epoch, from wall clock time to uptime."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5588
#, no-wrap
msgid "600016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5589
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142582[142582]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5590
#, no-wrap
msgid "February 26, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5569
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5592
#, no-wrap
msgid "6.0-CURRENT after LC_CTYPE disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5593
#, no-wrap
msgid "600017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5594
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142683[142683]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5572
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5577
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6420
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6443
#, no-wrap
msgid "February 27, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5574
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5597
#, no-wrap
msgid "6.0-CURRENT after NLS catalogs disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5598
#, no-wrap
msgid "600018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5599
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142686[142686]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5579
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5602
#, no-wrap
msgid "6.0-CURRENT after LC_COLLATE disk format changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5603
#, no-wrap
msgid "600019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5604
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142752[142752]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5582
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6425
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6448
#, no-wrap
msgid "February 28, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5584
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5607
#, no-wrap
msgid "Installation of acpica includes into /usr/include."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5608
#, no-wrap
msgid "600020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5609
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143308[143308]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5610
#, no-wrap
msgid "March 9, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5589
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5612
#, no-wrap
msgid "Addition of MSG_NOSIGNAL flag to man:send[2] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5613
#, no-wrap
msgid "600021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5614
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143746[143746]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5615
#, no-wrap
msgid "March 17, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5594
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5617
#, no-wrap
msgid "Addition of fields to cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5618
#, no-wrap
msgid "600022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5619
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143901[143901]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5620
#, no-wrap
msgid "March 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5599
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5622
#, no-wrap
msgid "Removed gtar from base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5623
#, no-wrap
msgid "600023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5624
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144980[144980]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5625
#, no-wrap
msgid "April 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5604
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5627
#, no-wrap
msgid "LOCAL_CREDS, LOCAL_CONNWAIT socket options added to man:unix[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5628
#, no-wrap
msgid "600024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5606
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5634
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145565[145565]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5630
#, no-wrap
msgid "April 19, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5609
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5632
#, no-wrap
msgid "man:hwpmc[4] and related tools added to 6.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5633
#, no-wrap
msgid "600025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5635
#, no-wrap
msgid "April 26, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5614
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5637
#, no-wrap
msgid "struct icmphdr added to 6.0-CURRENT."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5638
#, no-wrap
msgid "600026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5639
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145843[145843]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5640
#, no-wrap
msgid "May 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5619
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5642
#, no-wrap
msgid "pf updated to 3.7."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5643
#, no-wrap
msgid "600027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5644
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/145966[145966]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5622
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5645
#, no-wrap
msgid "May 6, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5624
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5647
#, no-wrap
msgid "Kernel libalias and ng_nat introduced."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5648
#, no-wrap
msgid "600028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5649
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146191[146191]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5650
#, no-wrap
msgid "May 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5629
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5652
#, no-wrap
msgid "POSIX man:ttyname_r[3] made available through unistd.h and libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5653
#, no-wrap
msgid "600029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5654
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146780[146780]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5655
#, no-wrap
msgid "May 29, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5634
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5657
#, no-wrap
msgid "6.0-CURRENT after libpcap updated to v0.9.1 alpha 096."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5658
#, no-wrap
msgid "600030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5659
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146988[146988]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5660
#, no-wrap
msgid "June 5, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5639
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5662
#, no-wrap
msgid "6.0-CURRENT after importing NetBSD's man:if_bridge[4]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5663
#, no-wrap
msgid "600031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5664
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147256[147256]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5665
#, no-wrap
msgid "June 10, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5644
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5667
#, no-wrap
msgid "6.0-CURRENT after struct ifnet was broken out of the driver softcs."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5668
#, no-wrap
msgid "600032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5669
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/147898[147898]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5649
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5672
#, no-wrap
msgid "6.0-CURRENT after the import of libpcap v0.9.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5673
#, no-wrap
msgid "600033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5674
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/148388[148388]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5675
#, no-wrap
msgid "July 25, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5654
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5677
#, no-wrap
msgid "6.0-STABLE after bump of all shared library versions that had not been changed since RELENG_5."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5678
#, no-wrap
msgid "600034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5679
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/149040[149040]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5659
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5682
#, no-wrap
msgid "6.0-STABLE after credential argument is added to dev_clone event handler. 6.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5683
#, no-wrap
msgid "600100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5684
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/151958[151958]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5685
#, no-wrap
msgid "November 1, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5664
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5687
#, no-wrap
msgid "6.0-STABLE after 6.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5688
#, no-wrap
msgid "600101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5689
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153601[153601]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5690
#, no-wrap
msgid "December 21, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5669
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5692
#, no-wrap
msgid "6.0-STABLE after incorporating scripts from the local_startup directories into the base man:rcorder[8]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5693
#, no-wrap
msgid "600102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5694
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/153912[153912]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5695
#, no-wrap
msgid "December 30, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5674
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5697
#, no-wrap
msgid "6.0-STABLE after updating the ELF types and constants."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5698
#, no-wrap
msgid "600103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5699
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154396[154396]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5700
#, no-wrap
msgid "January 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5679
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5702
#, no-wrap
msgid "6.0-STABLE after MFC of man:pidfile[3] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5703
#, no-wrap
msgid "600104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5704
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154453[154453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5682
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6465
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6488
#, no-wrap
msgid "January 17, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5684
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5707
#, no-wrap
msgid "6.0-STABLE after MFC of ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5708
#, no-wrap
msgid "600105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5709
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/156019[156019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5687
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5710
#, no-wrap
msgid "February 26, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5689
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5712
#, no-wrap
msgid "6.0-STABLE after NLS catalog support of man:csh[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5713
#, no-wrap
msgid "601000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5714
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158330[158330]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5692
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5720
#, no-wrap
msgid "May 6, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5694
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5717
#, no-wrap
msgid "6.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5718
#, no-wrap
msgid "601100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5719
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158331[158331]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5699
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5722
#, no-wrap
msgid "6.1-STABLE after 6.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5723
#, no-wrap
msgid "601101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5724
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/159861[159861]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5725
#, no-wrap
msgid "June 22, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5704
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5727
#, no-wrap
msgid "6.1-STABLE after the import of csup."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5728
#, no-wrap
msgid "601102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5729
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160253[160253]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5730
#, no-wrap
msgid "July 11, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5709
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5732
#, no-wrap
msgid "6.1-STABLE after the man:iwi[4] update."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5733
#, no-wrap
msgid "601103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5734
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/160429[160429]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5735
#, no-wrap
msgid "July 17, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5714
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5737
#, no-wrap
msgid "6.1-STABLE after the resolver update to BIND9, and exposure of reentrant version of netdb functions."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5738
#, no-wrap
msgid "601104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5739
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161098[161098]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5740
#, no-wrap
msgid "August 8, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5719
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5742
#, no-wrap
msgid "6.1-STABLE after DSO (dynamic shared objects) support has been enabled in OpenSSL."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5743
#, no-wrap
msgid "601105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5744
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/161900[161900]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5745
#, no-wrap
msgid "September 2, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5724
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5747
#, no-wrap
msgid "6.1-STABLE after 802.11 fixups changed the api for the IEEE80211_IOC_STA_INFO ioctl."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5748
#, no-wrap
msgid "602000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5749
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/164312[164312]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5750
#, no-wrap
msgid "November 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5729
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5752
#, no-wrap
msgid "6.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5753
#, no-wrap
msgid "602100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5754
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/162329[162329]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5755
#, no-wrap
msgid "September 15, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5734
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5757
#, no-wrap
msgid "6.2-STABLE after 6.2-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5758
#, no-wrap
msgid "602101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5759
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165122[165122]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5760
#, no-wrap
msgid "December 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5739
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5762
#, no-wrap
msgid "6.2-STABLE after the addition of Wi-Spy quirk."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5763
#, no-wrap
msgid "602102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5764
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/165596[165596]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5765
#, no-wrap
msgid "December 28, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5744
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5767
#, no-wrap
msgid "6.2-STABLE after `pci_find_extcap()` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5768
#, no-wrap
msgid "602103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5769
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166039[166039]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5770
#, no-wrap
msgid "January 16, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5749
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5772
#, no-wrap
msgid "6.2-STABLE after MFC of dlsym change to look for a requested symbol both in specified dso and its implicit dependencies."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5773
#, no-wrap
msgid "602104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5774
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166314[166314]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5775
#, no-wrap
msgid "January 28, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5754
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5777
#, no-wrap
msgid "6.2-STABLE after MFC of man:ng_deflate[4] and man:ng_pred1[4] netgraph nodes and new compression and encryption modes for man:ng_ppp[4] node."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5778
#, no-wrap
msgid "602105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5779
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/166840[166840]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5780
#, no-wrap
msgid "February 20, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5759
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5782
#, no-wrap
msgid "6.2-STABLE after MFC of BSD licensed version of man:gzip[1] ported from NetBSD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5783
#, no-wrap
msgid "602106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5784
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168133[168133]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5785
#, no-wrap
msgid "March 31, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5764
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5787
#, no-wrap
msgid "6.2-STABLE after MFC of PCI MSI and MSI-X support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5788
#, no-wrap
msgid "602107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5789
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168438[168438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5769
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5792
#, no-wrap
msgid "6.2-STABLE after MFC of ncurses 5.6 and wide character support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5793
#, no-wrap
msgid "602108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5794
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168611[168611]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5795
#, no-wrap
msgid "April 11, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5774
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5797
#, no-wrap
msgid "6.2-STABLE after MFC of CAM 'SG' peripheral device, which implements a subset of Linux SCSI SG passthrough device API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5798
#, no-wrap
msgid "602109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5799
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/168805[168805]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5800
#, no-wrap
msgid "April 17, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5779
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5802
#, no-wrap
msgid "6.2-STABLE after MFC of readline 5.2 patchset 002."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5803
#, no-wrap
msgid "602110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5804
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/169222[169222]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5805
#, no-wrap
msgid "May 2, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5784
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5807
#, no-wrap
msgid "6.2-STABLE after MFC of `pmap_invalidate_cache()`, `pmap_change_attr()`, `pmap_mapbios()`, `pmap_mapdev_attr()`, and `pmap_unmapbios()` for amd64 and i386."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5808
#, no-wrap
msgid "602111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5809
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/170556[170556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5789
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5812
#, no-wrap
msgid "6.2-STABLE after MFC of BOP_BDFLUSH and caused breakage of the filesystem modules KBI."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5813
#, no-wrap
msgid "602112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5814
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172284[172284]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5815
#, no-wrap
msgid "September 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5794
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5817
#, no-wrap
msgid "6.2-STABLE after man:libutil[3] MFC's."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5818
#, no-wrap
msgid "602113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5819
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/172986[172986]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5799
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5822
#, no-wrap
msgid "6.2-STABLE after MFC of wide and single byte ctype separation. Newly compiled binary that references to ctype.h may require a new symbol, __mb_sb_limit, which is not available on older systems."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5823
#, no-wrap
msgid "602114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5824
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173170[173170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5825
#, no-wrap
msgid "October 30, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5804
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5827
#, no-wrap
msgid "6.2-STABLE after ctype ABI forward compatibility restored."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5828
#, no-wrap
msgid "602115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5829
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173794[173794]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5830
#, no-wrap
msgid "November 21, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5809
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5832
#, no-wrap
msgid "6.2-STABLE after back out of wide and single byte ctype separation."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5833
#, no-wrap
msgid "603000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5834
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173897[173897]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5812
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5840
#, no-wrap
msgid "November 25, 2007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5814
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5837
#, no-wrap
msgid "6.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5838
#, no-wrap
msgid "603100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5839
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/173891[173891]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5819
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5842
#, no-wrap
msgid "6.3-STABLE after 6.3-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5844
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/174434[174434]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5824
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5847
#, no-wrap
msgid "6.3-STABLE after fixing multibyte type support in bit macro."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5848
#, no-wrap
msgid "603102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5849
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/178459[178459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5850
#, no-wrap
msgid "April 24, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5829
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5852
#, no-wrap
msgid "6.3-STABLE after adding l_sysid to struct flock."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5853
#, no-wrap
msgid "603103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5857
#, no-wrap
msgid "6.3-STABLE after MFC of the man:memrchr[3] function."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5835
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5858
#, no-wrap
msgid "603104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5836
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5859
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/179810[179810]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5860
#, no-wrap
msgid "June 15, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5839
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5862
#, no-wrap
msgid "6.3-STABLE after MFC of support for `:u` variable modifier in man:make[1]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5863
#, no-wrap
msgid "604000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5841
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5864
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183583[183583]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5842
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5847
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5870
#, no-wrap
msgid "October 4, 2008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5844
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5867
#, no-wrap
msgid "6.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5845
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5868
#, no-wrap
msgid "604100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5869
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/183584[183584]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5848
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5871
#, no-wrap
msgid "6.4-STABLE after 6.4-RELEASE."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5874
#, no-wrap
msgid "FreeBSD 5 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5877
#, no-wrap
msgid "FreeBSD 5 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5886
#, no-wrap
msgid "500000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5887
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58009[58009]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5865
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6578
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6601
#, no-wrap
msgid "March 13, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5867
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5890
#, no-wrap
msgid "5.0-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5891
#, no-wrap
msgid "500001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5892
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/59348[59348]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5893
#, no-wrap
msgid "April 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5872
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5895
#, no-wrap
msgid "5.0-CURRENT after adding addition ELF header fields, and changing our ELF binary branding method."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5896
#, no-wrap
msgid "500002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5897
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/59906[59906]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5898
#, no-wrap
msgid "May 2, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5877
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5900
#, no-wrap
msgid "5.0-CURRENT after kld metadata changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5901
#, no-wrap
msgid "500003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5902
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60688[60688]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5903
#, no-wrap
msgid "May 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5882
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5905
#, no-wrap
msgid "5.0-CURRENT after buf/bio changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5906
#, no-wrap
msgid "500004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5907
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60936[60936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5908
#, no-wrap
msgid "May 26, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5887
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5910
#, no-wrap
msgid "5.0-CURRENT after binutils upgrade."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5911
#, no-wrap
msgid "500005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5912
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61221[61221]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5913
#, no-wrap
msgid "June 3, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5892
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5915
#, no-wrap
msgid "5.0-CURRENT after merging libxpg4 code into libc and after TASKQ interface introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5916
#, no-wrap
msgid "500006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5917
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61500[61500]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5918
#, no-wrap
msgid "June 10, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5897
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5920
#, no-wrap
msgid "5.0-CURRENT after the addition of AGP interfaces."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5921
#, no-wrap
msgid "500007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5922
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62235[62235]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5923
#, no-wrap
msgid "June 29, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5902
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5925
#, no-wrap
msgid "5.0-CURRENT after Perl upgrade to 5.6.0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5926
#, no-wrap
msgid "500008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5927
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62764[62764]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5905
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5928
#, no-wrap
msgid "July 7, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5907
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5930
#, no-wrap
msgid "5.0-CURRENT after the update of KAME code to 2000/07 sources."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5931
#, no-wrap
msgid "500009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5932
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63154[63154]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5910
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6603
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6626
#, no-wrap
msgid "July 14, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5912
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5935
#, no-wrap
msgid "5.0-CURRENT after `ether_ifattach()` and `ether_ifdetach()` changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5936
#, no-wrap
msgid "500010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5937
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63265[63265]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5938
#, no-wrap
msgid "July 16, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5917
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5940
#, no-wrap
msgid "5.0-CURRENT after changing mtree defaults back to original variant, adding -L to follow symlinks."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5941
#, no-wrap
msgid "500011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5942
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63459[63459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5943
#, no-wrap
msgid "July 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5922
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5945
#, no-wrap
msgid "5.0-CURRENT after kqueue API changed."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5946
#, no-wrap
msgid "500012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5947
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65353[65353]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5948
#, no-wrap
msgid "September 2, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5927
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5950
#, no-wrap
msgid "5.0-CURRENT after man:setproctitle[3] moved from libutil to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5951
#, no-wrap
msgid "500013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5952
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65671[65671]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5953
#, no-wrap
msgid "September 10, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5932
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5955
#, no-wrap
msgid "5.0-CURRENT after the first SMPng commit."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5956
#, no-wrap
msgid "500014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5957
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70650[70650]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5958
#, no-wrap
msgid "January 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5937
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5960
#, no-wrap
msgid "5.0-CURRENT after <sys/select.h> moved to <sys/selinfo.h>."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5961
#, no-wrap
msgid "500015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5962
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70894[70894]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5940
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6633
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6656
#, no-wrap
msgid "January 10, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5942
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5965
#, no-wrap
msgid "5.0-CURRENT after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5966
#, no-wrap
msgid "500016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5967
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/71583[71583]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5968
#, no-wrap
msgid "January 24, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5947
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5970
#, no-wrap
msgid "5.0-CURRENT after change allowing libc and libc_r to be linked together, deprecating -pthread option."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5971
#, no-wrap
msgid "500017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5972
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/72650[72650]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5973
#, no-wrap
msgid "February 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5975
#, no-wrap
msgid "5.0-CURRENT after switch from struct ucred to struct xucred to stabilize kernel-exported API for mountd et al."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5953
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5976
#, no-wrap
msgid "500018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5954
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5977
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/72975[72975]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5978
#, no-wrap
msgid "February 24, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5957
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5980
#, no-wrap
msgid "5.0-CURRENT after addition of CPUTYPE make variable for controlling CPU-specific optimizations."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5981
#, no-wrap
msgid "500019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5959
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5982
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/77937[77937]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5960
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5983
#, no-wrap
msgid "June 9, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5962
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5985
#, no-wrap
msgid "5.0-CURRENT after moving machine/ioctl_fd.h to sys/fdcio.h"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5963
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5986
#, no-wrap
msgid "500020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5964
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5987
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/78304[78304]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5965
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5988
#, no-wrap
msgid "June 15, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5990
#, no-wrap
msgid "5.0-CURRENT after locale names renaming."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5991
#, no-wrap
msgid "500021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5992
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/78632[78632]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5970
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5993
#, no-wrap
msgid "June 22, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5972
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5995
#, no-wrap
msgid "5.0-CURRENT after Bzip2 import. Also signifies removal of S/Key."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5973
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5996
#, no-wrap
msgid "500022"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5974
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5979
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6002
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/83435[83435]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5975
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5998
#, no-wrap
msgid "July 12, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5977
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6000
#, no-wrap
msgid "5.0-CURRENT after SSE support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5978
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6001
#, no-wrap
msgid "500023"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5980
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6003
#, no-wrap
msgid "September 14, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6005
#, no-wrap
msgid "5.0-CURRENT after KSE Milestone 2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6006
#, no-wrap
msgid "500024"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6007
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84324[84324]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5985
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6008
#, no-wrap
msgid "October 1, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6010
#, no-wrap
msgid "5.0-CURRENT after d_thread_t, and moving UUCP to ports."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6011
#, no-wrap
msgid "500025"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6012
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84481[84481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5990
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6013
#, no-wrap
msgid "October 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6015
#, no-wrap
msgid "5.0-CURRENT after ABI change for descriptor and creds passing on 64 bit platforms."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6016
#, no-wrap
msgid "500026"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6017
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84710[84710]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5995
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6018
#, no-wrap
msgid "October 9, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6020
#, no-wrap
msgid "5.0-CURRENT after moving to XFree86 4 by default for package builds, and after the new libc `strnstr()` function was added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6021
#, no-wrap
msgid "500027"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:5999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6022
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/84743[84743]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6000
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6023
#, no-wrap
msgid "October 10, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6025
#, no-wrap
msgid "5.0-CURRENT after the new libc `strcasestr()` function was added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6026
#, no-wrap
msgid "500028"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6027
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/87879[87879]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6005
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6028
#, no-wrap
msgid "December 14, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6030
#, no-wrap
msgid "5.0-CURRENT after the userland components of smbfs were imported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6035
#, no-wrap
msgid "5.0-CURRENT after the new C99 specific-width integer types were added."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6036
#, no-wrap
msgid "500029"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6037
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/89938[89938]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6015
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6038
#, no-wrap
msgid "January 29, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6040
#, no-wrap
msgid "5.0-CURRENT after a change was made in the return value of man:sendfile[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6041
#, no-wrap
msgid "500030"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6042
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/90711[90711]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6020
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6043
#, no-wrap
msgid "February 15, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6045
#, no-wrap
msgid "5.0-CURRENT after the introduction of the type `fflags_t`, which is the appropriate size for file flags."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6046
#, no-wrap
msgid "500031"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6024
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6677
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6700
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/91203[91203]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6025
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6678
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6701
#, no-wrap
msgid "February 24, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6050
#, no-wrap
msgid "5.0-CURRENT after the usb structure element rename."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6051
#, no-wrap
msgid "500032"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6052
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/92453[92453]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6030
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6053
#, no-wrap
msgid "March 16, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6055
#, no-wrap
msgid "5.0-CURRENT after the introduction of Perl 5.6.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6056
#, no-wrap
msgid "500033"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6057
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/93722[93722]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6035
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6058
#, no-wrap
msgid "April 3, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6060
#, no-wrap
msgid "5.0-CURRENT after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6061
#, no-wrap
msgid "500034"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6039
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6062
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95831[95831]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6040
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6063
#, no-wrap
msgid "April 30, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6065
#, no-wrap
msgid "5.0-CURRENT after `mtx_init()` grew a third argument."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6066
#, no-wrap
msgid "500035"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6067
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/96498[96498]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6068
#, no-wrap
msgid "May 13, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6070
#, no-wrap
msgid "5.0-CURRENT with Gcc 3.1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6048
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6071
#, no-wrap
msgid "500036"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6049
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6072
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/96781[96781]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6073
#, no-wrap
msgid "May 17, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6052
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6075
#, no-wrap
msgid "5.0-CURRENT without Perl in /usr/src"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6076
#, no-wrap
msgid "500037"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6054
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6077
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/97516[97516]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6055
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6078
#, no-wrap
msgid "May 29, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6057
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6080
#, no-wrap
msgid "5.0-CURRENT after the addition of man:dlfunc[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6058
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6081
#, no-wrap
msgid "500038"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6059
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6082
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/100591[100591]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6060
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6083
#, no-wrap
msgid "July 24, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6085
#, no-wrap
msgid "5.0-CURRENT after the types of some struct sockbuf members were changed and the structure was reordered."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6063
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6086
#, no-wrap
msgid "500039"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6064
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6087
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/102757[102757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6065
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6733
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6756
#, no-wrap
msgid "September 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6067
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6090
#, no-wrap
msgid "5.0-CURRENT after GCC 3.2.1 import. Also after headers stopped using _BSD_FOO_T_ and started using _FOO_T_DECLARED. This value can also be used as a conservative estimate of the start of man:bzip2[1] package support."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6068
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6091
#, no-wrap
msgid "500040"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6092
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/103675[103675]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6093
#, no-wrap
msgid "September 20, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6095
#, no-wrap
msgid "5.0-CURRENT after various changes to disk functions were made in the name of removing dependency on disklabel structure internals."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6073
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6096
#, no-wrap
msgid "500041"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6074
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6097
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104250[104250]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6098
#, no-wrap
msgid "October 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6100
#, no-wrap
msgid "5.0-CURRENT after the addition of man:getopt_long[3] to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6078
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6101
#, no-wrap
msgid "500042"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6102
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/105178[105178]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6103
#, no-wrap
msgid "October 15, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6105
#, no-wrap
msgid "5.0-CURRENT after Binutils 2.13 upgrade, which included new FreeBSD emulation, vec, and output format."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6083
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6106
#, no-wrap
msgid "500043"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6107
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/106289[106289]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6108
#, no-wrap
msgid "November 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6110
#, no-wrap
msgid "5.0-CURRENT after adding weak pthread_XXX stubs to libc, obsoleting libXThrStub.so. 5.0-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6088
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6111
#, no-wrap
msgid "500100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6112
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/109405[109405]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6113
#, no-wrap
msgid "January 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6092
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6115
#, no-wrap
msgid "5.0-CURRENT after branching for RELENG_5_0"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6093
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6116
#, no-wrap
msgid "500101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6117
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111120[111120]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6118
#, no-wrap
msgid "February 19, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6120
#, no-wrap
msgid "<sys/dkstat.h> is empty. Do not include it."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6098
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6121
#, no-wrap
msgid "500102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6122
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111482[111482]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6123
#, no-wrap
msgid "February 25, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6125
#, no-wrap
msgid "5.0-CURRENT after the d_mmap_t interface change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6103
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6126
#, no-wrap
msgid "500103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6127
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111540[111540]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6128
#, no-wrap
msgid "February 26, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6130
#, no-wrap
msgid "5.0-CURRENT after taskqueue_swi changed to run without Giant, and taskqueue_swi_giant added to run with Giant."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6108
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6131
#, no-wrap
msgid "500104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6132
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111600[111600]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6110
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6133
#, no-wrap
msgid "February 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6135
#, no-wrap
msgid "`cdevsw_add()` and `cdevsw_remove()` no longer exists. Appearance of `MAJOR_AUTO` allocation facility."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6113
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6136
#, no-wrap
msgid "500105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6137
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/111864[111864]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6138
#, no-wrap
msgid "March 4, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6117
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6140
#, no-wrap
msgid "5.0-CURRENT after new cdevsw initialization method."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6141
#, no-wrap
msgid "500106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6119
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6142
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112007[112007]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6120
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6143
#, no-wrap
msgid "March 8, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6122
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6145
#, no-wrap
msgid "`devstat_add_entry()` has been replaced by `devstat_new_entry()`"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6123
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6146
#, no-wrap
msgid "500107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6124
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6147
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112288[112288]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6125
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6130
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6153
#, no-wrap
msgid "March 15, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6127
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6150
#, no-wrap
msgid "Devstat interface change; see sys/sys/param.h 1.149"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6128
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6151
#, no-wrap
msgid "500108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6129
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6152
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112300[112300]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6132
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6155
#, no-wrap
msgid "Token-Ring interface changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6156
#, no-wrap
msgid "500109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6134
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6157
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112571[112571]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6135
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6158
#, no-wrap
msgid "March 25, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6137
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6160
#, no-wrap
msgid "Addition of vm_paddr_t."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6138
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6161
#, no-wrap
msgid "500110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6139
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6162
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112741[112741]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6140
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6163
#, no-wrap
msgid "March 28, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6142
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6165
#, no-wrap
msgid "5.0-CURRENT after man:realpath[3] has been made thread-safe"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6143
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6166
#, no-wrap
msgid "500111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6144
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6167
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113273[113273]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6145
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6168
#, no-wrap
msgid "April 9, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6147
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6170
#, no-wrap
msgid "5.0-CURRENT after man:usbhid[3] has been synced with NetBSD"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6148
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6171
#, no-wrap
msgid "500112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6149
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6172
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113597[113597]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6150
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6173
#, no-wrap
msgid "April 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6152
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6175
#, no-wrap
msgid "5.0-CURRENT after new NSS implementation and addition of POSIX.1 getpw*_r, getgr*_r functions"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6153
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6176
#, no-wrap
msgid "500113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6154
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6177
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/114492[114492]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6155
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6178
#, no-wrap
msgid "May 2, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6157
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6180
#, no-wrap
msgid "5.0-CURRENT after removal of the old rc system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6158
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6181
#, no-wrap
msgid "501000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6159
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6182
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115816[115816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6160
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6183
#, no-wrap
msgid "June 4, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6162
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6185
#, no-wrap
msgid "5.1-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6163
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6186
#, no-wrap
msgid "501100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6164
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6187
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115710[115710]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6165
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6188
#, no-wrap
msgid "June 2, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6167
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6190
#, no-wrap
msgid "5.1-CURRENT after branching for RELENG_5_1."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6168
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6191
#, no-wrap
msgid "501101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6169
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6192
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/117025[117025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6170
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6193
#, no-wrap
msgid "June 29, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6172
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6195
#, no-wrap
msgid "5.1-CURRENT after correcting the semantics of man:sigtimedwait[2] and man:sigwaitinfo[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6173
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6196
#, no-wrap
msgid "501102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6174
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6197
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/117191[117191]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6175
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6198
#, no-wrap
msgid "July 3, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6177
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6200
#, no-wrap
msgid "5.1-CURRENT after adding the lockfunc and lockfuncarg fields to man:bus_dma_tag_create[9]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6178
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6201
#, no-wrap
msgid "501103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6179
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6202
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118241[118241]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6180
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6203
#, no-wrap
msgid "July 31, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6182
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6205
#, no-wrap
msgid "5.1-CURRENT after GCC 3.3.1-pre 20030711 snapshot integration."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6183
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6206
#, no-wrap
msgid "501104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6184
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6207
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118511[118511]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6185
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6208
#, no-wrap
msgid "August 5, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6187
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6210
#, no-wrap
msgid "5.1-CURRENT 3ware API changes to twe."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6188
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6211
#, no-wrap
msgid "501105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6189
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6212
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/119021[119021]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6190
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6213
#, no-wrap
msgid "August 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6192
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6215
#, no-wrap
msgid "5.1-CURRENT dynamically-linked /bin and /sbin support and movement of libraries to /lib."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6193
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6216
#, no-wrap
msgid "501106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6194
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6217
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/119881[119881]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6195
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6218
#, no-wrap
msgid "September 8, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6197
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6220
#, no-wrap
msgid "5.1-CURRENT after adding kernel support for Coda 6.x."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6198
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6221
#, no-wrap
msgid "501107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6199
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6222
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120180[120180]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6200
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6223
#, no-wrap
msgid "September 17, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6202
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6225
#, no-wrap
msgid "5.1-CURRENT after 16550 UART constants moved from [.filename]#<dev/sio/sioreg.h># to [.filename]#<dev/ic/ns16550.h>#. Also when libmap functionality was unconditionally supported by rtld."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6203
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6226
#, no-wrap
msgid "501108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6204
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6227
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120386[120386]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6205
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6228
#, no-wrap
msgid "September 23, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6207
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6230
#, no-wrap
msgid "5.1-CURRENT after PFIL_HOOKS API update"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6208
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6231
#, no-wrap
msgid "501109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6209
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6232
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120503[120503]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6210
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6233
#, no-wrap
msgid "September 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6212
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6235
#, no-wrap
msgid "5.1-CURRENT after adding man:kiconv[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6213
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6236
#, no-wrap
msgid "501110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6214
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6237
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/120556[120556]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6215
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6238
#, no-wrap
msgid "September 28, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6217
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6240
#, no-wrap
msgid "5.1-CURRENT after changing default operations for open and close in cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6218
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6241
#, no-wrap
msgid "501111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6219
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6242
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121125[121125]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6220
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6225
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6248
#, no-wrap
msgid "October 16, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6222
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6245
#, no-wrap
msgid "5.1-CURRENT after changed layout of cdevsw"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6223
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6246
#, no-wrap
msgid "501112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6224
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6247
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121129[121129]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6227
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6250
#, no-wrap
msgid "5.1-CURRENT after adding kobj multiple inheritance"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6228
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6251
#, no-wrap
msgid "501113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6229
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6252
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121816[121816]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6230
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6253
#, no-wrap
msgid "October 31, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6232
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6255
#, no-wrap
msgid "5.1-CURRENT after the if_xname change in struct ifnet"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6233
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6256
#, no-wrap
msgid "501114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6234
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6257
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/122779[122779]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6235
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6258
#, no-wrap
msgid "November 16, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6237
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6260
#, no-wrap
msgid "5.1-CURRENT after changing /bin and /sbin to be dynamically linked"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6238
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6261
#, no-wrap
msgid "502000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6239
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6262
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123198[123198]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6240
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6250
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6273
#, no-wrap
msgid "December 7, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6242
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6265
#, no-wrap
msgid "5.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6243
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6266
#, no-wrap
msgid "502010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6244
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6267
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126150[126150]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6245
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6268
#, no-wrap
msgid "February 23, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6247
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6270
#, no-wrap
msgid "5.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6248
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6271
#, no-wrap
msgid "502100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6249
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6272
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123196[123196]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6252
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6275
#, no-wrap
msgid "5.2-CURRENT after branching for RELENG_5_2"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6253
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6276
#, no-wrap
msgid "502101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6254
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6277
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/123677[123677]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6255
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6278
#, no-wrap
msgid "December 19, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6257
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6280
#, no-wrap
msgid "5.2-CURRENT after __cxa_atexit/__cxa_finalize functions were added to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6258
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6281
#, no-wrap
msgid "502102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6259
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6282
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/125236[125236]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6260
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6283
#, no-wrap
msgid "January 30, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6262
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6285
#, no-wrap
msgid "5.2-CURRENT after change of default thread library from libc_r to libpthread."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6263
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6286
#, no-wrap
msgid "502103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6264
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6287
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126083[126083]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6265
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6288
#, no-wrap
msgid "February 21, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6267
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6290
#, no-wrap
msgid "5.2-CURRENT after device driver API megapatch."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6268
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6291
#, no-wrap
msgid "502104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6269
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6292
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126208[126208]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6270
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6293
#, no-wrap
msgid "February 25, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6272
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6295
#, no-wrap
msgid "5.2-CURRENT after `getopt_long_only()` addition."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6273
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6296
#, no-wrap
msgid "502105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6274
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6297
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126644[126644]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6275
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6298
#, no-wrap
msgid "March 5, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6277
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6300
#, no-wrap
msgid "5.2-CURRENT after NULL is made into ((void *)0) for C, creating more warnings."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6278
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6301
#, no-wrap
msgid "502106"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6279
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6302
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126757[126757]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6280
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6303
#, no-wrap
msgid "March 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6282
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6305
#, no-wrap
msgid "5.2-CURRENT after pf is linked to the build and install."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6283
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6306
#, no-wrap
msgid "502107"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6284
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6307
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126819[126819]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6285
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6308
#, no-wrap
msgid "March 10, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6287
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6310
#, no-wrap
msgid "5.2-CURRENT after time_t is changed to a 64-bit value on sparc64."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6288
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6311
#, no-wrap
msgid "502108"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6289
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6312
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/126891[126891]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6290
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6313
#, no-wrap
msgid "March 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6292
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6315
#, no-wrap
msgid "5.2-CURRENT after Intel C/C++ compiler support in some headers and man:execve[2] changes to be more strictly conforming to POSIX."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6293
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6316
#, no-wrap
msgid "502109"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6294
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6317
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/127312[127312]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6295
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6318
#, no-wrap
msgid "March 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6297
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6320
#, no-wrap
msgid "5.2-CURRENT after the introduction of the bus_alloc_resource_any API"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6298
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6321
#, no-wrap
msgid "502110"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6299
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6322
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/127475[127475]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6300
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6323
#, no-wrap
msgid "March 27, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6302
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6325
#, no-wrap
msgid "5.2-CURRENT after the addition of UTF-8 locales"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6303
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6326
#, no-wrap
msgid "502111"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6304
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6327
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/128144[128144]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6305
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6328
#, no-wrap
msgid "April 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6307
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6330
#, no-wrap
msgid "5.2-CURRENT after the removal of the man:getvfsent[3] API"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6308
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6331
#, no-wrap
msgid "502112"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6309
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6332
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/128182[128182]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6310
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6333
#, no-wrap
msgid "April 13, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6312
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6335
#, no-wrap
msgid "5.2-CURRENT after the addition of the .warning directive for make."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6313
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6336
#, no-wrap
msgid "502113"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6314
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6337
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130057[130057]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6315
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6338
#, no-wrap
msgid "June 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6317
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6340
#, no-wrap
msgid "5.2-CURRENT after `ttyioctl()` was made mandatory for serial drivers."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6318
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6341
#, no-wrap
msgid "502114"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6319
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6342
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130418[130418]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6320
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6343
#, no-wrap
msgid "June 13, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6322
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6345
#, no-wrap
msgid "5.2-CURRENT after import of the ALTQ framework."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6323
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6346
#, no-wrap
msgid "502115"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6324
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6347
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130481[130481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6325
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6348
#, no-wrap
msgid "June 14, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6327
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6350
#, no-wrap
msgid "5.2-CURRENT after changing man:sema_timedwait[9] to return 0 on success and a non-zero error code on failure."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6328
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6351
#, no-wrap
msgid "502116"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6329
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6352
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130585[130585]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6330
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6353
#, no-wrap
msgid "June 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6332
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6355
#, no-wrap
msgid "5.2-CURRENT after changing kernel dev_t to be pointer to struct cdev *."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6333
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6356
#, no-wrap
msgid "502117"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6334
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6357
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130640[130640]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6335
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6340
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6363
#, no-wrap
msgid "June 17, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6337
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6360
#, no-wrap
msgid "5.2-CURRENT after changing kernel udev_t to dev_t."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6338
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6361
#, no-wrap
msgid "502118"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6339
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6362
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130656[130656]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6342
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6365
#, no-wrap
msgid "5.2-CURRENT after adding support for CLOCK_VIRTUAL and CLOCK_PROF to man:clock_gettime[2] and man:clock_getres[2]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6343
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6366
#, no-wrap
msgid "502119"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6344
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6367
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/130934[130934]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6345
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6368
#, no-wrap
msgid "June 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6347
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6370
#, no-wrap
msgid "5.2-CURRENT after changing network interface cloning overhaul."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6348
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6371
#, no-wrap
msgid "502120"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6349
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6372
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131429[131429]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6350
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6373
#, no-wrap
msgid "July 2, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6352
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6375
#, no-wrap
msgid "5.2-CURRENT after the update of the package tools to revision 20040629."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6353
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6376
#, no-wrap
msgid "502121"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6354
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6377
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131883[131883]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6355
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6378
#, no-wrap
msgid "July 9, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6357
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6380
#, no-wrap
msgid "5.2-CURRENT after marking Bluetooth code as non-i386 specific."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6358
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6381
#, no-wrap
msgid "502122"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6359
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6382
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/131971[131971]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6360
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6383
#, no-wrap
msgid "July 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6362
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6385
#, no-wrap
msgid "5.2-CURRENT after the introduction of the KDB debugger framework, the conversion of DDB into a backend and the introduction of the GDB backend."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6363
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6386
#, no-wrap
msgid "502123"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6364
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6387
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132025[132025]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6365
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6388
#, no-wrap
msgid "July 12, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6367
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6390
#, no-wrap
msgid "5.2-CURRENT after change to make VFS_ROOT take a struct thread argument as does vflush. Struct kinfo_proc now has a user data pointer. The switch of the default X implementation to `xorg` was also made at this time."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6368
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6391
#, no-wrap
msgid "502124"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6369
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6392
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132597[132597]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6370
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6393
#, no-wrap
msgid "July 24, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6372
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6395
#, no-wrap
msgid "5.2-CURRENT after the change to separate the way ports rc.d and legacy scripts are started."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6373
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6396
#, no-wrap
msgid "502125"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6374
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6397
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132726[132726]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6375
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6398
#, no-wrap
msgid "July 28, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6377
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6400
#, no-wrap
msgid "5.2-CURRENT after the backout of the previous change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6378
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6401
#, no-wrap
msgid "502126"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6379
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6402
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132914[132914]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6380
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6403
#, no-wrap
msgid "July 31, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6382
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6405
#, no-wrap
msgid "5.2-CURRENT after the removal of `kmem_alloc_pageable()` and the import of gcc 3.4.2."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6383
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6406
#, no-wrap
msgid "502127"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6384
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6407
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/132991[132991]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6385
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6408
#, no-wrap
msgid "August 2, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6387
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6410
#, no-wrap
msgid "5.2-CURRENT after changing the UMA kernel API to allow ctors/inits to fail."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6388
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6411
#, no-wrap
msgid "502128"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6389
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6412
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133306[133306]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6390
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6413
#, no-wrap
msgid "August 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6392
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6415
#, no-wrap
msgid "5.2-CURRENT after the change of the vfs_mount signature as well as global replacement of PRISON_ROOT with SUSER_ALLOWJAIL for the man:suser[9] API."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6393
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6416
#, no-wrap
msgid "503000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6394
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6417
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/134189[134189]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6395
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6418
#, no-wrap
msgid "August 23, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6397
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6420
#, no-wrap
msgid "5.3-BETA/RC before the pfil API change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6398
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6421
#, no-wrap
msgid "503001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6399
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6422
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/135580[135580]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6400
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6423
#, no-wrap
msgid "September 22, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6402
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6425
#, no-wrap
msgid "5.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6403
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6426
#, no-wrap
msgid "503100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6404
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6427
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/136595[136595]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6405
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6428
#, no-wrap
msgid "October 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6407
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6430
#, no-wrap
msgid "5.3-STABLE after branching for RELENG_5_3"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6408
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6431
#, no-wrap
msgid "503101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6409
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6432
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138459[138459]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6410
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6433
#, no-wrap
msgid "December 3, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6412
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6435
#, no-wrap
msgid "5.3-STABLE after addition of glibc style man:strftime[3] padding options."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6413
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6436
#, no-wrap
msgid "503102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6414
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6437
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/141788[141788]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6415
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6438
#, no-wrap
msgid "February 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6417
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6440
#, no-wrap
msgid "5.3-STABLE after OpenBSD's man:nc[1] import MFC."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6418
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6441
#, no-wrap
msgid "503103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6419
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6442
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142639[142639]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6422
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6445
#, no-wrap
msgid "5.4-PRERELEASE after the MFC of the fixes in [.filename]#<src/include/stdbool.h># and [.filename]#<src/sys/i386/include/_types.h># for using the GCC-compatibility of the Intel C/C++ compiler."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6423
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6446
#, no-wrap
msgid "503104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6424
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6447
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/142835[142835]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6427
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6450
#, no-wrap
msgid "5.4-PRERELEASE after the MFC of the change of ifi_epoch from wall clock time to uptime."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6428
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6451
#, no-wrap
msgid "503105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6429
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6452
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/143029[143029]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6430
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6453
#, no-wrap
msgid "March 2, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6432
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6455
#, no-wrap
msgid "5.4-PRERELEASE after the MFC of the fix of EOVERFLOW check in man:vswprintf[3]."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6433
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6456
#, no-wrap
msgid "504000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6434
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6457
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144575[144575]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6435
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6440
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6463
#, no-wrap
msgid "April 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6437
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6460
#, no-wrap
msgid "5.4-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6438
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6461
#, no-wrap
msgid "504100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6439
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6462
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/144581[144581]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6442
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6465
#, no-wrap
msgid "5.4-STABLE after branching for RELENG_5_4"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6443
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6466
#, no-wrap
msgid "504101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6444
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6467
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/146105[146105]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6445
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6468
#, no-wrap
msgid "May 11, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6447
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6470
#, no-wrap
msgid "5.4-STABLE after increasing the default thread stacksizes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6448
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6471
#, no-wrap
msgid "504102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6449
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6472
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/504101[504101]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6450
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6473
#, no-wrap
msgid "June 24, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6452
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6475
#, no-wrap
msgid "5.4-STABLE after the addition of sha256"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6453
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6476
#, no-wrap
msgid "504103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6454
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6477
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/150892[150892]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6455
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6478
#, no-wrap
msgid "October 3, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6457
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6480
#, no-wrap
msgid "5.4-STABLE after the MFC of if_bridge"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6458
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6481
#, no-wrap
msgid "504104"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6459
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6482
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/152370[152370]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6460
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6483
#, no-wrap
msgid "November 13, 2005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6462
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6485
#, no-wrap
msgid "5.4-STABLE after the MFC of bsdiff and portsnap"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6463
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6486
#, no-wrap
msgid "504105"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6464
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6487
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/154464[154464]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6467
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6490
#, no-wrap
msgid "5.4-STABLE after MFC of ldconfig_local_dirs change."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6468
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6491
#, no-wrap
msgid "505000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6469
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6492
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158481[158481]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6470
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6475
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6493
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6498
#, no-wrap
msgid "May 12, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6472
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6495
#, no-wrap
msgid "5.5-RELEASE."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6473
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6496
#, no-wrap
msgid "505100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6474
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6497
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/158482[158482]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6476
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6499
#, no-wrap
msgid "5.5-STABLE after branching for RELENG_5_5"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6479
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6502
#, no-wrap
msgid "FreeBSD 4 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6482
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6505
#, no-wrap
msgid "FreeBSD 4 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6491
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6514
#, no-wrap
msgid "400000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6492
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6515
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43041[43041]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6493
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6886
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6909
#, no-wrap
msgid "January 22, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6495
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6518
#, no-wrap
msgid "4.0-CURRENT after 3.4 branch"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6496
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6519
#, no-wrap
msgid "400001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6497
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6520
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/44177[44177]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6498
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6521
#, no-wrap
msgid "February 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6500
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6523
#, no-wrap
msgid "4.0-CURRENT after change in dynamic linker handling"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6501
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6524
#, no-wrap
msgid "400002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6502
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6525
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/44699[44699]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6503
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6526
#, no-wrap
msgid "March 13, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6505
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6528
#, no-wrap
msgid "4.0-CURRENT after C++ constructor/destructor order change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6506
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6529
#, no-wrap
msgid "400003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6507
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6530
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45059[45059]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6508
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6896
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6919
#, no-wrap
msgid "March 27, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6510
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6533
#, no-wrap
msgid "4.0-CURRENT after functioning man:dladdr[3]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6511
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6534
#, no-wrap
msgid "400004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6512
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6535
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45321[45321]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6513
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6536
#, no-wrap
msgid "April 5, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6515
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6538
#, no-wrap
msgid "4.0-CURRENT after __deregister_frame_info dynamic linker bug fix (also 4.0-CURRENT after EGCS 1.1.2 integration)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6516
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6539
#, no-wrap
msgid "400005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6517
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6540
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/46113[46113]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6518
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6541
#, no-wrap
msgid "April 27, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6520
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6543
#, no-wrap
msgid "4.0-CURRENT after man:suser[9] API change (also 4.0-CURRENT after newbus)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6521
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6544
#, no-wrap
msgid "400006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6522
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6545
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/47640[47640]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6523
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6546
#, no-wrap
msgid "May 31, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6525
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6548
#, no-wrap
msgid "4.0-CURRENT after cdevsw registration change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6526
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6549
#, no-wrap
msgid "400007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6527
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6550
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/47992[47992]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6528
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6551
#, no-wrap
msgid "June 17, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6530
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6553
#, no-wrap
msgid "4.0-CURRENT after the addition of so_cred for socket level credentials"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6531
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6554
#, no-wrap
msgid "400008"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6532
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6555
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/48048[48048]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6533
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6556
#, no-wrap
msgid "June 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6535
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6558
#, no-wrap
msgid "4.0-CURRENT after the addition of a poll syscall wrapper to libc_r"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6536
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6559
#, no-wrap
msgid "400009"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6537
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6560
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/48936[48936]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6538
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6561
#, no-wrap
msgid "July 20, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6540
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6563
#, no-wrap
msgid "4.0-CURRENT after the change of the kernel's `dev_t` type to `struct specinfo` pointer"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6541
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6564
#, no-wrap
msgid "400010"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6542
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6565
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51649[51649]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6543
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6566
#, no-wrap
msgid "September 25, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6545
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6568
#, no-wrap
msgid "4.0-CURRENT after fixing a hole in man:jail[2]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6546
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6569
#, no-wrap
msgid "400011"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6547
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6570
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51791[51791]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6548
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6571
#, no-wrap
msgid "September 29, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6550
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6573
#, no-wrap
msgid "4.0-CURRENT after the `sigset_t` datatype change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6551
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6574
#, no-wrap
msgid "400012"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6552
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6575
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/53164[53164]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6553
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6576
#, no-wrap
msgid "November 15, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6555
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6578
#, no-wrap
msgid "4.0-CURRENT after the cutover to the GCC 2.95.2 compiler"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6556
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6579
#, no-wrap
msgid "400013"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6557
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6580
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54123[54123]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6558
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6581
#, no-wrap
msgid "December 4, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6560
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6583
#, no-wrap
msgid "4.0-CURRENT after adding pluggable linux-mode ioctl handlers"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6561
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6584
#, no-wrap
msgid "400014"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6562
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6585
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/56216[56216]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6563
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6586
#, no-wrap
msgid "January 18, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6565
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6588
#, no-wrap
msgid "4.0-CURRENT after importing OpenSSL"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6566
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6589
#, no-wrap
msgid "400015"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6567
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6590
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/56700[56700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6568
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6591
#, no-wrap
msgid "January 27, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6570
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6593
#, no-wrap
msgid "4.0-CURRENT after the C++ ABI change in GCC 2.95.2 from -fvtable-thunks to -fno-vtable-thunks by default"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6571
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6594
#, no-wrap
msgid "400016"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6572
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6595
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/57529[57529]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6573
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6596
#, no-wrap
msgid "February 27, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6575
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6598
#, no-wrap
msgid "4.0-CURRENT after importing OpenSSH"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6576
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6599
#, no-wrap
msgid "400017"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6577
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6600
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58005[58005]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6580
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6603
#, no-wrap
msgid "4.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6581
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6604
#, no-wrap
msgid "400018"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6582
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6605
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/58170[58170]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6583
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6606
#, no-wrap
msgid "March 17, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6585
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6608
#, no-wrap
msgid "4.0-STABLE after 4.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6586
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6609
#, no-wrap
msgid "400019"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6587
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6610
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/60047[60047]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6588
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6611
#, no-wrap
msgid "May 5, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6590
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6613
#, no-wrap
msgid "4.0-STABLE after the introduction of delayed checksums."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6591
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6614
#, no-wrap
msgid "400020"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6592
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6615
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61262[61262]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6593
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6616
#, no-wrap
msgid "June 4, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6595
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6618
#, no-wrap
msgid "4.0-STABLE after merging libxpg4 code into libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6596
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6619
#, no-wrap
msgid "400021"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6597
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6620
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/62820[62820]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6598
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6621
#, no-wrap
msgid "July 8, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6600
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6623
#, no-wrap
msgid "4.0-STABLE after upgrading Binutils to 2.10.0, ELF branding changes, and tcsh in the base system."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6601
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6624
#, no-wrap
msgid "410000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6602
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6625
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63095[63095]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6605
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6628
#, no-wrap
msgid "4.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6606
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6629
#, no-wrap
msgid "410001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6607
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6630
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/64012[64012]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6608
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6631
#, no-wrap
msgid "July 29, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6610
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6633
#, no-wrap
msgid "4.1-STABLE after 4.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6611
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6634
#, no-wrap
msgid "410002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6612
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6635
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/65962[65962]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6613
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6636
#, no-wrap
msgid "September 16, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6615
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6638
#, no-wrap
msgid "4.1-STABLE after man:setproctitle[3] moved from libutil to libc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6616
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6639
#, no-wrap
msgid "411000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6617
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6640
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/66336[66336]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6618
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6641
#, no-wrap
msgid "September 25, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6620
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6643
#, no-wrap
msgid "4.1.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6621
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6644
#, no-wrap
msgid "411001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6625
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6648
#, no-wrap
msgid "4.1.1-STABLE after 4.1.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6626
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6649
#, no-wrap
msgid "420000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6627
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6650
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/68066[68066]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6628
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6651
#, no-wrap
msgid "October 31, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6630
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6653
#, no-wrap
msgid "4.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6631
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6654
#, no-wrap
msgid "420001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6632
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6655
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/70895[70895]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6635
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6658
#, no-wrap
msgid "4.2-STABLE after combining libgcc.a and libgcc_r.a, and associated GCC linkage changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6636
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6659
#, no-wrap
msgid "430000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6637
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6660
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/73800[73800]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6638
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6661
#, no-wrap
msgid "March 6, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6640
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6663
#, no-wrap
msgid "4.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6641
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6664
#, no-wrap
msgid "430001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6642
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6665
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/76779[76779]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6643
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6666
#, no-wrap
msgid "May 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6645
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6668
#, no-wrap
msgid "4.3-STABLE after wint_t introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6646
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6669
#, no-wrap
msgid "430002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6647
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6670
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/80157[80157]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6648
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6671
#, no-wrap
msgid "July 22, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6650
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6673
#, no-wrap
msgid "4.3-STABLE after PCI powerstate API merge."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6651
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6674
#, no-wrap
msgid "440000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6652
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6675
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/80923[80923]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6653
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6676
#, no-wrap
msgid "August 1, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6655
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6678
#, no-wrap
msgid "4.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6656
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6679
#, no-wrap
msgid "440001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6657
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6680
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/85341[85341]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6658
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6681
#, no-wrap
msgid "October 23, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6660
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6683
#, no-wrap
msgid "4.4-STABLE after d_thread_t introduction."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6661
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6684
#, no-wrap
msgid "440002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6662
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6685
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/86038[86038]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6663
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6686
#, no-wrap
msgid "November 4, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6665
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6688
#, no-wrap
msgid "4.4-STABLE after mount structure changes (affects filesystem klds)."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6666
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6689
#, no-wrap
msgid "440003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6667
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6690
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/88130[88130]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6668
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6691
#, no-wrap
msgid "December 18, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6670
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6693
#, no-wrap
msgid "4.4-STABLE after the userland components of smbfs were imported."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6671
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6694
#, no-wrap
msgid "450000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6672
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6695
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/88271[88271]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6673
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6696
#, no-wrap
msgid "December 20, 2001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6675
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6698
#, no-wrap
msgid "4.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6676
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6699
#, no-wrap
msgid "450001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6680
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6703
#, no-wrap
msgid "4.5-STABLE after the usb structure element rename."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6681
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6704
#, no-wrap
msgid "450002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6682
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6705
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/92151[92151]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6683
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6706
#, no-wrap
msgid "March 12, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6685
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6708
#, no-wrap
msgid "4.5-STABLE after locale changes."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6686
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6709
#, no-wrap
msgid "450003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6690
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6713
#, no-wrap
msgid "(Never created)"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6691
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6714
#, no-wrap
msgid "450004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6692
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6715
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/94840[94840]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6693
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6716
#, no-wrap
msgid "April 16, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6695
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6718
#, no-wrap
msgid "4.5-STABLE after the `sendmail_enable` man:rc.conf[5] variable was made to take the value `NONE`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6696
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6719
#, no-wrap
msgid "450005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6697
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6720
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95555[95555]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6698
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6721
#, no-wrap
msgid "April 27, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6700
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6723
#, no-wrap
msgid "4.5-STABLE after moving to XFree86 4 by default for package builds."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6701
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6724
#, no-wrap
msgid "450006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6702
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6725
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/95846[95846]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6703
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6726
#, no-wrap
msgid "May 1, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6705
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6728
#, no-wrap
msgid "4.5-STABLE after accept filtering was fixed so that is no longer susceptible to an easy DoS."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6706
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6729
#, no-wrap
msgid "460000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6707
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6730
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/97923[97923]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6708
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6713
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6736
#, no-wrap
msgid "June 21, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6710
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6733
#, no-wrap
msgid "4.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6711
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6734
#, no-wrap
msgid "460001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6712
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6735
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98730[98730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6715
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6738
#, no-wrap
msgid "4.6-STABLE man:sendfile[2] fixed to comply with documentation, not to count any headers sent against the amount of data to be sent from the file."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6716
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6739
#, no-wrap
msgid "460002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6717
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6740
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/100366[100366]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6718
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6741
#, no-wrap
msgid "July 19, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6720
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6743
#, no-wrap
msgid "4.6.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6721
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6744
#, no-wrap
msgid "460100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6722
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6745
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98857[98857]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6723
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6728
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6751
#, no-wrap
msgid "June 26, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6725
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6748
#, no-wrap
msgid "4.6-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6726
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6749
#, no-wrap
msgid "460101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6727
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6750
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/98880[98880]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6730
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6753
#, no-wrap
msgid "4.6-STABLE after MFC of `sed -i`."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6731
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6754
#, no-wrap
msgid "460102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6732
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6755
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/102759[102759]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6735
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6758
#, no-wrap
msgid "4.6-STABLE after MFC of many new pkg_install features from the HEAD."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6736
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6759
#, no-wrap
msgid "470000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6737
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6760
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104655[104655]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6738
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6761
#, no-wrap
msgid "October 8, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6740
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6763
#, no-wrap
msgid "4.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6741
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6764
#, no-wrap
msgid "470100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6742
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6765
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/104717[104717]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6743
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6766
#, no-wrap
msgid "October 9, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6745
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6768
#, no-wrap
msgid "4.7-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6746
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6769
#, no-wrap
msgid "470101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6747
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6770
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/106732[106732]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6748
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6771
#, no-wrap
msgid "November 10, 2002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6750
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6773
#, no-wrap
msgid "Start generated __std{in,out,err}p references rather than __sF. This changes std{in,out,err} from a compile time expression to a runtime one."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6751
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6774
#, no-wrap
msgid "470102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6752
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6775
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/109753[109753]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6753
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6776
#, no-wrap
msgid "January 23, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6755
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6778
#, no-wrap
msgid "4.7-STABLE after MFC of mbuf changes to replace m_aux mbufs by m_tag's"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6756
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6779
#, no-wrap
msgid "470103"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6757
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6780
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/110887[110887]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6758
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6781
#, no-wrap
msgid "February 14, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6760
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6783
#, no-wrap
msgid "4.7-STABLE gets OpenSSL 0.9.7"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6761
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6784
#, no-wrap
msgid "480000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6762
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6785
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/112852[112852]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6763
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6786
#, no-wrap
msgid "March 30, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6765
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6788
#, no-wrap
msgid "4.8-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6766
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6789
#, no-wrap
msgid "480100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6767
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6790
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/113107[113107]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6768
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6791
#, no-wrap
msgid "April 5, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6770
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6793
#, no-wrap
msgid "4.8-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6771
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6794
#, no-wrap
msgid "480101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6772
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6795
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/115232[115232]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6773
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6796
#, no-wrap
msgid "May 22, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6775
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6798
#, no-wrap
msgid "4.8-STABLE after man:realpath[3] has been made thread-safe"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6776
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6799
#, no-wrap
msgid "480102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6777
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6800
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/118737[118737]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6778
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6801
#, no-wrap
msgid "August 10, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6780
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6803
#, no-wrap
msgid "4.8-STABLE 3ware API changes to twe."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6781
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6804
#, no-wrap
msgid "490000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6782
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6805
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121592[121592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6783
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6788
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6811
#, no-wrap
msgid "October 27, 2003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6785
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6808
#, no-wrap
msgid "4.9-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6786
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6809
#, no-wrap
msgid "490100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6787
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6810
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/121593[121593]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6790
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6813
#, no-wrap
msgid "4.9-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6791
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6814
#, no-wrap
msgid "490101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6792
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6815
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/124264[124264]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6793
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6816
#, no-wrap
msgid "January 8, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6795
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6818
#, no-wrap
msgid "4.9-STABLE after e_sid was added to struct kinfo_eproc."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6796
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6819
#, no-wrap
msgid "490102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6797
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6820
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/125417[125417]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6798
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6821
#, no-wrap
msgid "February 4, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6800
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6823
#, no-wrap
msgid "4.9-STABLE after MFC of libmap functionality for rtld."
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6801
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6824
#, no-wrap
msgid "491000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6802
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6825
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/129700[129700]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6803
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6826
#, no-wrap
msgid "May 25, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6805
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6828
#, no-wrap
msgid "4.10-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6806
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6829
#, no-wrap
msgid "491100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6807
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6830
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/129918[129918]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6808
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6831
#, no-wrap
msgid "June 1, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6810
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6833
#, no-wrap
msgid "4.10-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6811
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6834
#, no-wrap
msgid "491101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6812
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6835
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/133506[133506]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6813
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6836
#, no-wrap
msgid "August 11, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6815
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6838
#, no-wrap
msgid "4.10-STABLE after MFC of revision 20040629 of the package tools"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6816
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6839
#, no-wrap
msgid "491102"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6817
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6840
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/137786[137786]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6818
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6841
#, no-wrap
msgid "November 16, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6820
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6843
#, no-wrap
msgid "4.10-STABLE after VM fix dealing with unwiring of fictitious pages"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6821
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6844
#, no-wrap
msgid "492000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6822
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6845
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138960[138960]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6823
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6828
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6846
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6851
#, no-wrap
msgid "December 17, 2004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6825
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6848
#, no-wrap
msgid "4.11-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6826
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6849
#, no-wrap
msgid "492100"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6827
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6850
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/138959[138959]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6830
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6853
#, no-wrap
msgid "4.11-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6831
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6854
#, no-wrap
msgid "492101"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6832
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6855
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/157843[157843]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6833
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6856
#, no-wrap
msgid "April 18, 2006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6834
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6857
#, no-wrap
msgid "4.11-STABLE after adding libdata/ldconfig directories to mtree files."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6837
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6860
#, no-wrap
msgid "FreeBSD 3 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6840
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6863
#, no-wrap
msgid "FreeBSD 3 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6849
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6872
#, no-wrap
msgid "300000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6850
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6873
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/22917[22917]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6851
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6874
#, no-wrap
msgid "February 19, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6853
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6876
#, no-wrap
msgid "3.0-CURRENT before man:mount[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6854
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6877
#, no-wrap
msgid "300001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6855
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6878
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36283[36283]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6856
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6879
#, no-wrap
msgid "September 24, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6858
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6881
#, no-wrap
msgid "3.0-CURRENT after man:mount[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6859
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6882
#, no-wrap
msgid "300002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6860
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6883
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36592[36592]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6861
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6884
#, no-wrap
msgid "June 2, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6863
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6886
#, no-wrap
msgid "3.0-CURRENT after man:semctl[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6864
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6887
#, no-wrap
msgid "300003"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6865
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6888
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/36735[36735]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6866
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6889
#, no-wrap
msgid "June 7, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6868
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6891
#, no-wrap
msgid "3.0-CURRENT after ioctl arg changes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6869
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6892
#, no-wrap
msgid "300004"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6870
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6893
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/38768[38768]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6871
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6894
#, no-wrap
msgid "September 3, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6873
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6896
#, no-wrap
msgid "3.0-CURRENT after ELF conversion"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6874
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6897
#, no-wrap
msgid "300005"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6875
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6898
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/40438[40438]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6876
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6881
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6904
#, no-wrap
msgid "October 16, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6878
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6901
#, no-wrap
msgid "3.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6879
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6902
#, no-wrap
msgid "300006"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6880
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6903
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/40445[40445]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6883
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6906
#, no-wrap
msgid "3.0-CURRENT after 3.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6884
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6907
#, no-wrap
msgid "300007"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6885
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6908
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43042[43042]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6888
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6911
#, no-wrap
msgid "3.0-STABLE after 3/4 branch"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6889
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6912
#, no-wrap
msgid "310000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6890
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6913
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/43807[43807]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6891
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6914
#, no-wrap
msgid "February 9, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6893
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6916
#, no-wrap
msgid "3.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6894
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6917
#, no-wrap
msgid "310001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6895
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6918
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45060[45060]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6898
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6921
#, no-wrap
msgid "3.1-STABLE after 3.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6899
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6922
#, no-wrap
msgid "310002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6900
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6923
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/45689[45689]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6901
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6924
#, no-wrap
msgid "April 14, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6903
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6926
#, no-wrap
msgid "3.1-STABLE after C++ constructor/destructor order change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6904
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6927
#, no-wrap
msgid "320000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6908
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6931
#, no-wrap
msgid "3.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6909
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6932
#, no-wrap
msgid "320001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6910
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6933
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/46742[46742]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6911
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6934
#, no-wrap
msgid "May 8, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6913
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6936
#, no-wrap
msgid "3.2-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6914
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6937
#, no-wrap
msgid "320002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6915
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6938
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/50563[50563]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6916
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6939
#, no-wrap
msgid "August 29, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6918
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6941
#, no-wrap
msgid "3.2-STABLE after binary-incompatible IPFW and socket changes"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6919
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6942
#, no-wrap
msgid "330000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6920
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6943
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/50813[50813]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6921
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6944
#, no-wrap
msgid "September 2, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6923
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6946
#, no-wrap
msgid "3.3-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6924
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6947
#, no-wrap
msgid "330001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6925
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6948
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/51328[51328]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6926
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6949
#, no-wrap
msgid "September 16, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6928
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6951
#, no-wrap
msgid "3.3-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6929
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6952
#, no-wrap
msgid "330002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6930
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6953
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/53671[53671]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6931
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6954
#, no-wrap
msgid "November 24, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6933
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6956
#, no-wrap
msgid "3.3-STABLE after adding man:mkstemp[3] to libc"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6934
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6957
#, no-wrap
msgid "340000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6935
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6958
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54166[54166]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6936
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6959
#, no-wrap
msgid "December 5, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6938
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6961
#, no-wrap
msgid "3.4-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6939
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6962
#, no-wrap
msgid "340001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6940
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6963
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/54730[54730]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6941
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6964
#, no-wrap
msgid "December 17, 1999"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6943
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6966
#, no-wrap
msgid "3.4-STABLE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6944
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6967
#, no-wrap
msgid "350000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6945
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6968
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/61876[61876]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6946
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6969
#, no-wrap
msgid "June 20, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6948
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6971
#, no-wrap
msgid "3.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6949
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6972
#, no-wrap
msgid "350001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6950
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6973
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/63043[63043]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6951
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6974
#, no-wrap
msgid "July 12, 2000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6952
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6975
#, no-wrap
msgid "3.5-STABLE"
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6955
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6978
#, no-wrap
msgid "FreeBSD 2.2 Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6958
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6981
#, no-wrap
msgid "FreeBSD 2.2 `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6967
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6990
#, no-wrap
msgid "220000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6968
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6991
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/22918[22918]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6969
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6992
#, no-wrap
msgid "February 19, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6971
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6994
#, no-wrap
msgid "2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6976
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6999
#, no-wrap
msgid "2.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6981
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7004
#, no-wrap
msgid "2.2-STABLE after 2.2.1-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6982
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7005
#, no-wrap
msgid "221001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6983
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7006
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/24941[24941]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6984
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7007
#, no-wrap
msgid "April 15, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6986
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7009
#, no-wrap
msgid "2.2-STABLE after texinfo-3.9"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6987
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7010
#, no-wrap
msgid "221002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6988
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7011
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25325[25325]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6989
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7012
#, no-wrap
msgid "April 30, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6991
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7014
#, no-wrap
msgid "2.2-STABLE after top"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6992
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7015
#, no-wrap
msgid "222000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6993
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7016
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25851[25851]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6994
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7017
#, no-wrap
msgid "May 16, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6996
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7019
#, no-wrap
msgid "2.2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6997
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7020
#, no-wrap
msgid "222001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6998
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7021
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/25921[25921]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:6999
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7022
#, no-wrap
msgid "May 19, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7001
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7024
#, no-wrap
msgid "2.2-STABLE after 2.2.2-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7002
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7025
#, no-wrap
msgid "225000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7003
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7026
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/30053[30053]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7004
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7027
#, no-wrap
msgid "October 2, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7006
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7029
#, no-wrap
msgid "2.2.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7007
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7030
#, no-wrap
msgid "225001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7008
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7031
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/31300[31300]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7009
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7032
#, no-wrap
msgid "November 20, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7011
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7034
#, no-wrap
msgid "2.2-STABLE after 2.2.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7012
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7035
#, no-wrap
msgid "225002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7013
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7036
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/32019[32019]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7014
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7037
#, no-wrap
msgid "December 27, 1997"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7016
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7039
#, no-wrap
msgid "2.2-STABLE after ldconfig -R merge"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7017
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7040
#, no-wrap
msgid "226000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7018
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7041
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/34445[34445]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7019
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7042
#, no-wrap
msgid "March 24, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7021
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7044
#, no-wrap
msgid "2.2.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7022
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7045
#, no-wrap
msgid "227000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7023
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7046
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/37803[37803]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7024
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7029
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7047
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7052
#, no-wrap
msgid "July 21, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7026
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7049
#, no-wrap
msgid "2.2.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7027
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7050
#, no-wrap
msgid "227001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7028
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7051
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/37809[37809]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7031
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7054
#, no-wrap
msgid "2.2-STABLE after 2.2.7-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7032
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7055
#, no-wrap
msgid "227002"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7033
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7056
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/39489[39489]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7034
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7057
#, no-wrap
msgid "September 19, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7036
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7059
#, no-wrap
msgid "2.2-STABLE after man:semctl[2] change"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7037
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7060
#, no-wrap
msgid "228000"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7038
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7061
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/41403[41403]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7039
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7044
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7062
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7067
#, no-wrap
msgid "November 29, 1998"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7041
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7064
#, no-wrap
msgid "2.2.8-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7042
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7065
#, no-wrap
msgid "228001"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7043
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7066
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/41418[41418]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7045
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7068
#, no-wrap
msgid "2.2-STABLE after 2.2.8-RELEASE"
msgstr ""
#. type: delimited block = 4
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7050
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7073
msgid ""
"Note that 2.2-STABLE sometimes identifies itself as \"2.2.5-STABLE\" after "
"the 2.2.5-RELEASE. The pattern used to be year followed by the month, but we "
"decided to change it to a more straightforward major/minor system starting "
"from 2.2. This is because the parallel development on several branches made "
"it infeasible to classify the releases merely by their real release dates. "
"Do not worry about old -CURRENTs; they are listed here just for reference."
msgstr ""
#. type: Title ==
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7053
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7076
#, no-wrap
msgid "FreeBSD 2 Before 2.2-RELEASE Versions"
msgstr ""
#. type: Block title
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7056
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7079
#, no-wrap
msgid "FreeBSD 2 Before 2.2-RELEASE `__FreeBSD_version` Values"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7065
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7088
#, no-wrap
msgid "119411"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7069
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7092
#, no-wrap
msgid "2.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7070
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7093
#, no-wrap
msgid "199501"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7071
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7094
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7153[7153]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7072
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7095
#, no-wrap
msgid "March 19, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7074
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7079
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7102
#, no-wrap
msgid "2.1-CURRENT"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7075
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7098
#, no-wrap
msgid "199503"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7076
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7099
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7310[7310]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7077
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7100
#, no-wrap
msgid "March 24, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7080
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7103
#, no-wrap
msgid "199504"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7081
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7104
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/7704[7704]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7082
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7105
#, no-wrap
msgid "April 9, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7084
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7107
#, no-wrap
msgid "2.0.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7085
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7108
#, no-wrap
msgid "199508"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7086
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7109
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/10297[10297]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7087
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7110
#, no-wrap
msgid "August 26, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7089
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7112
#, no-wrap
msgid "2.2-CURRENT before 2.1"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7090
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7113
#, no-wrap
msgid "199511"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7091
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7114
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/12189[12189]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7092
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7097
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7120
#, no-wrap
msgid "November 10, 1995"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7094
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7117
#, no-wrap
msgid "2.1.0-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7095
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7118
#, no-wrap
msgid "199512"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7096
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7119
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/12196[12196]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7099
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7122
#, no-wrap
msgid "2.2-CURRENT before 2.1.5"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7100
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7123
#, no-wrap
msgid "199607"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7101
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7124
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/17067[17067]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7102
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7125
#, no-wrap
msgid "July 10, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7104
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7127
#, no-wrap
msgid "2.1.5-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7105
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7128
#, no-wrap
msgid "199608"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7106
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7129
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/17127[17127]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7107
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7130
#, no-wrap
msgid "July 12, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7109
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7132
#, no-wrap
msgid "2.2-CURRENT before 2.1.6"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7110
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7115
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7133
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7138
#, no-wrap
msgid "199612"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7111
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7134
#, no-wrap
msgid "link:https://svnweb.freebsd.org/changeset/base/19358[19358]"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7112
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7135
#, no-wrap
msgid "November 15, 1996"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7114
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7137
#, no-wrap
msgid "2.1.6-RELEASE"
msgstr ""
#. type: Table
-#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7118
+#: documentation/content/en/books/porters-handbook/versions/_index.adoc:7141
#, no-wrap
msgid "2.1.7-RELEASE"
msgstr ""

File Metadata

Mime Type
application/octet-stream
Expires
Sat, May 25, 5:21 AM (1 d, 23 h)
Storage Engine
chunks
Storage Format
Chunks
Storage Handle
wKCwrPVLRDUh
Default Alt Text
(7 MB)

Event Timeline